diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 52bf7e3..bdef820 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["svelte.svelte-vscode"], + "recommendations": ["svelte.svelte-vscode"] } diff --git a/README.md b/README.md index 33d9c66..2f0801d 100644 --- a/README.md +++ b/README.md @@ -20,21 +20,6 @@ npm run dev Make sure you have `node` installed to run this project. -## UMD js files for web embedding - -We will need to build and compile the project first on your local machine: - -``` -npm build:embed -``` - -New files will be created for each configurator, e.g. for empresa, these files will be created: - -``` -/public/empresa - - /bundle.css - - /empresa-configurator.js - - /empresa-configurator.js.map ``` As a simple solution for js and css delivery we are using [jsDelivery](https://www.jsdelivr.com/), for that reason the build code **must be included in the git**. You will need to make a new release version of the repository to promote new changes. @@ -43,16 +28,6 @@ As a simple solution for js and css delivery we are using [jsDelivery](https://w Include styles in `
` globally -```html - - - - ``` -### Initiate each configurator separately - -Include only configurator you want to appear on specific page. - -#### Empresa - -```html - - - - -``` - -#### Floorbed1 - -```html - - - - -``` - -#### Configura Advance - -```html - - - - -``` - -## Empresa Configurator only - -Include styles in `` - -```html - -``` - -To include empresa configurator on the website, create a div element with `id` in the desired location of the html. - -```html - -``` - -At the end of ``, include this script, make sure to edit the config: - -```html - - -``` - ---- - -## Floorbed 1 Configurator only - -Include styles in `` - -```html - -``` - -To include empresa configurator on the website, create a div element with `id` in the desired location of the html. - -```html - -``` - -At the end of ``, include this script, make sure to edit the config: - -```html - - -``` - ---- - -## Configura Advance Configurator onlyDEFAULT_HUBSPOT_CONFIG - -Include styles in `` - -```html - -``` - -To include empresa configurator on the website, create a div element with `id` in the desired location of the html. - -```html - -``` - -At the end of ``, include this script, make sure to edit the config: - -```html - - -``` - ---- - # svelte app This is a project template for [Svelte](https://svelte.dev) apps. It lives at https://github.com/sveltejs/template. @@ -273,35 +106,3 @@ rm scripts/setupTypeScript.js ``` If you want to use `baseUrl` or `path` aliases within your `tsconfig`, you need to set up `@rollup/plugin-alias` to tell Rollup to resolve the aliases. For more info, see [this StackOverflow question](https://stackoverflow.com/questions/63427935/setup-tsconfig-path-in-svelte). - -## Deploying to the web - -### With [Vercel](https://vercel.com) - -Install `vercel` if you haven't already: - -```bash -npm install -g vercel -``` - -Then, from within your project folder: - -```bash -cd public -vercel deploy --name my-project -``` - -### With [surge](https://surge.sh/) - -Install `surge` if you haven't already: - -```bash -npm install -g surge -``` - -Then, from within your project folder: - -```bash -npm run build -surge public my-project.surge.sh -``` diff --git a/package-lock.json b/package-lock.json index 5e891fc..0b35ce6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,6 @@ "version": "1.0.0", "dependencies": { "@types/google.maps": "^3.54.10", - "rollup-plugin-svelte-svg": "^1.0.0-beta.6", - "sass": "^1.69.0", "sirv-cli": "^2.0.0" }, "devDependencies": { @@ -26,8 +24,9 @@ "rollup": "^2.3.4", "rollup-plugin-css-only": "^3.1.0", "rollup-plugin-livereload": "^2.0.0", - "rollup-plugin-scss": "^3.0.0", + "rollup-plugin-scss": "^4.0.0", "rollup-plugin-svelte": "^7.0.0", + "rollup-plugin-svelte-svg": "^1.0.0-beta.6", "rollup-plugin-terser": "^7.0.0", "svelte": "^3.0.0", "svelte-check": "^2.8.0", @@ -574,9 +573,11 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", @@ -613,11 +614,13 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "android" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -633,11 +636,13 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -653,11 +658,13 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -673,11 +680,13 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -693,11 +702,13 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -713,11 +724,13 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -733,11 +746,13 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -753,11 +768,13 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -773,11 +790,13 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -793,11 +812,13 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -813,11 +834,13 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -833,11 +856,13 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -853,11 +878,13 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1159,15 +1186,6 @@ "node": ">=10" } }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "license": "ISC", - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/@tsconfig/svelte": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-4.0.1.tgz", @@ -1369,12 +1387,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1390,7 +1402,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -1560,15 +1572,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -1603,59 +1606,6 @@ "node": ">= 0.6" } }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "license": "MIT", - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", @@ -1737,8 +1687,10 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "bin": { "detect-libc": "bin/detect-libc.js" }, @@ -1754,61 +1706,6 @@ "license": "MIT", "peer": true }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, "node_modules/electron-to-chromium": { "version": "1.5.138", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.138.tgz", @@ -1826,15 +1723,6 @@ "once": "^1.4.0" } }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/es6-promise": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", @@ -1968,7 +1856,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -2188,7 +2076,10 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", - "license": "MIT" + "dev": true, + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/import-fresh": { "version": "3.3.0", @@ -2259,7 +2150,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -2269,7 +2160,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -2289,7 +2180,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -2415,12 +2306,6 @@ "sourcemap-codec": "^1.4.8" } }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "license": "CC0-1.0" - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -2442,7 +2327,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -2590,8 +2475,10 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/node-releases": { "version": "2.0.19", @@ -2633,18 +2520,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2713,13 +2588,14 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -2978,9 +2854,9 @@ } }, "node_modules/rollup-plugin-scss": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-scss/-/rollup-plugin-scss-3.0.0.tgz", - "integrity": "sha512-UldNaNHEon2a5IusHvj/Nnwc7q13YDvbFxz5pfNbHBNStxGoUNyM+0XwAA/UafJ1u8XRPGdBMrhWFthrrGZdWQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-scss/-/rollup-plugin-scss-4.0.1.tgz", + "integrity": "sha512-3W3+3OzR+shkDl3hJ1XTAuGkP4AfiLgIjie2GtcoZ9pHfRiNqeDbtCu1EUnkjZ98EPIM6nnMIXkKlc7Sx5bRvA==", "dev": true, "license": "MIT", "dependencies": { @@ -3006,16 +2882,17 @@ } }, "node_modules/rollup-plugin-svelte-svg": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/rollup-plugin-svelte-svg/-/rollup-plugin-svelte-svg-1.0.0-beta.6.tgz", - "integrity": "sha512-6uJb9kuaqK6p+DvkgphhGN18wvUzdT6h7MQC2B8P1omi9omC9lQC54pwaot21h6z9ibhGPLG9a1XFLeDQth/kg==", + "version": "1.0.0-beta1.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-svelte-svg/-/rollup-plugin-svelte-svg-1.0.0-beta1.0.1.tgz", + "integrity": "sha512-ewV6BQKohI/ZIC+efCsPFOvzu/0+5DQW4cm3J/DMDpXqOEFhEmsm/vAHFL/nM+ZYuChSFeH47DTZCkx5uPunXA==", + "deprecated": "Svelte supports this usecase natively now. This package is redundant. See: https://svelte.dev/playground/86553af5c35449ab88e34f1e50eb298f?version=5.30.1", + "dev": true, "license": "MIT", "dependencies": { - "rollup-pluginutils": "^2.8.2", - "svgo": "^2.3.1" + "rollup-pluginutils": "^2.8.2" }, "peerDependencies": { - "svelte": "*" + "svelte": "3.x" } }, "node_modules/rollup-plugin-svelte/node_modules/@rollup/pluginutils": { @@ -3053,6 +2930,7 @@ "version": "2.8.2", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, "license": "MIT", "dependencies": { "estree-walker": "^0.6.1" @@ -3062,6 +2940,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true, "license": "MIT" }, "node_modules/run-parallel": { @@ -3138,7 +3017,10 @@ "version": "1.83.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.1.tgz", "integrity": "sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA==", + "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -3158,7 +3040,10 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "readdirp": "^4.0.1" }, @@ -3173,7 +3058,10 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, "license": "MIT", + "optional": true, + "peer": true, "engines": { "node": ">= 14.16.0" }, @@ -3274,6 +3162,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -3283,6 +3172,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -3307,13 +3197,6 @@ "dev": true, "license": "MIT" }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "license": "MIT" - }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -3357,6 +3240,7 @@ "version": "3.59.2", "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.2.tgz", "integrity": "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -3579,27 +3463,6 @@ "sorcery": "bin/sorcery" } }, - "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "license": "MIT", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/terser": { "version": "5.37.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", @@ -3651,7 +3514,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -3753,9 +3616,9 @@ } }, "node_modules/vite": { - "version": "4.5.13", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.13.tgz", - "integrity": "sha512-Hgp8IF/yZDzKsN1hQWOuQZbrKiaFsbQud+07jJ8h9m9PaHWkpvZ5u55Xw5yYjWRXwRQ4jwFlJvY7T7FUJG9MCA==", + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.14.tgz", + "integrity": "sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==", "dev": true, "license": "MIT", "peer": true, diff --git a/package.json b/package.json index 93b0ab9..42978cf 100644 --- a/package.json +++ b/package.json @@ -2,10 +2,11 @@ "name": "svelte-app", "version": "1.0.0", "private": true, + "type": "module", "scripts": { "build": "rollup -c rollup.config.all.js", "dev": "rollup -c -w", - "start": "sirv public --no-clear", + "start": "sirv public static --no-clear", "check": "svelte-check --tsconfig ./tsconfig.json" }, "devDependencies": { @@ -15,25 +16,24 @@ "@rollup/plugin-typescript": "^11.1.0", "@sveltejs/adapter-static": "^1.0.0-next.34", "@tsconfig/svelte": "^4.0.1", + "autoprefixer": "^10.4.0", + "ngrok": "^4.3.1", "postcss": "^8.4.14", "rollup": "^2.3.4", "rollup-plugin-css-only": "^3.1.0", "rollup-plugin-livereload": "^2.0.0", - "rollup-plugin-scss": "^3.0.0", + "rollup-plugin-scss": "^4.0.0", "rollup-plugin-svelte": "^7.0.0", + "rollup-plugin-svelte-svg": "^1.0.0-beta.6", "rollup-plugin-terser": "^7.0.0", "svelte": "^3.0.0", "svelte-check": "^2.8.0", "svelte-preprocess": "^5.0.0", "tslib": "^2.5.0", - "typescript": "^5.0.0", - "autoprefixer": "^10.4.0", - "ngrok": "^4.3.1" + "typescript": "^5.0.0" }, "dependencies": { "@types/google.maps": "^3.54.10", - "rollup-plugin-svelte-svg": "^1.0.0-beta.6", - "sass": "^1.69.0", "sirv-cli": "^2.0.0" } } diff --git a/public/.vercel/README.txt b/public/.vercel/README.txt deleted file mode 100644 index 525d8ce..0000000 --- a/public/.vercel/README.txt +++ /dev/null @@ -1,11 +0,0 @@ -> Why do I have a folder named ".vercel" in my project? -The ".vercel" folder is created when you link a directory to a Vercel project. - -> What does the "project.json" file contain? -The "project.json" file contains: -- The ID of the Vercel project that you linked ("projectId") -- The ID of the user or team your Vercel project is owned by ("orgId") - -> Should I commit the ".vercel" folder? -No, you should not share the ".vercel" folder with anyone. -Upon creation, it will be automatically added to your ".gitignore" file. diff --git a/public/.vercel/project.json b/public/.vercel/project.json deleted file mode 100644 index 5c07a1e..0000000 --- a/public/.vercel/project.json +++ /dev/null @@ -1 +0,0 @@ -{"orgId":"team_D8ZChaBAWXfMufAxw9B49La7","projectId":"prj_a3g9ovML2h5W5FTLVzAsmQONBn7k"} \ No newline at end of file diff --git a/public/Base_files/65558bdc3b29eb97b8900a82_Battery.png b/public/Base_files/65558bdc3b29eb97b8900a82_Battery.png deleted file mode 100644 index 9f6ddb1..0000000 Binary files a/public/Base_files/65558bdc3b29eb97b8900a82_Battery.png and /dev/null differ diff --git a/public/Base_files/65558bde9ae805fd3dbc9a5f_Bolt.png b/public/Base_files/65558bde9ae805fd3dbc9a5f_Bolt.png deleted file mode 100644 index 659dbd8..0000000 Binary files a/public/Base_files/65558bde9ae805fd3dbc9a5f_Bolt.png and /dev/null differ diff --git a/public/Base_files/6556b219e8da976dc90504a6_Plus.svg b/public/Base_files/6556b219e8da976dc90504a6_Plus.svg deleted file mode 100644 index 80e7cfb..0000000 --- a/public/Base_files/6556b219e8da976dc90504a6_Plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/public/Base_files/6556b6b4e8da976dc9083b14_Logo White.svg b/public/Base_files/6556b6b4e8da976dc9083b14_Logo White.svg deleted file mode 100644 index df2673e..0000000 --- a/public/Base_files/6556b6b4e8da976dc9083b14_Logo White.svg +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/public/Base_files/6556c2988963f66fd98fae77_Logo Black.svg b/public/Base_files/6556c2988963f66fd98fae77_Logo Black.svg deleted file mode 100644 index 08a7a49..0000000 --- a/public/Base_files/6556c2988963f66fd98fae77_Logo Black.svg +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/public/Base_files/6557a65e6c210f52ad0447df_Checkmark.svg b/public/Base_files/6557a65e6c210f52ad0447df_Checkmark.svg deleted file mode 100644 index 2f5e0a1..0000000 --- a/public/Base_files/6557a65e6c210f52ad0447df_Checkmark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/public/Base_files/655e34a17927698aabab09cc_MenuMobile.svg b/public/Base_files/655e34a17927698aabab09cc_MenuMobile.svg deleted file mode 100644 index 5fc8758..0000000 --- a/public/Base_files/655e34a17927698aabab09cc_MenuMobile.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/public/Base_files/655e9750e5a45c5c02f6198f_Storage Neighbors.jpg b/public/Base_files/655e9750e5a45c5c02f6198f_Storage Neighbors.jpg deleted file mode 100644 index ff7ed96..0000000 Binary files a/public/Base_files/655e9750e5a45c5c02f6198f_Storage Neighbors.jpg and /dev/null differ diff --git a/public/Base_files/65712eb480d3837d19f15b7b_Base Hardware.jpg b/public/Base_files/65712eb480d3837d19f15b7b_Base Hardware.jpg deleted file mode 100644 index bc22806..0000000 Binary files a/public/Base_files/65712eb480d3837d19f15b7b_Base Hardware.jpg and /dev/null differ diff --git a/public/Base_files/basepower.webflow.9bacf19e0.css b/public/Base_files/basepower.webflow.9bacf19e0.css deleted file mode 100644 index d6b3ded..0000000 --- a/public/Base_files/basepower.webflow.9bacf19e0.css +++ /dev/null @@ -1,4919 +0,0 @@ -html { - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; - font-family: sans-serif; -} - -body { - margin: 0; -} - -article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { - display: block; -} - -audio, canvas, progress, video { - vertical-align: baseline; - display: inline-block; -} - -audio:not([controls]) { - height: 0; - display: none; -} - -[hidden], template { - display: none; -} - -a { - background-color: rgba(0, 0, 0, 0); -} - -a:active, a:hover { - outline: 0; -} - -abbr[title] { - border-bottom: 1px dotted; -} - -b, strong { - font-weight: bold; -} - -dfn { - font-style: italic; -} - -h1 { - margin: .67em 0; - font-size: 2em; -} - -mark { - color: #000; - background: #ff0; -} - -small { - font-size: 80%; -} - -sub, sup { - vertical-align: baseline; - font-size: 75%; - line-height: 0; - position: relative; -} - -sup { - top: -.5em; -} - -sub { - bottom: -.25em; -} - -img { - border: 0; -} - -svg:not(:root) { - overflow: hidden; -} - -figure { - margin: 1em 40px; -} - -hr { - box-sizing: content-box; - height: 0; -} - -pre { - overflow: auto; -} - -code, kbd, pre, samp { - font-family: monospace; - font-size: 1em; -} - -button, input, optgroup, select, textarea { - color: inherit; - font: inherit; - margin: 0; -} - -button { - overflow: visible; -} - -button, select { - text-transform: none; -} - -button, html input[type="button"], input[type="reset"] { - -webkit-appearance: button; - cursor: pointer; -} - -button[disabled], html input[disabled] { - cursor: default; -} - -button::-moz-focus-inner, input::-moz-focus-inner { - border: 0; - padding: 0; -} - -input { - line-height: normal; -} - -input[type="checkbox"], input[type="radio"] { - box-sizing: border-box; - padding: 0; -} - -input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -input[type="search"] { - -webkit-appearance: none; -} - -input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -fieldset { - border: 1px solid silver; - margin: 0 2px; - padding: .35em .625em .75em; -} - -legend { - border: 0; - padding: 0; -} - -textarea { - overflow: auto; -} - -optgroup { - font-weight: bold; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, th { - padding: 0; -} - -@font-face { - font-family: webflow-icons; - src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBiUAAAC8AAAAYGNtYXDpP+a4AAABHAAAAFxnYXNwAAAAEAAAAXgAAAAIZ2x5ZmhS2XEAAAGAAAADHGhlYWQTFw3HAAAEnAAAADZoaGVhCXYFgQAABNQAAAAkaG10eCe4A1oAAAT4AAAAMGxvY2EDtALGAAAFKAAAABptYXhwABAAPgAABUQAAAAgbmFtZSoCsMsAAAVkAAABznBvc3QAAwAAAAAHNAAAACAAAwP4AZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpAwPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAQAAAAAwACAACAAQAAQAg5gPpA//9//8AAAAAACDmAOkA//3//wAB/+MaBBcIAAMAAQAAAAAAAAAAAAAAAAABAAH//wAPAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEBIAAAAyADgAAFAAAJAQcJARcDIP5AQAGA/oBAAcABwED+gP6AQAABAOAAAALgA4AABQAAEwEXCQEH4AHAQP6AAYBAAcABwED+gP6AQAAAAwDAAOADQALAAA8AHwAvAAABISIGHQEUFjMhMjY9ATQmByEiBh0BFBYzITI2PQE0JgchIgYdARQWMyEyNj0BNCYDIP3ADRMTDQJADRMTDf3ADRMTDQJADRMTDf3ADRMTDQJADRMTAsATDSANExMNIA0TwBMNIA0TEw0gDRPAEw0gDRMTDSANEwAAAAABAJ0AtAOBApUABQAACQIHCQEDJP7r/upcAXEBcgKU/usBFVz+fAGEAAAAAAL//f+9BAMDwwAEAAkAABcBJwEXAwE3AQdpA5ps/GZsbAOabPxmbEMDmmz8ZmwDmvxmbAOabAAAAgAA/8AEAAPAAB0AOwAABSInLgEnJjU0Nz4BNzYzMTIXHgEXFhUUBw4BBwYjNTI3PgE3NjU0Jy4BJyYjMSIHDgEHBhUUFx4BFxYzAgBqXV6LKCgoKIteXWpqXV6LKCgoKIteXWpVSktvICEhIG9LSlVVSktvICEhIG9LSlVAKCiLXl1qal1eiygoKCiLXl1qal1eiygoZiEgb0tKVVVKS28gISEgb0tKVVVKS28gIQABAAABwAIAA8AAEgAAEzQ3PgE3NjMxFSIHDgEHBhUxIwAoKIteXWpVSktvICFmAcBqXV6LKChmISBvS0pVAAAAAgAA/8AFtgPAADIAOgAAARYXHgEXFhUUBw4BBwYHIxUhIicuAScmNTQ3PgE3NjMxOAExNDc+ATc2MzIXHgEXFhcVATMJATMVMzUEjD83NlAXFxYXTjU1PQL8kz01Nk8XFxcXTzY1PSIjd1BQWlJJSXInJw3+mdv+2/7c25MCUQYcHFg5OUA/ODlXHBwIAhcXTzY1PTw1Nk8XF1tQUHcjIhwcYUNDTgL+3QFt/pOTkwABAAAAAQAAmM7nP18PPPUACwQAAAAAANciZKUAAAAA1yJkpf/9/70FtgPDAAAACAACAAAAAAAAAAEAAAPA/8AAAAW3//3//QW2AAEAAAAAAAAAAAAAAAAAAAAMBAAAAAAAAAAAAAAAAgAAAAQAASAEAADgBAAAwAQAAJ0EAP/9BAAAAAQAAAAFtwAAAAAAAAAKABQAHgAyAEYAjACiAL4BFgE2AY4AAAABAAAADAA8AAMAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADQAAAAEAAAAAAAIABwCWAAEAAAAAAAMADQBIAAEAAAAAAAQADQCrAAEAAAAAAAUACwAnAAEAAAAAAAYADQBvAAEAAAAAAAoAGgDSAAMAAQQJAAEAGgANAAMAAQQJAAIADgCdAAMAAQQJAAMAGgBVAAMAAQQJAAQAGgC4AAMAAQQJAAUAFgAyAAMAAQQJAAYAGgB8AAMAAQQJAAoANADsd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") format("truetype"); - font-weight: normal; - font-style: normal; -} - -[class^="w-icon-"], [class*=" w-icon-"] { - speak: none; - font-variant: normal; - text-transform: none; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-style: normal; - font-weight: normal; - line-height: 1; - font-family: webflow-icons !important; -} - -.w-icon-slider-right:before { - content: ""; -} - -.w-icon-slider-left:before { - content: ""; -} - -.w-icon-nav-menu:before { - content: ""; -} - -.w-icon-arrow-down:before, .w-icon-dropdown-toggle:before { - content: ""; -} - -.w-icon-file-upload-remove:before { - content: ""; -} - -.w-icon-file-upload-icon:before { - content: ""; -} - -* { - box-sizing: border-box; -} - -html { - height: 100%; -} - -body { - min-height: 100%; - color: #333; - background-color: #fff; - margin: 0; - font-family: Arial, sans-serif; - font-size: 14px; - line-height: 20px; -} - -img { - max-width: 100%; - vertical-align: middle; - display: inline-block; -} - -html.w-mod-touch * { - background-attachment: scroll !important; -} - -.w-block { - display: block; -} - -.w-inline-block { - max-width: 100%; - display: inline-block; -} - -.w-clearfix:before, .w-clearfix:after { - content: " "; - grid-area: 1 / 1 / 2 / 2; - display: table; -} - -.w-clearfix:after { - clear: both; -} - -.w-hidden { - display: none; -} - -.w-button { - color: #fff; - line-height: inherit; - cursor: pointer; - background-color: #3898ec; - border: 0; - border-radius: 0; - padding: 9px 15px; - text-decoration: none; - display: inline-block; -} - -input.w-button { - -webkit-appearance: button; -} - -html[data-w-dynpage] [data-w-cloak] { - color: rgba(0, 0, 0, 0) !important; -} - -.w-code-block { - margin: unset; -} - -.w-webflow-badge, .w-webflow-badge * { - z-index: auto; - visibility: visible; - box-sizing: border-box; - width: auto; - height: auto; - max-height: none; - max-width: none; - min-height: 0; - min-width: 0; - float: none; - clear: none; - box-shadow: none; - opacity: 1; - direction: ltr; - font-family: inherit; - font-weight: inherit; - color: inherit; - font-size: inherit; - line-height: inherit; - font-style: inherit; - font-variant: inherit; - text-align: inherit; - letter-spacing: inherit; - -webkit-text-decoration: inherit; - text-decoration: inherit; - text-indent: 0; - text-transform: inherit; - text-shadow: none; - font-smoothing: auto; - vertical-align: baseline; - cursor: inherit; - white-space: inherit; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - background: none; - border: 0 rgba(0, 0, 0, 0); - border-radius: 0; - margin: 0; - padding: 0; - list-style-type: disc; - transition: none; - display: block; - position: static; - top: auto; - bottom: auto; - left: auto; - right: auto; - overflow: visible; - transform: none; -} - -.w-webflow-badge { - white-space: nowrap; - cursor: pointer; - box-shadow: 0 0 0 1px rgba(0, 0, 0, .1), 0 1px 3px rgba(0, 0, 0, .1); - visibility: visible !important; - z-index: 2147483647 !important; - color: #aaadb0 !important; - opacity: 1 !important; - width: auto !important; - height: auto !important; - background-color: #fff !important; - border-radius: 3px !important; - margin: 0 !important; - padding: 6px !important; - font-size: 12px !important; - line-height: 14px !important; - text-decoration: none !important; - display: inline-block !important; - position: fixed !important; - top: auto !important; - bottom: 12px !important; - left: auto !important; - right: 12px !important; - overflow: visible !important; - transform: none !important; -} - -.w-webflow-badge > img { - visibility: visible !important; - opacity: 1 !important; - vertical-align: middle !important; - display: inline-block !important; -} - -h1, h2, h3, h4, h5, h6 { - margin-bottom: 10px; - font-weight: bold; -} - -h1 { - margin-top: 20px; - font-size: 38px; - line-height: 44px; -} - -h2 { - margin-top: 20px; - font-size: 32px; - line-height: 36px; -} - -h3 { - margin-top: 20px; - font-size: 24px; - line-height: 30px; -} - -h4 { - margin-top: 10px; - font-size: 18px; - line-height: 24px; -} - -h5 { - margin-top: 10px; - font-size: 14px; - line-height: 20px; -} - -h6 { - margin-top: 10px; - font-size: 12px; - line-height: 18px; -} - -p { - margin-top: 0; - margin-bottom: 10px; -} - -blockquote { - border-left: 5px solid #e2e2e2; - margin: 0 0 10px; - padding: 10px 20px; - font-size: 18px; - line-height: 22px; -} - -figure { - margin: 0 0 10px; -} - -figcaption { - text-align: center; - margin-top: 5px; -} - -ul, ol { - margin-top: 0; - margin-bottom: 10px; - padding-left: 40px; -} - -.w-list-unstyled { - padding-left: 0; - list-style: none; -} - -.w-embed:before, .w-embed:after { - content: " "; - grid-area: 1 / 1 / 2 / 2; - display: table; -} - -.w-embed:after { - clear: both; -} - -.w-video { - width: 100%; - padding: 0; - position: relative; -} - -.w-video iframe, .w-video object, .w-video embed { - width: 100%; - height: 100%; - border: none; - position: absolute; - top: 0; - left: 0; -} - -fieldset { - border: 0; - margin: 0; - padding: 0; -} - -button, [type="button"], [type="reset"] { - cursor: pointer; - -webkit-appearance: button; - border: 0; -} - -.w-form { - margin: 0 0 15px; -} - -.w-form-done { - text-align: center; - background-color: #ddd; - padding: 20px; - display: none; -} - -.w-form-fail { - background-color: #ffdede; - margin-top: 10px; - padding: 10px; - display: none; -} - -label { - margin-bottom: 5px; - font-weight: bold; - display: block; -} - -.w-input, .w-select { - width: 100%; - height: 38px; - color: #333; - vertical-align: middle; - background-color: #fff; - border: 1px solid #ccc; - margin-bottom: 10px; - padding: 8px 12px; - font-size: 14px; - line-height: 1.42857; - display: block; -} - -.w-input:-moz-placeholder, .w-select:-moz-placeholder { - color: #999; -} - -.w-input::-moz-placeholder, .w-select::-moz-placeholder { - color: #999; - opacity: 1; -} - -.w-input::-webkit-input-placeholder, .w-select::-webkit-input-placeholder { - color: #999; -} - -.w-input:focus, .w-select:focus { - border-color: #3898ec; - outline: 0; -} - -.w-input[disabled], .w-select[disabled], .w-input[readonly], .w-select[readonly], fieldset[disabled] .w-input, fieldset[disabled] .w-select { - cursor: not-allowed; -} - -.w-input[disabled]:not(.w-input-disabled), .w-select[disabled]:not(.w-input-disabled), .w-input[readonly], .w-select[readonly], fieldset[disabled]:not(.w-input-disabled) .w-input, fieldset[disabled]:not(.w-input-disabled) .w-select { - background-color: #eee; -} - -textarea.w-input, textarea.w-select { - height: auto; -} - -.w-select { - background-color: #f3f3f3; -} - -.w-select[multiple] { - height: auto; -} - -.w-form-label { - cursor: pointer; - margin-bottom: 0; - font-weight: normal; - display: inline-block; -} - -.w-radio { - margin-bottom: 5px; - padding-left: 20px; - display: block; -} - -.w-radio:before, .w-radio:after { - content: " "; - grid-area: 1 / 1 / 2 / 2; - display: table; -} - -.w-radio:after { - clear: both; -} - -.w-radio-input { - float: left; - margin: 3px 0 0 -20px; - line-height: normal; -} - -.w-file-upload { - margin-bottom: 10px; - display: block; -} - -.w-file-upload-input { - width: .1px; - height: .1px; - opacity: 0; - z-index: -100; - position: absolute; - overflow: hidden; -} - -.w-file-upload-default, .w-file-upload-uploading, .w-file-upload-success { - color: #333; - display: inline-block; -} - -.w-file-upload-error { - margin-top: 10px; - display: block; -} - -.w-file-upload-default.w-hidden, .w-file-upload-uploading.w-hidden, .w-file-upload-error.w-hidden, .w-file-upload-success.w-hidden { - display: none; -} - -.w-file-upload-uploading-btn { - cursor: pointer; - background-color: #fafafa; - border: 1px solid #ccc; - margin: 0; - padding: 8px 12px; - font-size: 14px; - font-weight: normal; - display: flex; -} - -.w-file-upload-file { - background-color: #fafafa; - border: 1px solid #ccc; - flex-grow: 1; - justify-content: space-between; - margin: 0; - padding: 8px 9px 8px 11px; - display: flex; -} - -.w-file-upload-file-name { - font-size: 14px; - font-weight: normal; - display: block; -} - -.w-file-remove-link { - width: auto; - height: auto; - cursor: pointer; - margin-top: 3px; - margin-left: 10px; - padding: 3px; - display: block; -} - -.w-icon-file-upload-remove { - margin: auto; - font-size: 10px; -} - -.w-file-upload-error-msg { - color: #ea384c; - padding: 2px 0; - display: inline-block; -} - -.w-file-upload-info { - padding: 0 12px; - line-height: 38px; - display: inline-block; -} - -.w-file-upload-label { - cursor: pointer; - background-color: #fafafa; - border: 1px solid #ccc; - margin: 0; - padding: 8px 12px; - font-size: 14px; - font-weight: normal; - display: inline-block; -} - -.w-icon-file-upload-icon, .w-icon-file-upload-uploading { - width: 20px; - margin-right: 8px; - display: inline-block; -} - -.w-icon-file-upload-uploading { - height: 20px; -} - -.w-container { - max-width: 940px; - margin-left: auto; - margin-right: auto; -} - -.w-container:before, .w-container:after { - content: " "; - grid-area: 1 / 1 / 2 / 2; - display: table; -} - -.w-container:after { - clear: both; -} - -.w-container .w-row { - margin-left: -10px; - margin-right: -10px; -} - -.w-row:before, .w-row:after { - content: " "; - grid-area: 1 / 1 / 2 / 2; - display: table; -} - -.w-row:after { - clear: both; -} - -.w-row .w-row { - margin-left: 0; - margin-right: 0; -} - -.w-col { - float: left; - width: 100%; - min-height: 1px; - padding-left: 10px; - padding-right: 10px; - position: relative; -} - -.w-col .w-col { - padding-left: 0; - padding-right: 0; -} - -.w-col-1 { - width: 8.33333%; -} - -.w-col-2 { - width: 16.6667%; -} - -.w-col-3 { - width: 25%; -} - -.w-col-4 { - width: 33.3333%; -} - -.w-col-5 { - width: 41.6667%; -} - -.w-col-6 { - width: 50%; -} - -.w-col-7 { - width: 58.3333%; -} - -.w-col-8 { - width: 66.6667%; -} - -.w-col-9 { - width: 75%; -} - -.w-col-10 { - width: 83.3333%; -} - -.w-col-11 { - width: 91.6667%; -} - -.w-col-12 { - width: 100%; -} - -.w-hidden-main { - display: none !important; -} - -@media screen and (max-width: 991px) { - .w-container { - max-width: 728px; - } - - .w-hidden-main { - display: inherit !important; - } - - .w-hidden-medium { - display: none !important; - } - - .w-col-medium-1 { - width: 8.33333%; - } - - .w-col-medium-2 { - width: 16.6667%; - } - - .w-col-medium-3 { - width: 25%; - } - - .w-col-medium-4 { - width: 33.3333%; - } - - .w-col-medium-5 { - width: 41.6667%; - } - - .w-col-medium-6 { - width: 50%; - } - - .w-col-medium-7 { - width: 58.3333%; - } - - .w-col-medium-8 { - width: 66.6667%; - } - - .w-col-medium-9 { - width: 75%; - } - - .w-col-medium-10 { - width: 83.3333%; - } - - .w-col-medium-11 { - width: 91.6667%; - } - - .w-col-medium-12 { - width: 100%; - } - - .w-col-stack { - width: 100%; - left: auto; - right: auto; - } -} - -@media screen and (max-width: 767px) { - .w-hidden-main, .w-hidden-medium { - display: inherit !important; - } - - .w-hidden-small { - display: none !important; - } - - .w-row, .w-container .w-row { - margin-left: 0; - margin-right: 0; - } - - .w-col { - width: 100%; - left: auto; - right: auto; - } - - .w-col-small-1 { - width: 8.33333%; - } - - .w-col-small-2 { - width: 16.6667%; - } - - .w-col-small-3 { - width: 25%; - } - - .w-col-small-4 { - width: 33.3333%; - } - - .w-col-small-5 { - width: 41.6667%; - } - - .w-col-small-6 { - width: 50%; - } - - .w-col-small-7 { - width: 58.3333%; - } - - .w-col-small-8 { - width: 66.6667%; - } - - .w-col-small-9 { - width: 75%; - } - - .w-col-small-10 { - width: 83.3333%; - } - - .w-col-small-11 { - width: 91.6667%; - } - - .w-col-small-12 { - width: 100%; - } -} - -@media screen and (max-width: 479px) { - .w-container { - max-width: none; - } - - .w-hidden-main, .w-hidden-medium, .w-hidden-small { - display: inherit !important; - } - - .w-hidden-tiny { - display: none !important; - } - - .w-col { - width: 100%; - } - - .w-col-tiny-1 { - width: 8.33333%; - } - - .w-col-tiny-2 { - width: 16.6667%; - } - - .w-col-tiny-3 { - width: 25%; - } - - .w-col-tiny-4 { - width: 33.3333%; - } - - .w-col-tiny-5 { - width: 41.6667%; - } - - .w-col-tiny-6 { - width: 50%; - } - - .w-col-tiny-7 { - width: 58.3333%; - } - - .w-col-tiny-8 { - width: 66.6667%; - } - - .w-col-tiny-9 { - width: 75%; - } - - .w-col-tiny-10 { - width: 83.3333%; - } - - .w-col-tiny-11 { - width: 91.6667%; - } - - .w-col-tiny-12 { - width: 100%; - } -} - -.w-widget { - position: relative; -} - -.w-widget-map { - width: 100%; - height: 400px; -} - -.w-widget-map label { - width: auto; - display: inline; -} - -.w-widget-map img { - max-width: inherit; -} - -.w-widget-map .gm-style-iw { - text-align: center; -} - -.w-widget-map .gm-style-iw > button { - display: none !important; -} - -.w-widget-twitter { - overflow: hidden; -} - -.w-widget-twitter-count-shim { - vertical-align: top; - width: 28px; - height: 20px; - text-align: center; - background: #fff; - border: 1px solid #758696; - border-radius: 3px; - display: inline-block; - position: relative; -} - -.w-widget-twitter-count-shim * { - pointer-events: none; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.w-widget-twitter-count-shim .w-widget-twitter-count-inner { - text-align: center; - color: #999; - font-family: serif; - font-size: 15px; - line-height: 12px; - position: relative; -} - -.w-widget-twitter-count-shim .w-widget-twitter-count-clear { - display: block; - position: relative; -} - -.w-widget-twitter-count-shim.w--large { - width: 36px; - height: 28px; -} - -.w-widget-twitter-count-shim.w--large .w-widget-twitter-count-inner { - font-size: 18px; - line-height: 18px; -} - -.w-widget-twitter-count-shim:not(.w--vertical) { - margin-left: 5px; - margin-right: 8px; -} - -.w-widget-twitter-count-shim:not(.w--vertical).w--large { - margin-left: 6px; -} - -.w-widget-twitter-count-shim:not(.w--vertical):before, .w-widget-twitter-count-shim:not(.w--vertical):after { - content: " "; - height: 0; - width: 0; - pointer-events: none; - border: solid rgba(0, 0, 0, 0); - position: absolute; - top: 50%; - left: 0; -} - -.w-widget-twitter-count-shim:not(.w--vertical):before { - border-width: 4px; - border-color: rgba(117, 134, 150, 0) #5d6c7b rgba(117, 134, 150, 0) rgba(117, 134, 150, 0); - margin-top: -4px; - margin-left: -9px; -} - -.w-widget-twitter-count-shim:not(.w--vertical).w--large:before { - border-width: 5px; - margin-top: -5px; - margin-left: -10px; -} - -.w-widget-twitter-count-shim:not(.w--vertical):after { - border-width: 4px; - border-color: rgba(255, 255, 255, 0) #fff rgba(255, 255, 255, 0) rgba(255, 255, 255, 0); - margin-top: -4px; - margin-left: -8px; -} - -.w-widget-twitter-count-shim:not(.w--vertical).w--large:after { - border-width: 5px; - margin-top: -5px; - margin-left: -9px; -} - -.w-widget-twitter-count-shim.w--vertical { - width: 61px; - height: 33px; - margin-bottom: 8px; -} - -.w-widget-twitter-count-shim.w--vertical:before, .w-widget-twitter-count-shim.w--vertical:after { - content: " "; - height: 0; - width: 0; - pointer-events: none; - border: solid rgba(0, 0, 0, 0); - position: absolute; - top: 100%; - left: 50%; -} - -.w-widget-twitter-count-shim.w--vertical:before { - border-width: 5px; - border-color: #5d6c7b rgba(117, 134, 150, 0) rgba(117, 134, 150, 0); - margin-left: -5px; -} - -.w-widget-twitter-count-shim.w--vertical:after { - border-width: 4px; - border-color: #fff rgba(255, 255, 255, 0) rgba(255, 255, 255, 0); - margin-left: -4px; -} - -.w-widget-twitter-count-shim.w--vertical .w-widget-twitter-count-inner { - font-size: 18px; - line-height: 22px; -} - -.w-widget-twitter-count-shim.w--vertical.w--large { - width: 76px; -} - -.w-background-video { - height: 500px; - color: #fff; - position: relative; - overflow: hidden; -} - -.w-background-video > video { - width: 100%; - height: 100%; - object-fit: cover; - z-index: -100; - background-position: 50%; - background-size: cover; - margin: auto; - position: absolute; - top: -100%; - bottom: -100%; - left: -100%; - right: -100%; -} - -.w-background-video > video::-webkit-media-controls-start-playback-button { - -webkit-appearance: none; - display: none !important; -} - -.w-background-video--control { - background-color: rgba(0, 0, 0, 0); - padding: 0; - position: absolute; - bottom: 1em; - right: 1em; -} - -.w-background-video--control > [hidden] { - display: none !important; -} - -.w-slider { - height: 300px; - text-align: center; - clear: both; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - tap-highlight-color: rgba(0, 0, 0, 0); - background: #ddd; - position: relative; -} - -.w-slider-mask { - z-index: 1; - height: 100%; - white-space: nowrap; - display: block; - position: relative; - left: 0; - right: 0; - overflow: hidden; -} - -.w-slide { - vertical-align: top; - width: 100%; - height: 100%; - white-space: normal; - text-align: left; - display: inline-block; - position: relative; -} - -.w-slider-nav { - z-index: 2; - height: 40px; - text-align: center; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - tap-highlight-color: rgba(0, 0, 0, 0); - margin: auto; - padding-top: 10px; - position: absolute; - top: auto; - bottom: 0; - left: 0; - right: 0; -} - -.w-slider-nav.w-round > div { - border-radius: 100%; -} - -.w-slider-nav.w-num > div { - width: auto; - height: auto; - font-size: inherit; - line-height: inherit; - padding: .2em .5em; -} - -.w-slider-nav.w-shadow > div { - box-shadow: 0 0 3px rgba(51, 51, 51, .4); -} - -.w-slider-nav-invert { - color: #fff; -} - -.w-slider-nav-invert > div { - background-color: rgba(34, 34, 34, .4); -} - -.w-slider-nav-invert > div.w-active { - background-color: #222; -} - -.w-slider-dot { - width: 1em; - height: 1em; - cursor: pointer; - background-color: rgba(255, 255, 255, .4); - margin: 0 3px .5em; - transition: background-color .1s, color .1s; - display: inline-block; - position: relative; -} - -.w-slider-dot.w-active { - background-color: #fff; -} - -.w-slider-dot:focus { - outline: none; - box-shadow: 0 0 0 2px #fff; -} - -.w-slider-dot:focus.w-active { - box-shadow: none; -} - -.w-slider-arrow-left, .w-slider-arrow-right { - width: 80px; - cursor: pointer; - color: #fff; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; - margin: auto; - font-size: 40px; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - overflow: hidden; -} - -.w-slider-arrow-left [class^="w-icon-"], .w-slider-arrow-right [class^="w-icon-"], .w-slider-arrow-left [class*=" w-icon-"], .w-slider-arrow-right [class*=" w-icon-"] { - position: absolute; -} - -.w-slider-arrow-left:focus, .w-slider-arrow-right:focus { - outline: 0; -} - -.w-slider-arrow-left { - z-index: 3; - right: auto; -} - -.w-slider-arrow-right { - z-index: 4; - left: auto; -} - -.w-icon-slider-left, .w-icon-slider-right { - width: 1em; - height: 1em; - margin: auto; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -.w-slider-aria-label { - clip: rect(0 0 0 0); - height: 1px; - width: 1px; - border: 0; - margin: -1px; - padding: 0; - position: absolute; - overflow: hidden; -} - -.w-slider-force-show { - display: block !important; -} - -.w-dropdown { - text-align: left; - z-index: 900; - margin-left: auto; - margin-right: auto; - display: inline-block; - position: relative; -} - -.w-dropdown-btn, .w-dropdown-toggle, .w-dropdown-link { - vertical-align: top; - color: #222; - text-align: left; - white-space: nowrap; - margin-left: auto; - margin-right: auto; - padding: 20px; - text-decoration: none; - position: relative; -} - -.w-dropdown-toggle { - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - padding-right: 40px; - display: inline-block; -} - -.w-dropdown-toggle:focus { - outline: 0; -} - -.w-icon-dropdown-toggle { - width: 1em; - height: 1em; - margin: auto 20px auto auto; - position: absolute; - top: 0; - bottom: 0; - right: 0; -} - -.w-dropdown-list { - min-width: 100%; - background: #ddd; - display: none; - position: absolute; -} - -.w-dropdown-list.w--open { - display: block; -} - -.w-dropdown-link { - color: #222; - padding: 10px 20px; - display: block; -} - -.w-dropdown-link.w--current { - color: #0082f3; -} - -.w-dropdown-link:focus { - outline: 0; -} - -@media screen and (max-width: 767px) { - .w-nav-brand { - padding-left: 10px; - } -} - -.w-lightbox-backdrop { - cursor: auto; - letter-spacing: normal; - text-indent: 0; - text-shadow: none; - text-transform: none; - visibility: visible; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - color: #fff; - text-align: center; - z-index: 2000; - opacity: 0; - -webkit-user-select: none; - -moz-user-select: none; - -webkit-tap-highlight-color: transparent; - background: rgba(0, 0, 0, .9); - outline: 0; - font-family: Helvetica Neue, Helvetica, Ubuntu, Segoe UI, Verdana, sans-serif; - font-size: 17px; - font-style: normal; - font-weight: 300; - line-height: 1.2; - list-style: disc; - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - -webkit-transform: translate(0); -} - -.w-lightbox-backdrop, .w-lightbox-container { - height: 100%; - -webkit-overflow-scrolling: touch; - overflow: auto; -} - -.w-lightbox-content { - height: 100vh; - position: relative; - overflow: hidden; -} - -.w-lightbox-view { - width: 100vw; - height: 100vh; - opacity: 0; - position: absolute; -} - -.w-lightbox-view:before { - content: ""; - height: 100vh; -} - -.w-lightbox-group, .w-lightbox-group .w-lightbox-view, .w-lightbox-group .w-lightbox-view:before { - height: 86vh; -} - -.w-lightbox-frame, .w-lightbox-view:before { - vertical-align: middle; - display: inline-block; -} - -.w-lightbox-figure { - margin: 0; - position: relative; -} - -.w-lightbox-group .w-lightbox-figure { - cursor: pointer; -} - -.w-lightbox-img { - width: auto; - height: auto; - max-width: none; -} - -.w-lightbox-image { - float: none; - max-width: 100vw; - max-height: 100vh; - display: block; -} - -.w-lightbox-group .w-lightbox-image { - max-height: 86vh; -} - -.w-lightbox-caption { - text-align: left; - text-overflow: ellipsis; - white-space: nowrap; - background: rgba(0, 0, 0, .4); - padding: .5em 1em; - position: absolute; - bottom: 0; - left: 0; - right: 0; - overflow: hidden; -} - -.w-lightbox-embed { - width: 100%; - height: 100%; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -.w-lightbox-control { - width: 4em; - cursor: pointer; - background-position: center; - background-repeat: no-repeat; - background-size: 24px; - transition: all .3s; - position: absolute; - top: 0; -} - -.w-lightbox-left { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0yMCAwIDI0IDQwIiB3aWR0aD0iMjQiIGhlaWdodD0iNDAiPjxnIHRyYW5zZm9ybT0icm90YXRlKDQ1KSI+PHBhdGggZD0ibTAgMGg1djIzaDIzdjVoLTI4eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDN2MjNoMjN2M2gtMjZ6IiBmaWxsPSIjZmZmIi8+PC9nPjwvc3ZnPg=="); - display: none; - bottom: 0; - left: 0; -} - -.w-lightbox-right { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMjQgNDAiIHdpZHRoPSIyNCIgaGVpZ2h0PSI0MCI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMC0waDI4djI4aC01di0yM2gtMjN6IiBvcGFjaXR5PSIuNCIvPjxwYXRoIGQ9Im0xIDFoMjZ2MjZoLTN2LTIzaC0yM3oiIGZpbGw9IiNmZmYiLz48L2c+PC9zdmc+"); - display: none; - bottom: 0; - right: 0; -} - -.w-lightbox-close { - height: 2.6em; - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMTggMTciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNyI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMCAwaDd2LTdoNXY3aDd2NWgtN3Y3aC01di03aC03eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDd2LTdoM3Y3aDd2M2gtN3Y3aC0zdi03aC03eiIgZmlsbD0iI2ZmZiIvPjwvZz48L3N2Zz4="); - background-size: 18px; - right: 0; -} - -.w-lightbox-strip { - white-space: nowrap; - padding: 0 1vh; - line-height: 0; - position: absolute; - bottom: 0; - left: 0; - right: 0; - overflow-x: auto; - overflow-y: hidden; -} - -.w-lightbox-item { - width: 10vh; - box-sizing: content-box; - cursor: pointer; - padding: 2vh 1vh; - display: inline-block; - -webkit-transform: translate3d(0, 0, 0); -} - -.w-lightbox-active { - opacity: .3; -} - -.w-lightbox-thumbnail { - height: 10vh; - background: #222; - position: relative; - overflow: hidden; -} - -.w-lightbox-thumbnail-image { - position: absolute; - top: 0; - left: 0; -} - -.w-lightbox-thumbnail .w-lightbox-tall { - width: 100%; - top: 50%; - transform: translate(0, -50%); -} - -.w-lightbox-thumbnail .w-lightbox-wide { - height: 100%; - left: 50%; - transform: translate(-50%); -} - -.w-lightbox-spinner { - box-sizing: border-box; - width: 40px; - height: 40px; - border: 5px solid rgba(0, 0, 0, .4); - border-radius: 50%; - margin-top: -20px; - margin-left: -20px; - animation: .8s linear infinite spin; - position: absolute; - top: 50%; - left: 50%; -} - -.w-lightbox-spinner:after { - content: ""; - border: 3px solid rgba(0, 0, 0, 0); - border-bottom-color: #fff; - border-radius: 50%; - position: absolute; - top: -4px; - bottom: -4px; - left: -4px; - right: -4px; -} - -.w-lightbox-hide { - display: none; -} - -.w-lightbox-noscroll { - overflow: hidden; -} - -@media (min-width: 768px) { - .w-lightbox-content { - height: 96vh; - margin-top: 2vh; - } - - .w-lightbox-view, .w-lightbox-view:before { - height: 96vh; - } - - .w-lightbox-group, .w-lightbox-group .w-lightbox-view, .w-lightbox-group .w-lightbox-view:before { - height: 84vh; - } - - .w-lightbox-image { - max-width: 96vw; - max-height: 96vh; - } - - .w-lightbox-group .w-lightbox-image { - max-width: 82.3vw; - max-height: 84vh; - } - - .w-lightbox-left, .w-lightbox-right { - opacity: .5; - display: block; - } - - .w-lightbox-close { - opacity: .8; - } - - .w-lightbox-control:hover { - opacity: 1; - } -} - -.w-lightbox-inactive, .w-lightbox-inactive:hover { - opacity: 0; -} - -.w-richtext:before, .w-richtext:after { - content: " "; - grid-area: 1 / 1 / 2 / 2; - display: table; -} - -.w-richtext:after { - clear: both; -} - -.w-richtext[contenteditable="true"]:before, .w-richtext[contenteditable="true"]:after { - white-space: initial; -} - -.w-richtext ol, .w-richtext ul { - overflow: hidden; -} - -.w-richtext .w-richtext-figure-selected.w-richtext-figure-type-video div:after, .w-richtext .w-richtext-figure-selected[data-rt-type="video"] div:after, .w-richtext .w-richtext-figure-selected.w-richtext-figure-type-image div, .w-richtext .w-richtext-figure-selected[data-rt-type="image"] div { - outline: 2px solid #2895f7; -} - -.w-richtext figure.w-richtext-figure-type-video > div:after, .w-richtext figure[data-rt-type="video"] > div:after { - content: ""; - display: none; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -.w-richtext figure { - max-width: 60%; - position: relative; -} - -.w-richtext figure > div:before { - cursor: default !important; -} - -.w-richtext figure img { - width: 100%; -} - -.w-richtext figure figcaption.w-richtext-figcaption-placeholder { - opacity: .6; -} - -.w-richtext figure div { - color: rgba(0, 0, 0, 0); - font-size: 0; -} - -.w-richtext figure.w-richtext-figure-type-image, .w-richtext figure[data-rt-type="image"] { - display: table; -} - -.w-richtext figure.w-richtext-figure-type-image > div, .w-richtext figure[data-rt-type="image"] > div { - display: inline-block; -} - -.w-richtext figure.w-richtext-figure-type-image > figcaption, .w-richtext figure[data-rt-type="image"] > figcaption { - caption-side: bottom; - display: table-caption; -} - -.w-richtext figure.w-richtext-figure-type-video, .w-richtext figure[data-rt-type="video"] { - width: 60%; - height: 0; -} - -.w-richtext figure.w-richtext-figure-type-video iframe, .w-richtext figure[data-rt-type="video"] iframe { - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0; -} - -.w-richtext figure.w-richtext-figure-type-video > div, .w-richtext figure[data-rt-type="video"] > div { - width: 100%; -} - -.w-richtext figure.w-richtext-align-center { - clear: both; - margin-left: auto; - margin-right: auto; -} - -.w-richtext figure.w-richtext-align-center.w-richtext-figure-type-image > div, .w-richtext figure.w-richtext-align-center[data-rt-type="image"] > div { - max-width: 100%; -} - -.w-richtext figure.w-richtext-align-normal { - clear: both; -} - -.w-richtext figure.w-richtext-align-fullwidth { - width: 100%; - max-width: 100%; - text-align: center; - clear: both; - margin-left: auto; - margin-right: auto; - display: block; -} - -.w-richtext figure.w-richtext-align-fullwidth > div { - padding-bottom: inherit; - display: inline-block; -} - -.w-richtext figure.w-richtext-align-fullwidth > figcaption { - display: block; -} - -.w-richtext figure.w-richtext-align-floatleft { - float: left; - clear: none; - margin-right: 15px; -} - -.w-richtext figure.w-richtext-align-floatright { - float: right; - clear: none; - margin-left: 15px; -} - -.w-nav { - z-index: 1000; - background: #ddd; - position: relative; -} - -.w-nav:before, .w-nav:after { - content: " "; - grid-area: 1 / 1 / 2 / 2; - display: table; -} - -.w-nav:after { - clear: both; -} - -.w-nav-brand { - float: left; - color: #333; - text-decoration: none; - position: relative; -} - -.w-nav-link { - vertical-align: top; - color: #222; - text-align: left; - margin-left: auto; - margin-right: auto; - padding: 20px; - text-decoration: none; - display: inline-block; - position: relative; -} - -.w-nav-link.w--current { - color: #0082f3; -} - -.w-nav-menu { - float: right; - position: relative; -} - -[data-nav-menu-open] { - text-align: center; - min-width: 200px; - background: #c8c8c8; - position: absolute; - top: 100%; - left: 0; - right: 0; - overflow: visible; - display: block !important; -} - -.w--nav-link-open { - display: block; - position: relative; -} - -.w-nav-overlay { - width: 100%; - display: none; - position: absolute; - top: 100%; - left: 0; - right: 0; - overflow: hidden; -} - -.w-nav-overlay [data-nav-menu-open] { - top: 0; -} - -.w-nav[data-animation="over-left"] .w-nav-overlay { - width: auto; -} - -.w-nav[data-animation="over-left"] .w-nav-overlay, .w-nav[data-animation="over-left"] [data-nav-menu-open] { - z-index: 1; - top: 0; - right: auto; -} - -.w-nav[data-animation="over-right"] .w-nav-overlay { - width: auto; -} - -.w-nav[data-animation="over-right"] .w-nav-overlay, .w-nav[data-animation="over-right"] [data-nav-menu-open] { - z-index: 1; - top: 0; - left: auto; -} - -.w-nav-button { - float: right; - cursor: pointer; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; - padding: 18px; - font-size: 24px; - display: none; - position: relative; -} - -.w-nav-button:focus { - outline: 0; -} - -.w-nav-button.w--open { - color: #fff; - background-color: #c8c8c8; -} - -.w-nav[data-collapse="all"] .w-nav-menu { - display: none; -} - -.w-nav[data-collapse="all"] .w-nav-button, .w--nav-dropdown-open, .w--nav-dropdown-toggle-open { - display: block; -} - -.w--nav-dropdown-list-open { - position: static; -} - -@media screen and (max-width: 991px) { - .w-nav[data-collapse="medium"] .w-nav-menu { - display: none; - } - - .w-nav[data-collapse="medium"] .w-nav-button { - display: block; - } -} - -@media screen and (max-width: 767px) { - .w-nav[data-collapse="small"] .w-nav-menu { - display: none; - } - - .w-nav[data-collapse="small"] .w-nav-button { - display: block; - } - - .w-nav-brand { - padding-left: 10px; - } -} - -@media screen and (max-width: 479px) { - .w-nav[data-collapse="tiny"] .w-nav-menu { - display: none; - } - - .w-nav[data-collapse="tiny"] .w-nav-button { - display: block; - } -} - -.w-tabs { - position: relative; -} - -.w-tabs:before, .w-tabs:after { - content: " "; - grid-area: 1 / 1 / 2 / 2; - display: table; -} - -.w-tabs:after { - clear: both; -} - -.w-tab-menu { - position: relative; -} - -.w-tab-link { - vertical-align: top; - text-align: left; - cursor: pointer; - color: #222; - background-color: #ddd; - padding: 9px 30px; - text-decoration: none; - display: inline-block; - position: relative; -} - -.w-tab-link.w--current { - background-color: #c8c8c8; -} - -.w-tab-link:focus { - outline: 0; -} - -.w-tab-content { - display: block; - position: relative; - overflow: hidden; -} - -.w-tab-pane { - display: none; - position: relative; -} - -.w--tab-active { - display: block; -} - -@media screen and (max-width: 479px) { - .w-tab-link { - display: block; - } -} - -.w-ix-emptyfix:after { - content: ""; -} - -@keyframes spin { - 0% { - transform: rotate(0); - } - - 100% { - transform: rotate(360deg); - } -} - -.w-dyn-empty { - background-color: #ddd; - padding: 10px; -} - -.w-dyn-hide, .w-dyn-bind-empty, .w-condition-invisible { - display: none !important; -} - -.wf-layout-layout { - display: grid; -} - -:root { - --light--surface-primary: white; - --light--label-primary: rgba(9, 13, 15, .92); - --dark--label-primary: var(--light--surface-primary); - --color--green-30: #56d651; - --dark--label-white: rgba(250, 254, 255, .97); - --light--label-quaternary: rgba(2, 11, 15, .36); - --color--green-20: #a1e573; - --color--blue-20: #9ac3db; - --dark--label-secondary: rgba(250, 254, 255, .76); - --light--label-secondary: rgba(4, 11, 15, .68); - --light--label-tertiary: rgba(3, 11, 15, .52); - --light--fill-primary: rgba(11, 14, 15, .05); - --color--red: #e54432; - --color--green-40: #0f9954; - --light--divider-secondary: rgba(11, 14, 15, .05); - --light--label-white: rgba(250, 254, 255, .97); - --dark--divider-primary: rgba(250, 254, 255, .16); - --dark--surface-primary: #000; - --light--surface-secondary: #eff1f2; - --dark--surface-secondary: #191e1f; - --color--blue-30: #3986bf; - --light--surface-secondary-elevated: white; - --color--blue-40: #0d5ba8; - --light--divider-primary: rgba(11, 14, 15, .1); - --light--fill-secondary: rgba(11, 14, 15, .1); - --light--surface-primary-elevated: white; - --color--green-10: #dfe8d3; - --grey: rgba(151, 151, 151, .86); - --color--green-50: #065c3f; - --dark--label-tertiary: rgba(250, 254, 255, .56); - --dark--label-quaternary: rgba(250, 254, 255, .4); - --dark--fill-primary: rgba(250, 254, 255, .1); - --dark--fill-secondary: rgba(250, 254, 255, .16); - --dark--surface-primary-elevated: #191e1f; - --dark--surface-secondary-elevated: rgba(250, 254, 255, .1); - --dark--divider-secondary: rgba(250, 254, 255, .1); - --color--blue-10: #cae0e5; - --color--blue-50: #0c3975; - --color: white; -} - -.w-layout-blockcontainer { - max-width: 940px; - margin-left: auto; - margin-right: auto; - display: block; -} - -@media screen and (max-width: 991px) { - .w-layout-blockcontainer { - max-width: 728px; - } -} - -@media screen and (max-width: 767px) { - .w-layout-blockcontainer { - max-width: none; - } -} - -.body { - background-color: var(--light--surface-primary); -} - -.max-width { - max-width: 1296px; - flex-direction: column; - justify-content: center; - align-items: center; - display: flex; -} - -.defaultwidth { - width: 100%; - max-width: 816px; - flex-direction: column; - justify-content: center; - align-items: flex-start; - display: flex; -} - -.defaultwidth.design-system { - grid-column-gap: 48px; - grid-row-gap: 48px; - flex-direction: column; - grid-template-rows: auto; - grid-template-columns: 1fr 1fr; - grid-auto-columns: 1fr; - justify-items: center; - display: grid; -} - -.defaultwidth.mission { - grid-column-gap: 48px; - grid-row-gap: 48px; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; -} - -.defaultwidth.transparentpricing { - grid-column-gap: 80px; - grid-row-gap: 80px; - align-items: center; - margin-top: -44px; -} - -.defaultwidth.faq { - grid-column-gap: 80px; - grid-row-gap: 80px; -} - -.defaultwidth.faq.form { - height: 100%; - overflow: auto; -} - -.defaultwidth.howitworks { - grid-column-gap: 32px; - grid-row-gap: 32px; -} - -.defaultwidth.faq-form { - grid-column-gap: 40px; - grid-row-gap: 40px; -} - -.defaultwidth.faq-form.form { - height: 100%; - overflow: auto; -} - -.nm-60 { - color: var(--light--label-primary); - font-variation-settings: "wght"375; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 60px; - font-weight: 400; - line-height: 64px; -} - -.nm-60.medium { - font-variation-settings: "wght"530; - font-weight: 500; -} - -.nm-60.white { - margin-top: 0; - margin-bottom: 0; -} - -.nm-60.white.hero { - text-shadow: 0 0 12px rgba(0, 0, 0, .6); -} - -.nm-48 { - color: var(--light--label-primary); - font-variation-settings: "wght"375; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 48px; - font-weight: 400; - line-height: 54px; -} - -.nm-48.medium { - font-variation-settings: "wght"530; - text-align: center; - font-style: italic; - font-weight: 500; -} - -.nm-48.medium.white { - color: var(--dark--label-primary); - margin-top: 0; - margin-bottom: 0; -} - -.nm-48.medium.white.magnify { - width: 480px; - transform-style: preserve-3d; - padding-top: 4px; - padding-left: 40px; - transform: scale3d(1.2, 1.2, 1.2); -} - -.nm-48.medium.green30 { - color: var(--color--green-30); -} - -.nm-48.medium.confirm { - color: var(--dark--label-white); - font-style: normal; -} - -.column { - grid-column-gap: 8px; - grid-row-gap: 8px; - flex-direction: column; - display: flex; -} - -.nm-40 { - color: var(--light--label-primary); - font-variation-settings: "wght"375; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 40px; - font-weight: 400; - line-height: 46px; -} - -.nm-40.medium { - font-variation-settings: "wght"530; - font-weight: 500; -} - -.nm-40.medium.strikethrough { - text-decoration: line-through; -} - -.nm-40.medium.quaternary { - color: var(--light--label-quaternary); -} - -.nm-40.medium.quaternary.strikethrough { - text-decoration: line-through; -} - -.nm-40.medium.green20 { - color: var(--color--green-20); -} - -.nm-40.form { - color: var(--dark--label-white); - font-variation-settings: "wght"530; -} - -.nm-32 { - color: var(--light--label-primary); - font-variation-settings: "wght"450; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 32px; - font-weight: 400; - line-height: 38px; -} - -.nm-32.medium { - font-variation-settings: "wght"560; - font-weight: 500; -} - -.nm-32.medium.center { - text-align: center; -} - -.nm-32.medium.blue20 { - color: var(--color--blue-20); -} - -.nm-26 { - color: var(--light--label-primary); - font-variation-settings: "wght"450; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 26px; - font-weight: 400; - line-height: 32px; -} - -.nm-26.medium { - font-variation-settings: "wght"560; - font-weight: 500; -} - -.nm-26.medium.white { - color: var(--dark--label-primary); -} - -.nm-26.medium.whitesecondary { - color: var(--dark--label-secondary); -} - -.nm-22 { - color: var(--light--label-primary); - font-variation-settings: "wght"450; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 22px; - font-weight: 400; - line-height: 28px; -} - -.nm-22.medium { - font-variation-settings: "wght"560; - font-weight: 500; -} - -.nm-22.medium.whitesecondary { - color: var(--dark--label-secondary); -} - -.nm-22.medium.whitesecondary.hide { - display: none; -} - -.nm-22.white.hero { - text-shadow: 0 0 12px rgba(0, 0, 0, .6); -} - -.nm-20 { - color: var(--light--label-primary); - font-variation-settings: "wght"450; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 20px; - font-weight: 400; - line-height: 26px; -} - -.nm-20.medium { - font-variation-settings: "wght"560; - font-weight: 500; -} - -.nm-20.medium.whitesecondary { - color: var(--dark--label-secondary); -} - -.nm-20.secondary { - color: var(--light--label-secondary); -} - -.nm-20.secondary.center { - text-align: center; -} - -.nm-20.dropdowntitle { - max-width: 80%; - white-space: pre-wrap; -} - -.nm-17 { - color: var(--light--label-primary); - font-variation-settings: "wght"450; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 17px; - font-weight: 400; - line-height: 22px; -} - -.nm-17.medium { - font-variation-settings: "wght"560; - font-weight: 500; -} - -.nm-17.medium.tertiary { - color: var(--light--label-tertiary); -} - -.nm-17.semibold { - font-variation-settings: "wght"700; - font-weight: 600; -} - -.nm-17.whitesecondary { - color: var(--dark--label-secondary); - text-decoration: line-through; -} - -.nm-17.whitesecondary.hero { - text-shadow: 0 0 12px rgba(0, 0, 0, .6); - text-decoration: none; -} - -.nm-17.secondary { - color: var(--light--label-secondary); -} - -.nm-17.secondary.dropdowncontent { - max-width: 80%; - margin-bottom: 0; - margin-left: 0; - margin-right: 0; - padding-bottom: 20px; -} - -.nm-17.tertiary { - color: var(--light--label-tertiary); -} - -.nm-17.tertiary.howitworks { - max-width: 640px; -} - -.nm-15 { - color: var(--light--label-primary); - font-variation-settings: "wght"450; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 15px; - font-weight: 400; - line-height: 20px; - text-decoration: none; -} - -.nm-15.medium { - font-variation-settings: "wght"560; - font-weight: 500; -} - -.nm-15.medium.center { - width: 28px; - text-align: center; -} - -.nm-15.medium.whitesecondary { - color: var(--dark--label-secondary); -} - -.nm-15.semibold { - font-variation-settings: "wght"700; - font-weight: 600; -} - -.nm-15.semibold.green40.allcaps { - text-transform: uppercase; -} - -.nm-15.center { - text-align: center; -} - -.nm-15.center.navigation { - padding-top: 8px; - padding-bottom: 8px; - transition: opacity .25s cubic-bezier(.4, 0, .2, 1); -} - -.nm-15.center.navigation:hover { - color: var(--light--label-secondary); -} - -.nm-15.center.navigation.w--current { - background-color: var(--light--fill-primary); - color: var(--light--label-primary); - border-radius: 18px; - transition: background-color .25s cubic-bezier(.4, 0, .2, 1), opacity .25s cubic-bezier(.4, 0, .2, 1); -} - -.nm-15.white.successmessage { - text-align: left; -} - -.nm-15.red { - color: var(--color--red); -} - -.nm-15.link { - transition: color .25s cubic-bezier(.4, 0, .2, 1); -} - -.nm-15.link:hover { - color: var(--light--label-secondary); -} - -.nm-15.link.white:hover { - color: var(--dark--label-secondary); -} - -.nm-13 { - color: var(--light--label-primary); - font-variation-settings: "wght"450; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 13px; - font-weight: 400; - line-height: 18px; -} - -.nm-13.medium { - font-variation-settings: "wght"560; - font-weight: 500; -} - -.nm-13.semibold { - font-variation-settings: "wght"700; - font-weight: 600; -} - -.nm-12 { - color: var(--light--label-primary); - font-variation-settings: "wght"450; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 12px; - font-weight: 400; - line-height: 16px; -} - -.nm-12.medium { - font-variation-settings: "wght"560; - font-weight: 500; -} - -.nm-12.semibold { - font-variation-settings: "wght"700; - font-weight: 600; -} - -.sectiondesignsystem { - grid-column-gap: 120px; - grid-row-gap: 120px; - flex-direction: column; - display: flex; -} - -.button { - background-color: var(--color--green-40); - box-shadow: inset 0 0 0 1px var(--light--divider-secondary); - color: var(--light--label-white); - text-align: center; - border-radius: 12px; - padding: 12px 16px; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 15px; - transition: background-color .25s; -} - -.button:hover { - box-shadow: none; - background-color: #11a85d; -} - -.button.secondary { - background-color: var(--color--green-30); - box-shadow: inset 0 0 0 1px var(--dark--divider-primary); - color: var(--light--label-primary); -} - -.button.secondary:hover { - background-color: #60e55c; -} - -.button.nav { - border-radius: 18px; - margin-left: 12px; - padding-top: 8px; - padding-bottom: 8px; -} - -.button.nav.mobile { - display: none; -} - -.section { - width: 100%; - background-color: var(--light--surface-primary); - justify-content: center; - align-items: center; - padding-top: 160px; - padding-bottom: 160px; - display: flex; -} - -.section.problemstatement { - padding-top: 100px; - padding-bottom: 100px; - display: block; -} - -.section.features { - grid-column-gap: 120px; - grid-row-gap: 120px; - background-color: var(--dark--surface-primary); - flex-direction: column; - padding-top: 40px; - padding-bottom: 120px; - transition: background-color .25s cubic-bezier(.4, 0, .2, 1); - overflow: hidden; -} - -.section.compare { - grid-column-gap: 100px; - grid-row-gap: 100px; - background-color: var(--light--surface-secondary); - flex-direction: column; - padding-top: 120px; - padding-bottom: 0; -} - -.section.faq { - grid-column-gap: 120px; - grid-row-gap: 120px; - background-color: var(--light--surface-primary); - flex-direction: column; - padding-top: 120px; - padding-bottom: 120px; - display: flex; -} - -.section.hero { - height: 85vh; - background-color: var(--dark--surface-secondary); - background-image: url("https://assets-global.website-files.com/6550dc350fc956749ca012c6/6578e1405957a2f59864a4bd_Website%20Hero.jpg"); - background-position: 50%; - background-repeat: no-repeat; - background-size: cover; - flex-direction: column; - justify-content: center; - align-items: center; - padding-top: 0; - padding-bottom: 0; -} - -.section.business { - grid-column-gap: 100px; - grid-row-gap: 100px; - background-color: var(--light--surface-secondary); - flex-direction: column; - padding-top: 120px; - padding-bottom: 120px; -} - -.section.confirmation { - height: 100svh; - background-color: var(--color--blue-30); -} - -.green-30 { - color: var(--color--green-30); -} - -.headlinedescription { - width: 100%; - max-width: 576px; - grid-column-gap: 20px; - grid-row-gap: 20px; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; - display: flex; -} - -._1296width { - width: 100%; - max-width: 1296px; - flex-direction: column; - align-items: center; - display: flex; -} - -._1296width.technology { - grid-column-gap: 100px; - grid-row-gap: 100px; -} - -._1296width.hero { - align-items: flex-start; - padding-left: 36px; - padding-right: 36px; -} - -._1296width.footer { - flex-direction: row; - justify-content: space-between; - align-items: center; - padding: 0 36px; -} - -._2column { - width: 100%; - grid-column-gap: 96px; - grid-row-gap: 96px; - flex-direction: row; - grid-template-rows: auto; - grid-template-columns: 1fr 1fr; - grid-auto-columns: 1fr; - justify-content: flex-start; - align-items: flex-start; - margin-top: 20px; - display: grid; -} - -.white { - color: var(--dark--label-primary); -} - -.valuepropstack { - grid-column-gap: 36px; - grid-row-gap: 36px; - flex-direction: column; - display: flex; -} - -.valuepropstack.card { - margin-top: 32px; -} - -.imagepricing { - margin-top: 40px; - margin-bottom: 40px; -} - -.headline720 { - width: 100%; - max-width: 720px; - grid-column-gap: 20px; - grid-row-gap: 20px; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; - display: flex; -} - -.green40 { - color: var(--color--green-40); -} - -._888width { - width: 100%; - max-width: 888px; - flex-direction: column; - justify-content: center; - align-items: flex-start; - display: flex; -} - -._888width.quotes { - display: none; -} - -._2cards { - width: 100%; - grid-column-gap: 24px; - grid-row-gap: 24px; - flex-direction: row; - grid-template-rows: auto; - grid-template-columns: 1fr 1fr; - grid-auto-columns: 1fr; - justify-content: flex-start; - align-items: flex-start; - display: grid; -} - -.cardcompare { - background-color: var(--light--surface-secondary-elevated); - border-radius: 24px; - padding: 24px 36px 32px; - box-shadow: 0 24px 72px rgba(0, 0, 0, .04); -} - -.imagecardicon { - margin-bottom: 2px; -} - -.cardprice { - grid-column-gap: 16px; - grid-row-gap: 16px; - display: flex; -} - -.cardheadline { - grid-column-gap: 16px; - grid-row-gap: 16px; - flex-direction: column; - display: flex; -} - -.blue40 { - color: var(--color--blue-40); -} - -.divider { - width: 100%; - height: 1px; - background-color: var(--light--divider-primary); -} - -.quotes { - width: 100%; - grid-column-gap: 24px; - grid-row-gap: 24px; - flex-direction: row; - grid-template-rows: auto auto; - grid-template-columns: 1fr 1fr; - grid-auto-columns: 1fr; - justify-content: flex-start; - align-items: flex-start; -} - -.cardquote { - min-height: 320px; - grid-column-gap: 40px; - grid-row-gap: 40px; - background-color: var(--light--surface-secondary-elevated); - border-radius: 24px; - flex-direction: column; - justify-content: space-between; - padding: 32px 36px; - display: flex; - box-shadow: 0 24px 72px rgba(0, 0, 0, .04); -} - -.titlesubtitlebutton { - grid-column-gap: 24px; - grid-row-gap: 24px; - flex-direction: column; - align-items: center; - display: flex; -} - -.titlesubtitle8px { - grid-column-gap: 8px; - grid-row-gap: 8px; - flex-direction: column; - display: flex; -} - -.imagegridpower { - width: 90%; - overflow: hidden; -} - -.navbar { - width: 100%; - background-color: var(--light--surface-primary); - justify-content: space-around; - align-items: center; - position: fixed; - top: 0; -} - -.container { - max-width: 1296px; - justify-content: space-between; - align-items: center; - margin-left: auto; - margin-right: auto; - padding: 4px 36px; - overflow: hidden; -} - -.logo { - height: 52px; - flex-direction: column; - justify-content: center; - align-items: center; - display: flex; -} - -.herocontent { - max-width: 448px; - grid-column-gap: 40px; - grid-row-gap: 40px; - flex-direction: column; - align-items: flex-start; - display: flex; -} - -.herotitlesubtitle { - grid-column-gap: 8px; - grid-row-gap: 8px; - flex-direction: column; - align-items: flex-start; - display: flex; -} - -.herotitlesubtitle.subheading { - grid-column-gap: 4px; - grid-row-gap: 4px; -} - -.herotitlesubtitle.technology { - max-width: 480px; -} - -.dropdown { - width: 100%; - flex-direction: column; - align-items: stretch; - overflow: hidden; -} - -.dropdowntoggle { - width: 100%; - grid-column-gap: 40px; - grid-row-gap: 40px; - justify-content: space-between; - align-items: center; - padding: 20px 0; - display: flex; -} - -.dropdownicon { - max-width: none; - margin-right: 0; - position: static; - right: 0; -} - -.dropdownlist { - background-color: var(--light--surface-primary); - flex-direction: column; - margin-bottom: 0; - display: block; - position: static; - overflow: hidden; -} - -.dropdownlist.form_list { - background-color: var(--light--surface-secondary); -} - -.dropdowncontent { - padding-left: 0; - padding-right: 0; -} - -.dropdownwithdivider { - width: 100%; - flex-direction: column; - align-items: flex-start; -} - -.numbersvertical { - grid-column-gap: 8px; - grid-row-gap: 8px; - flex-direction: column; - align-items: center; - margin-top: 9px; - display: flex; -} - -.numbercircle { - width: 28px; - height: 28px; - background-color: var(--color--green-30); - border-radius: 14px; - justify-content: center; - align-items: center; - display: flex; -} - -.numbercircle.mobile { - display: none; -} - -.numberdivider { - width: 4px; - height: 94px; - background-color: var(--light--fill-secondary); - border-radius: 2px; -} - -.numberdivider.short { - height: 72px; -} - -.footer { - width: 100%; - grid-column-gap: 120px; - grid-row-gap: 120px; - background-color: var(--dark--surface-secondary); - flex-direction: column; - justify-content: center; - align-items: center; - padding-top: 0; - padding-bottom: 120px; - display: flex; -} - -.footer.pricing { - background-color: var(--dark--surface-primary); -} - -.footer.compare { - grid-column-gap: 120px; - grid-row-gap: 120px; - background-color: var(--light--surface-secondary); - flex-direction: column; -} - -.footer.faq { - grid-column-gap: 120px; - grid-row-gap: 120px; - background-color: var(--light--surface-primary); - flex-direction: column; -} - -.footer.hero { - height: 85vh; - background-color: var(--dark--surface-secondary); - flex-direction: column; - justify-content: center; - align-items: center; - padding-top: 0; - padding-bottom: 0; -} - -.fullwidth { - width: 100%; - flex-direction: column; - justify-content: center; - align-items: flex-start; - display: flex; -} - -.fullwidth.design-system { - grid-column-gap: 48px; - grid-row-gap: 48px; - flex-direction: column; - grid-template-rows: auto; - grid-template-columns: 1fr 1fr; - grid-auto-columns: 1fr; - justify-items: center; - display: grid; -} - -.fullwidth.mission { - grid-column-gap: 48px; - grid-row-gap: 48px; - justify-content: flex-start; -} - -.fullwidth.transparentpricing { - grid-column-gap: 80px; - grid-row-gap: 80px; - align-items: center; - margin-top: 80px; -} - -.fullwidth.faq { - grid-column-gap: 80px; - grid-row-gap: 80px; -} - -.fullwidth.howitworks { - grid-column-gap: 32px; - grid-row-gap: 32px; -} - -.footergrid { - max-width: 640px; - grid-column-gap: 40px; - grid-row-gap: 40px; - grid-template-rows: auto; - grid-template-columns: 1fr; - grid-auto-columns: 1fr; - display: grid; -} - -.footercolumn { - width: 130px; - grid-column-gap: 20px; - grid-row-gap: 20px; - flex-direction: column; - align-items: flex-start; - display: flex; -} - -.footercolumn.links { - grid-column-gap: 12px; - grid-row-gap: 12px; -} - -.footercolumn.links.horizontal { - width: auto; - grid-column-gap: 60px; - grid-row-gap: 60px; - flex-direction: row; - justify-content: flex-end; -} - -.footercolumn.hide { - display: none; -} - -.howitworkscontent { - grid-column-gap: 32px; - grid-row-gap: 32px; - display: flex; -} - -.secondary { - color: var(--light--label-secondary); -} - -.howitworksvertical { - grid-column-gap: 40px; - grid-row-gap: 40px; - flex-direction: column; - align-items: flex-start; - display: flex; -} - -.divtechnology { - width: 100%; - max-width: 1368px; - grid-column-gap: 32px; - grid-row-gap: 32px; - justify-content: center; - align-items: center; - display: flex; -} - -.divtechnology.neighbors { - grid-column-gap: 32px; - grid-row-gap: 32px; - justify-content: flex-start; - padding-left: 0; - padding-right: 72px; -} - -.basepowercontent { - min-width: 320px; - grid-column-gap: 60px; - grid-row-gap: 60px; - flex-direction: column; - margin-left: 72px; - display: flex; -} - -.basepowercontent.neighbors { - margin-left: 0; -} - -.hardwareimage { - width: auto; - max-width: 60%; - position: relative; - left: 44px; - overflow: visible; -} - -.hardwareimage.mobile { - display: none; -} - -.image-2 { - width: auto; - max-width: 60%; - position: relative; - left: -44px; -} - -.magnifyglass { - width: 70px; - height: 70px; - background-color: var(--dark--surface-primary); - box-shadow: 0 6px 18px 0 var(--light--label-secondary), inset 7px 7px 6px 0 rgba(255, 255, 255, .16), inset 0 0 0 2px #2d3233; - border: 0 solid #000; - border-radius: 35px; - position: relative; - top: 144px; - left: -388px; - overflow: hidden; -} - -.nav-menu { - justify-content: flex-end; - padding-top: 8px; - padding-bottom: 8px; - display: flex; -} - -.form.hero { - grid-column-gap: 8px; - grid-row-gap: 8px; - align-items: center; - display: flex; -} - -.input { - width: 100%; - height: 44px; - color: var(--light--label-primary); - -webkit-text-stroke-width: 0px; - -webkit-text-stroke-color: transparent; - border: 0 solid #000; - border-radius: 12px; - margin-bottom: 0; - padding: 12px 16px; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 15px; - display: block; -} - -.input:focus { - box-shadow: 0 0 0 2px var(--color--green-30); -} - -.input::-ms-input-placeholder { - color: var(--light--label-quaternary); -} - -.input::placeholder { - color: var(--light--label-quaternary); -} - -.form-block { - width: 100%; - margin-bottom: 12px; -} - -.success-message { - background-color: rgba(0, 0, 0, 0); - padding-left: 0; -} - -.error-message { - background-color: rgba(0, 0, 0, 0); - margin-top: 0; - padding: 20px 16px; -} - -.bold-text { - color: var(--dark--label-white); -} - -.bold-text-2 { - text-decoration: line-through; -} - -.pricinggraph { - width: 100%; -} - -.lottie { - width: 100%; - height: 200px; - margin-top: 40px; - margin-bottom: 40px; -} - -.hero-heading-center { - background-color: #f5f7fa; - border-bottom: 1px solid #e4ebf3; - padding: 80px 30px; - position: relative; -} - -.container-2 { - width: 100%; - max-width: 940px; - margin-left: auto; - margin-right: auto; -} - -.centered-heading { - text-align: center; - margin-bottom: 16px; -} - -.centered-heading.margin-bottom-32px { - margin-bottom: 32px; - font-family: PP Neue Montreal Variable, sans-serif; -} - -.hero-wrapper { - justify-content: space-between; - align-items: center; - display: flex; -} - -.hero-split { - max-width: 46%; - flex-direction: column; - justify-content: center; - align-items: center; - display: flex; -} - -.margin-bottom-24px { - margin-bottom: 24px; - margin-left: 60px; - margin-right: 60px; - font-family: PP Neue Montreal Variable, sans-serif; - display: block; -} - -.button-primary { - color: #fff; - letter-spacing: 2px; - text-transform: uppercase; - background-color: #1a1b1f; - padding: 12px 25px; - font-size: 12px; - line-height: 20px; - transition: all .2s; -} - -.button-primary:hover { - color: #fff; - background-color: #32343a; -} - -.button-primary:active { - background-color: #43464d; -} - -.shadow-two { - box-shadow: 0 4px 24px rgba(150, 163, 181, .08); -} - -.hero-split-2 { - max-width: 46%; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; - display: flex; -} - -.submit-button { - height: 50px; - min-width: 170px; - color: #000; - background-color: #ffd000; - border-radius: 30px; - margin-top: 20px; - padding-left: 40px; - padding-right: 40px; - transition: filter .2s; -} - -.submit-button:hover { - filter: brightness(96%); -} - -.form-caption { - text-align: center; - font-size: 13px; -} - -.form-2 { - grid-column-gap: 20px; - grid-row-gap: 20px; - flex-direction: column; - display: flex; -} - -.field-wrap { - padding-top: 10px; - padding-bottom: 10px; - position: relative; -} - -.form-field-label { - z-index: 10; - background-color: #fff; - margin-top: -9px; - margin-left: 10px; - padding: 1px 10px; - line-height: 14px; - display: inline-block; - position: absolute; -} - -.form-heading { - margin-top: 0; - margin-bottom: 15px; - font-family: PP Neue Montreal Variable, sans-serif; - font-weight: 500; -} - -.form-heading.deposit_title { - margin-bottom: 0; -} - -.form-heading.price { - font-size: 40px; -} - -.form-wrap { - margin-bottom: 0; -} - -.form-field { - z-index: 1; - height: 50px; - min-height: 50px; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #dcdcdd; - padding-top: 11px; - position: relative; -} - -.form-field:focus { - border-color: #000; -} - -.form-field::-ms-input-placeholder { - color: #a0a0a0; -} - -.form-field::placeholder { - color: #a0a0a0; -} - -.form-field.select-field { - padding-top: 8px; -} - -.form-field.select-field.wide { - cursor: pointer; - border-radius: 0; - line-height: 35px; -} - -.comp-pane { - width: 45%; -} - -.comp-pane.right { - z-index: 50; - width: 100%; - height: auto; - background-color: #fff; - flex-direction: column; - padding: 50px; - display: flex; - position: relative; - overflow: auto; -} - -.comp-pane.right.hide { - display: none; -} - -.form_popup { - z-index: 1000; - width: 100%; - min-height: 100%; - grid-column-gap: 16px; - flex-direction: column; - grid-template-rows: auto auto; - grid-template-columns: 1fr 1fr; - grid-auto-columns: 1fr; - justify-content: flex-start; - align-items: flex-end; - display: flex; - position: fixed; - top: 0%; - bottom: 0%; - left: 0%; - right: 0%; -} - -.form_popup.test-page { - display: flex; -} - -.container-3 { - background-color: #aff0b7; -} - -.list-2 { - outline-offset: 0px; - outline: 3px #333; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; - padding-left: 0; - display: flex; -} - -.quick-stack { - -webkit-text-stroke-color: var(--color--green-10); -} - -.text-block { - font-size: 12px; -} - -.bold-text-3 { - color: var(--grey); - text-decoration: line-through; -} - -.close-button { - width: 30px; - height: 30px; - cursor: pointer; - justify-content: center; - align-items: center; - transition: transform .35s cubic-bezier(.215, .61, .355, 1); - display: flex; - position: absolute; - top: 30px; - bottom: auto; - left: auto; - right: 30px; -} - -.close-button:hover { - transform: scale(1.1); -} - -.close-button_line-1 { - width: 30px; - height: 2px; - background-color: var(--light--label-primary); - transform: rotate(45deg); -} - -.close-button_line-1.white { - background-color: var(--dark--label-white); -} - -.close-button_line-2 { - width: 30px; - height: 2px; - background-color: var(--light--label-primary); - position: absolute; - transform: rotate(-45deg); -} - -.close-button_line-2.white { - background-color: var(--dark--label-white); -} - -.deposit_wrap { - color: var(--color--green-40); -} - -.list-item { - width: 100%; - border-top: 1px solid var(--light--divider-primary); - justify-content: space-between; - align-items: center; - padding-top: 16px; - padding-bottom: 16px; - list-style-type: none; - display: flex; -} - -.list-item.last { - border-bottom: 1px solid var(--dark--divider-primary); - font-family: PP Neue Montreal Variable, sans-serif; - font-weight: 500; -} - -.text-color-gray { - color: var(--light--label-tertiary); -} - -.form-text { - flex-direction: column; - align-items: center; - margin-bottom: 0; - font-family: PP Neue Montreal Variable, sans-serif; - font-size: 17px; - display: flex; -} - -.form-text_wrap { - width: 100%; - max-width: 156px; - text-align: right; -} - -.form-text_small { - margin-bottom: 0; - font-size: 13px; -} - -.form-text_wrap-bottom { - width: 100%; - max-width: 300px; -} - -.form-text_link { - color: var(--light--label-tertiary); -} - -.list-1 { - padding-left: 30px; -} - -.form_step-1 { - width: 100%; - min-height: 100%; - grid-row-gap: 4px; - background-color: var(--dark--surface-primary); - text-align: center; - flex-direction: column; - flex: none; - justify-content: space-between; - align-items: stretch; - padding: 50px; - font-family: PP Neue Montreal Variable, sans-serif; - display: flex; - position: relative; -} - -.form_step-1.hide { - display: none; -} - -.form_step-1-heading { - font-family: PP Neue Montreal Variable, sans-serif; -} - -.form_step-1_top-wrap { - grid-column-gap: 8px; - grid-row-gap: 8px; - color: var(--dark--label-white); - flex-direction: column; - display: flex; -} - -.form_step-1-paragraph-wrap { - color: var(--dark--label-secondary); -} - -.form_step-1_top-wrap-inner { - width: 100%; - max-width: 400px; - grid-column-gap: 10px; - grid-row-gap: 10px; - flex-direction: column; - align-self: center; - display: flex; -} - -.blue_bg { - z-index: 2; - width: 100%; - height: 100%; - background-color: #3986bf; - position: relative; -} - -.div-block { - display: flex; -} - -.form-box_holder { - width: 100%; - height: 100%; -} - -.form_faq { - width: 100%; - min-height: 100%; - background-color: var(--light--surface-secondary); - flex-direction: column; - padding: 50px; - display: flex; -} - -.form_faq.hide { - display: none; -} - -.navbar-logo-left-container { - z-index: 5; - width: 1030px; - max-width: 100%; - background-color: rgba(0, 0, 0, 0); - margin-left: auto; - margin-right: auto; - padding: 15px 20px; -} - -.navbar-logo-left-container.shadow-three { - width: 100%; - max-width: 1140px; - margin-bottom: 0; - padding-top: 20px; - padding-bottom: 20px; -} - -.container-4 { - width: 100%; - max-width: 940px; - margin-left: auto; - margin-right: auto; -} - -.navbar-wrapper { - justify-content: space-between; - align-items: center; - display: flex; -} - -.nav-menu-two { - justify-content: space-between; - align-items: center; - margin-bottom: 0; - display: flex; -} - -.nav-link { - color: #1a1b1f; - letter-spacing: .25px; - margin-left: 5px; - margin-right: 5px; - padding: 5px 10px; - font-size: 14px; - line-height: 20px; - text-decoration: none; -} - -.nav-link:hover { - color: rgba(26, 27, 31, .75); -} - -.nav-link:focus-visible { - outline-offset: 0px; - color: #0050bd; - border-radius: 4px; - outline: 2px solid #0050bd; -} - -.nav-link[data-wf-focus-visible] { - outline-offset: 0px; - color: #0050bd; - border-radius: 4px; - outline: 2px solid #0050bd; -} - -.nav-dropdown { - margin-left: 5px; - margin-right: 5px; -} - -.nav-dropdown-toggle { - letter-spacing: .25px; - padding: 5px 30px 5px 10px; - font-size: 14px; - line-height: 20px; -} - -.nav-dropdown-toggle:hover { - color: rgba(26, 27, 31, .75); -} - -.nav-dropdown-toggle:focus-visible { - outline-offset: 0px; - color: #0050bd; - border-radius: 5px; - outline: 2px solid #0050bd; -} - -.nav-dropdown-toggle[data-wf-focus-visible] { - outline-offset: 0px; - color: #0050bd; - border-radius: 5px; - outline: 2px solid #0050bd; -} - -.nav-dropdown-icon { - margin-right: 10px; -} - -.nav-dropdown-list { - background-color: #fff; - border-radius: 12px; -} - -.nav-dropdown-list.w--open { - padding-top: 10px; - padding-bottom: 10px; -} - -.nav-dropdown-link { - padding-top: 5px; - padding-bottom: 5px; - font-size: 14px; -} - -.nav-dropdown-link:focus-visible { - outline-offset: 0px; - color: #0050bd; - border-radius: 5px; - outline: 2px solid #0050bd; -} - -.nav-dropdown-link[data-wf-focus-visible] { - outline-offset: 0px; - color: #0050bd; - border-radius: 5px; - outline: 2px solid #0050bd; -} - -.nav-divider { - width: 1px; - height: 22px; - background-color: #e4ebf3; - margin-left: 15px; - margin-right: 15px; -} - -.nav-link-accent { - color: #1a1b1f; - letter-spacing: .25px; - margin-left: 5px; - margin-right: 20px; - padding: 5px 10px; - font-size: 14px; - font-weight: 700; - line-height: 20px; - text-decoration: none; -} - -.nav-link-accent:hover { - color: rgba(26, 27, 31, .75); -} - -.button-primary-2 { - color: #fff; - letter-spacing: 2px; - text-transform: uppercase; - background-color: #1a1b1f; - padding: 12px 25px; - font-size: 12px; - line-height: 20px; - transition: all .2s; -} - -.button-primary-2:hover { - color: #fff; - background-color: #32343a; -} - -.button-primary-2:active { - background-color: #43464d; -} - -.text-span { - font-style: normal; - font-weight: 700; - text-decoration: none; -} - -.container-5 { - flex-direction: column; - justify-content: center; - align-items: center; - display: flex; -} - -.form_popup-inner { - z-index: 1000; - width: 540px; - min-height: 100%; - grid-column-gap: 16px; - flex-direction: column; - grid-template-rows: auto auto; - grid-template-columns: 1fr 1fr; - grid-auto-columns: 1fr; - justify-content: flex-start; - align-items: flex-end; - display: flex; - position: absolute; - top: 0%; - bottom: 0%; - left: auto; - right: 0%; - overflow: auto; -} - -.form_popup-inner.test-page { - display: flex; -} - -.popup_bg { - width: 100%; - height: 100%; - background-color: var(--light--label-secondary); - position: absolute; -} - -.confirnation_wrap { - width: 100%; - color: var(--dark--label-white); - text-align: center; - flex-direction: column; - align-items: center; - display: flex; -} - -.confirnation-wrap_inner { - width: 100%; -} - -@media screen and (max-width: 991px) { - .defaultwidth.transparentpricing { - margin-top: -84px; - } - - .defaultwidth.faq, .defaultwidth.faq-form { - grid-column-gap: 60px; - grid-row-gap: 60px; - } - - .nm-60.medium.white.hero { - text-align: center; - text-shadow: 0 0 12px rgba(0, 0, 0, .2); - font-size: 48px; - line-height: 52px; - } - - .nm-22.white.hero, .nm-17.whitesecondary.hero { - text-align: center; - text-shadow: 0 0 12px rgba(0, 0, 0, .4); - } - - .nm-15.center.navigation { - padding-left: 16px; - padding-right: 16px; - } - - .section.problemstatement { - padding: 96px 44px; - } - - .section.features { - grid-column-gap: 100px; - grid-row-gap: 100px; - padding: 80px 44px; - overflow: hidden; - } - - .section.compare { - grid-column-gap: 72px; - grid-row-gap: 72px; - padding: 80px 44px 0; - } - - .section.faq { - grid-column-gap: 72px; - grid-row-gap: 72px; - padding: 96px 44px; - } - - .section.hero { - height: 90vh; - background-image: linear-gradient(rgba(0, 0, 0, .2), rgba(0, 0, 0, 0) 50%), url("https://assets-global.website-files.com/6550dc350fc956749ca012c6/6578e1405957a2f59864a4bd_Website%20Hero.jpg"); - background-position: 0 0, 50%; - background-repeat: repeat, no-repeat; - background-size: auto, cover; - } - - .section.business { - grid-column-gap: 72px; - grid-row-gap: 72px; - padding: 80px 44px; - } - - ._1296width.technology { - grid-column-gap: 72px; - grid-row-gap: 72px; - } - - ._1296width.hero { - height: 100%; - justify-content: flex-start; - align-items: center; - padding-top: 100px; - padding-left: 44px; - padding-right: 44px; - } - - ._1296width.footer { - padding-left: 44px; - padding-right: 44px; - } - - .imagepricing { - margin-top: 20px; - margin-bottom: 20px; - } - - ._2cards { - grid-template-rows: auto auto; - grid-template-columns: 1fr; - } - - .cardquote { - height: 360px; - } - - .imagegridpower { - width: 100%; - justify-content: center; - align-items: center; - } - - .container { - padding-left: 44px; - padding-right: 44px; - } - - .herocontent { - height: auto; - justify-content: flex-start; - align-items: center; - } - - .herotitlesubtitle { - align-items: center; - } - - .herotitlesubtitle.howitworks, .herotitlesubtitle.technology { - align-items: flex-start; - } - - .numberdivider.short { - height: 102px; - } - - .footer { - grid-column-gap: 72px; - grid-row-gap: 72px; - padding-bottom: 72px; - } - - .footercolumn { - width: 200px; - } - - .divtechnology { - grid-column-gap: 32px; - grid-row-gap: 32px; - justify-content: flex-start; - } - - .divtechnology.neighbors { - grid-column-gap: 0px; - grid-row-gap: 0px; - padding-right: 44px; - } - - .basepowercontent { - max-width: 400px; - min-width: 320px; - margin-left: 0; - } - - .basepowercontent.neighbors { - min-width: 288px; - } - - .hardwareimage { - max-height: none; - max-width: 70%; - position: relative; - left: 5%; - overflow: visible; - } - - .image-2 { - max-width: 60%; - position: relative; - left: -5%; - } - - .magnifyglass { - left: -47%; - } - - .form-block { - justify-content: center; - display: flex; - } - - .lottie { - margin-top: 20px; - } - - .container-2 { - max-width: 728px; - } - - .hero-wrapper { - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; - margin-bottom: -40px; - } - - .hero-split, .hero-split-2 { - max-width: 100%; - margin-bottom: 40px; - } - - .container-4 { - max-width: 728px; - } - - .nav-menu-wrapper { - background-color: rgba(0, 0, 0, 0); - } - - .nav-menu-two { - background-color: #fff; - border-radius: 50px; - flex-wrap: wrap; - justify-content: space-around; - align-items: center; - margin-top: 10px; - padding: 20px; - display: flex; - box-shadow: 0 8px 50px rgba(0, 0, 0, .05); - } - - .nav-link { - padding-left: 5px; - padding-right: 5px; - } - - .nav-dropdown-list.shadow-three.w--open { - position: absolute; - } - - .menu-button-2 { - padding: 12px; - } - - .menu-button-2.w--open { - color: #fff; - background-color: #a6b1bf; - } - - .confirnation-wrap_inner { - width: 60%; - } -} - -@media screen and (max-width: 767px) { - .defaultwidth.mission { - grid-column-gap: 36px; - grid-row-gap: 36px; - } - - .defaultwidth.transparentpricing { - grid-column-gap: 12px; - grid-row-gap: 12px; - margin-top: 40px; - } - - .defaultwidth.faq, .defaultwidth.faq-form { - grid-column-gap: 40px; - grid-row-gap: 40px; - } - - .nm-60.medium.white.hero { - text-shadow: 0 0 12px rgba(0, 0, 0, .2); - font-size: 40px; - line-height: 46px; - } - - .nm-60.white.hero { - text-align: center; - text-shadow: 0 0 12px rgba(0, 0, 0, .2); - font-size: 40px; - line-height: 46px; - } - - .nm-48.medium { - font-size: 32px; - line-height: 38px; - } - - .nm-48.howitworks, .nm-40.medium { - font-size: 26px; - line-height: 32px; - } - - .nm-40.medium.green40, .nm-40.medium.quaternary.strikethrough, .nm-40.medium.blue40, .nm-40.medium.green20, .nm-40.medium.price { - font-size: 32px; - line-height: 40px; - } - - .nm-40.medium.green-30 { - font-size: 32px; - line-height: 38px; - } - - .nm-40.howitworks { - font-size: 26px; - line-height: 32px; - } - - .nm-32 { - font-size: 22px; - line-height: 28px; - } - - .nm-32.medium.green-30 { - font-size: 26px; - line-height: 34px; - } - - .nm-32.medium.blue20 { - font-size: 32px; - line-height: 40px; - } - - .nm-26, .nm-26.medium.white { - font-size: 22px; - line-height: 28px; - } - - .nm-26.medium.whitesecondary, .nm-22.medium.whitesecondary { - font-size: 20px; - line-height: 26px; - } - - .nm-22.white.hero { - text-align: center; - font-size: 17px; - line-height: 22px; - } - - .nm-20.medium, .nm-20.medium.whitesecondary, .nm-20.secondary.center { - font-size: 17px; - line-height: 22px; - } - - .nm-20.dropdowntitle { - white-space: pre-wrap; - font-size: 17px; - line-height: 22px; - } - - .nm-17.whitesecondary.hero { - text-align: center; - font-size: 15px; - line-height: 20px; - } - - .nm-17.secondary.dropdowncontent { - font-size: 15px; - line-height: 20px; - } - - .nm-15.center.navigation { - text-align: left; - border-radius: 8px; - padding: 12px 16px; - font-size: 17px; - line-height: 22px; - } - - .nm-15.center.navigation:hover { - background-color: var(--light--fill-primary); - color: var(--light--label-primary); - } - - .nm-15.white.successmessage, .nm-15.red.error { - text-align: center; - } - - .button.secondary { - width: 100%; - } - - .button.secondary.hugcontents { - width: auto; - } - - .button.nav { - width: 95%; - margin: 12px 16px; - display: none; - } - - .button.nav.mobile { - width: auto; - margin: 8px 0; - display: block; - } - - .section.problemstatement { - padding: 80px 32px; - } - - .section.features { - grid-column-gap: 100px; - grid-row-gap: 100px; - padding: 80px 32px; - } - - .section.compare { - grid-column-gap: 60px; - grid-row-gap: 60px; - padding: 80px 32px 0; - } - - .section.faq { - grid-column-gap: 60px; - grid-row-gap: 60px; - padding: 80px 32px; - } - - .section.hero { - height: 90vh; - background-image: linear-gradient(rgba(0, 0, 0, .2), rgba(0, 0, 0, 0) 40%), url("https://assets-global.website-files.com/6550dc350fc956749ca012c6/6578e1405957a2f59864a4bd_Website%20Hero.jpg"); - background-position: 0 0, 55%; - background-repeat: repeat, no-repeat; - background-size: auto, cover; - } - - .section.business { - grid-column-gap: 60px; - grid-row-gap: 60px; - padding: 80px 32px; - } - - .headlinedescription { - grid-column-gap: 12px; - grid-row-gap: 12px; - } - - ._1296width.technology { - grid-column-gap: 60px; - grid-row-gap: 60px; - } - - ._1296width.hero { - height: 100%; - justify-content: space-around; - align-items: center; - padding: 92px 32px 32px; - } - - ._1296width.footer { - grid-column-gap: 60px; - grid-row-gap: 60px; - padding-left: 32px; - padding-right: 32px; - } - - ._2column { - grid-column-gap: 32px; - grid-row-gap: 32px; - grid-template-rows: auto auto; - grid-template-columns: 1fr; - margin-top: 0; - } - - .valuepropstack, .valuepropstack.card { - grid-column-gap: 24px; - grid-row-gap: 24px; - } - - .imagepricing { - max-width: 125%; - margin-top: 60px; - margin-bottom: 0; - } - - ._2cards { - grid-column-gap: 16px; - grid-row-gap: 16px; - } - - .cardcompare { - border-radius: 16px; - padding: 16px 24px 24px; - } - - .imagecardicon { - width: 40px; - height: 40px; - } - - .quotes { - grid-column-gap: 16px; - grid-row-gap: 16px; - grid-template-rows: auto auto auto; - grid-template-columns: 1fr; - grid-auto-columns: 1fr; - } - - .cardquote { - height: auto; - min-height: auto; - grid-column-gap: 24px; - grid-row-gap: 24px; - padding: 20px 24px; - } - - .cardquote.small { - height: auto; - min-height: auto; - border-radius: 16px; - } - - .titlesubtitlebutton { - grid-column-gap: 16px; - grid-row-gap: 16px; - } - - .titlesubtitle8px { - grid-column-gap: 4px; - grid-row-gap: 4px; - } - - .imagegridpower { - width: 130%; - } - - .container { - padding: 4px 20px 4px 24px; - } - - .logo { - height: 52px; - padding-left: 0; - } - - .herocontent { - height: 100%; - max-width: 100%; - justify-content: space-between; - align-items: center; - } - - .herotitlesubtitle { - align-items: center; - padding-left: 16px; - padding-right: 16px; - } - - .herotitlesubtitle.subheading { - align-items: center; - } - - .herotitlesubtitle.howitworks { - grid-column-gap: 4px; - grid-row-gap: 4px; - align-items: flex-start; - padding-left: 0; - padding-right: 0; - } - - .herotitlesubtitle.technology { - max-width: 416px; - align-items: flex-start; - padding-left: 0; - padding-right: 0; - } - - .dropdowntoggle { - padding-top: 16px; - padding-bottom: 16px; - } - - .numbersvertical { - display: none; - } - - .numbercircle.mobile { - margin-bottom: 12px; - display: flex; - } - - .footer { - grid-column-gap: 60px; - grid-row-gap: 60px; - padding-bottom: 60px; - } - - .footergrid { - width: 100%; - max-width: 100%; - grid-column-gap: 40px; - grid-row-gap: 60px; - } - - .footercolumn, .footercolumn.links { - width: 100%; - } - - .footercolumn.links.horizontal { - grid-column-gap: 40px; - grid-row-gap: 40px; - } - - .divtechnology { - grid-column-gap: 20px; - grid-row-gap: 20px; - flex-direction: column; - } - - .divtechnology.neighbors { - grid-column-gap: 20px; - grid-row-gap: 20px; - flex-direction: column; - padding-right: 0; - } - - .basepowercontent { - max-width: 416px; - grid-column-gap: 32px; - grid-row-gap: 32px; - } - - .basepowercontent.neighbors { - max-width: 100%; - } - - .hardwareimage { - display: none; - } - - .hardwareimage.mobile { - max-width: 100%; - display: block; - position: static; - } - - .image-2 { - max-width: 110%; - position: static; - } - - .menu-button { - background-color: var(--light--fill-primary); - border-radius: 18px; - padding: 6px; - transition: background-color .2s; - } - - .menu-button:hover, .menu-button:active { - background-color: var(--light--fill-secondary); - } - - .menu-button.w--open { - background-color: var(--light--fill-primary); - } - - .magnifyglass { - display: none; - } - - .nav-menu { - background-color: var(--light--surface-primary-elevated); - padding: 12px; - } - - .form.hero { - flex-direction: column; - } - - .form-block { - display: block; - } - - .success-message { - padding-left: 20px; - } - - .buttonsmobilenav { - grid-column-gap: 12px; - grid-row-gap: 12px; - justify-content: flex-end; - align-items: center; - display: flex; - } - - .lottie { - width: 125%; - height: auto; - margin-top: 60px; - } - - .hero-heading-center { - padding: 60px 15px; - } - - .navbar-logo-left-container { - max-width: 100%; - } - - .navbar-brand { - padding-left: 0; - } - - .nav-menu-two { - border-radius: 20px; - flex-direction: column; - padding-bottom: 30px; - } - - .nav-link { - padding-top: 10px; - padding-bottom: 10px; - display: inline-block; - } - - .nav-dropdown { - flex-direction: column; - align-items: center; - display: flex; - } - - .nav-dropdown-toggle { - padding-top: 10px; - padding-bottom: 10px; - } - - .nav-dropdown-list.shadow-three { - box-shadow: 0 8px 50px rgba(0, 0, 0, .05); - } - - .nav-dropdown-list.shadow-three.w--open { - position: relative; - } - - .nav-dropdown-list.shadow-three.mobile-shadow-hide { - box-shadow: none; - } - - .nav-divider { - width: 200px; - height: 1px; - max-width: 100%; - margin-top: 10px; - margin-bottom: 10px; - } - - .nav-link-accent { - margin-right: 5px; - padding-top: 10px; - padding-bottom: 10px; - display: inline-block; - } - - .mobile-margin-top-10 { - margin-top: 10px; - } - - .form_popup-inner, .confirnation-wrap_inner { - width: 80%; - } -} - -@media screen and (max-width: 479px) { - .nm-60.medium.white.hero { - font-size: 32px; - line-height: 38px; - } - - .nm-20.dropdowntitle { - max-width: 90%; - } - - .nm-17.secondary.dropdowncontent { - padding-bottom: 16px; - } - - .button.nav { - width: 90%; - margin-left: 8px; - margin-right: 8px; - } - - .section.features { - grid-column-gap: 80px; - grid-row-gap: 80px; - padding-top: 60px; - padding-bottom: 60px; - } - - .section.compare { - padding-top: 60px; - } - - .section.hero { - background-position: 0 0, 57%; - } - - .section.business { - padding-top: 60px; - padding-bottom: 60px; - } - - ._1296width.technology { - grid-column-gap: 48px; - grid-row-gap: 48px; - } - - ._1296width.footer { - grid-column-gap: 40px; - grid-row-gap: 40px; - flex-direction: column; - align-items: flex-start; - } - - .imagepricing { - max-width: 150%; - } - - .titlesubtitlebutton { - padding-left: 16px; - padding-right: 16px; - } - - .imagegridpower { - width: 175%; - } - - .herotitlesubtitle, .herotitlesubtitle.subheading { - padding-left: 0; - padding-right: 0; - } - - .herotitlesubtitle.technology { - max-width: 100%; - } - - .footercolumn.links { - width: 100%; - } - - .footercolumn.links.horizontal { - justify-content: flex-start; - } - - .divtechnology.neighbors { - max-width: 100%; - } - - .basepowercontent { - max-width: 100%; - min-width: auto; - } - - .basepowercontent.neighbors { - min-width: auto; - } - - .hardwareimage.mobile { - max-width: 110%; - } - - .image-2 { - max-width: 125%; - } - - .lottie { - width: 200%; - } - - .container-2 { - max-width: none; - } - - .centered-heading { - margin-bottom: 24px; - } - - .submit-button { - width: 100%; - } - - .comp-pane.right { - margin-top: 0; - padding: 30px; - } - - .close-button { - top: 20px; - right: 20px; - } - - .form_step-1_top-wrap-inner { - max-width: none; - } - - .form_faq { - padding: 30px; - } - - .container-4 { - max-width: none; - } - - .nav-menu-two { - flex-direction: column; - } - - .form_popup-inner { - width: 100%; - } - - .popup_bg { - display: none; - } -} - -#w-node-de72b350-a65a-4557-2c33-f9b395db85c1-9ca012ca { - grid-area: span 1 / span 1 / span 1 / span 1; - align-self: center; - justify-self: center; -} - -#w-node-d8e5cb0c-f32c-1733-f42e-b8e2a7fb73d7-9ca012ca, #w-node-_17f58903-493c-49da-a14f-cc5cfe847cd2-9ca012ca, #w-node-a84a032c-35e2-6a7f-0671-376c104a62a5-9ca012ca, #w-node-_1bd8a2f6-1782-20db-97cb-c48811d87ac5-9ca012ca, #w-node-e771e47d-a99b-5ba2-1338-3c24e5416d9f-9ca012ca, #w-node-_2d03f357-7e2e-aa34-d8ea-bf70acc13d31-9ca012ca, #w-node-_2d03f357-7e2e-aa34-d8ea-bf70acc13d3c-9ca012ca { - grid-area: span 1 / span 1 / span 1 / span 1; -} - -#w-node-_4e72df3a-199b-de98-ca44-c740b4a6473a-9ca012ca { - grid-area: span 1 / span 2 / span 1 / span 2; -} - -#w-node-_4e72df3a-199b-de98-ca44-c740b4a6473c-9ca012ca, #w-node-cd7e6d0f-2bde-f06a-9705-d1fecdb54daf-9ca012ca, #w-node-_56e0622e-aaef-78b6-c1d0-17b2d6147a5e-9ca012ca { - grid-area: span 1 / span 1 / span 1 / span 1; -} - -#w-node-b8104b0d-8cdd-fc48-2171-dad626404f5f-26404f5f { - grid-area: span 1 / span 1 / span 1 / span 1; - align-self: center; - justify-self: center; -} - -@media screen and (max-width: 767px) { - #w-node-cd7e6d0f-2bde-f06a-9705-d1fecdb54dae-9ca012ca, #w-node-_56e0622e-aaef-78b6-c1d0-17b2d6147a5d-9ca012ca { - grid-area: span 1 / span 2 / span 1 / span 2; - } -} - -@font-face { - font-family: 'PP Neue Montreal Variable'; - src: url('https://uploads-ssl.webflow.com/6550dc350fc956749ca012c6/6550deff308e88ddc89298a9_PPNeueMontreal-Variable.ttf') format('truetype'); - font-weight: 200 800; - font-style: normal; - font-display: swap; -} \ No newline at end of file diff --git a/public/Base_files/jquery-3.5.1.min.dc5e7f18c8.js b/public/Base_files/jquery-3.5.1.min.dc5e7f18c8.js deleted file mode 100644 index b061403..0000000 --- a/public/Base_files/jquery-3.5.1.min.dc5e7f18c8.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0p;)this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!0),x-=1;d&&(this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,-d,!0),x-=d)}for(n=this.data.m===1?0:this._currentCopies-1,i=this.data.m===1?1:-1,a=this._currentCopies;a;){if(b=(r=(t=this.elemsData[n].it)[t.length-1].transform.mProps.v.props).length,t[t.length-1].transform.mProps._mdf=!0,t[t.length-1].transform.op._mdf=!0,t[t.length-1].transform.op.v=this._currentCopies===1?this.so.v:this.so.v+(this.eo.v-this.so.v)*(n/(this._currentCopies-1)),x!==0){for((n!==0&&i===1||n!==this._currentCopies-1&&i===-1)&&this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!1),this.matrix.transform(h[0],h[1],h[2],h[3],h[4],h[5],h[6],h[7],h[8],h[9],h[10],h[11],h[12],h[13],h[14],h[15]),this.matrix.transform(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10],v[11],v[12],v[13],v[14],v[15]),this.matrix.transform(m[0],m[1],m[2],m[3],m[4],m[5],m[6],m[7],m[8],m[9],m[10],m[11],m[12],m[13],m[14],m[15]),y=0;y0&&n<1?[t]:[]:[t-n,t+n].filter(function(i){return i>0&&i<1})},PolynomialBezier.prototype.split=function(e){if(e<=0)return[singlePoint(this.points[0]),this];if(e>=1)return[this,singlePoint(this.points[this.points.length-1])];var t=lerpPoint(this.points[0],this.points[1],e),r=lerpPoint(this.points[1],this.points[2],e),n=lerpPoint(this.points[2],this.points[3],e),i=lerpPoint(t,r,e),a=lerpPoint(r,n,e),s=lerpPoint(i,a,e);return[new PolynomialBezier(this.points[0],t,i,s,!0),new PolynomialBezier(s,a,n,this.points[3],!0)]},PolynomialBezier.prototype.bounds=function(){return{x:extrema(this,0),y:extrema(this,1)}},PolynomialBezier.prototype.boundingBox=function(){var e=this.bounds();return{left:e.x.min,right:e.x.max,top:e.y.min,bottom:e.y.max,width:e.x.max-e.x.min,height:e.y.max-e.y.min,cx:(e.x.max+e.x.min)/2,cy:(e.y.max+e.y.min)/2}},PolynomialBezier.prototype.intersections=function(e,t,r){t===void 0&&(t=2),r===void 0&&(r=7);var n=[];return intersectsImpl(intersectData(this,0,1),intersectData(e,0,1),0,t,n,r),n},PolynomialBezier.shapeSegment=function(e,t){var r=(t+1)%e.length();return new PolynomialBezier(e.v[t],e.o[t],e.i[r],e.v[r],!0)},PolynomialBezier.shapeSegmentInverted=function(e,t){var r=(t+1)%e.length();return new PolynomialBezier(e.v[r],e.i[r],e.o[t],e.v[t],!0)},extendPrototype([ShapeModifier],ZigZagModifier),ZigZagModifier.prototype.initModifierProperties=function(e,t){this.getValue=this.processKeys,this.amplitude=PropertyFactory.getProp(e,t.s,0,null,this),this.frequency=PropertyFactory.getProp(e,t.r,0,null,this),this.pointsType=PropertyFactory.getProp(e,t.pt,0,null,this),this._isAnimated=this.amplitude.effectsSequence.length!==0||this.frequency.effectsSequence.length!==0||this.pointsType.effectsSequence.length!==0},ZigZagModifier.prototype.processPath=function(e,t,r,n){var i=e._length,a=shapePool.newElement();if(a.c=e.c,e.c||(i-=1),i===0)return a;var s=-1,o=PolynomialBezier.shapeSegment(e,0);zigZagCorner(a,e,0,t,r,n,s);for(var l=0;l=0;a-=1)o=PolynomialBezier.shapeSegmentInverted(e,a),c.push(offsetSegmentSplit(o,t));c=pruneIntersections(c);var u=null,f=null;for(a=0;a 0&&(y=!1),y){var b=createTag("style");b.setAttribute("f-forigin",d[g].fOrigin),b.setAttribute("f-origin",d[g].origin),b.setAttribute("f-family",d[g].fFamily),b.type="text/css",b.innerText="@font-face {font-family: "+d[g].fFamily+"; font-style: normal; src: url('"+d[g].fPath+"');}",f.appendChild(b)}}else if(d[g].fOrigin==="g"||d[g].origin===1){for(h=document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]'),v=0;v
- Beta now available in select regions of Texas
-
- Protect your home with a 20 kWh Base battery
-
- Backup for 1/10th of the cost. Lower your monthly power
- bills.
- Join the solution to stabilize our grid.
-
- Protect your home with a 20 kWh Base battery
- Backup for 1/10th of the cost. Lower your monthly power
- bills.
- Join the solution to stabilize our grid.
-
- The fact that I can get a battery backup solution for
- the cost of installation and lower the cost of my
- electricity bill at the same timeis prettymuch a no brainer for me.
- Orlando P. from Round Rock
- This is amazing!!! Literally the electricity went out for
- a split second and then came back on. It was important
- because I had several zoom conference calls that I'm
- leading while also remoting into my firm's VPN. To
- say Base Power has been a game changer for my household
- would be putting it mildly. What a phenomenal product.
- Rudy
- from Pflugerville, TX
-
- After five years in my Pflugerville home, I became
- increasingly concerned over continuing electrical power
- outages.
- Base has developed a very timely business model that
- not only will help stabilize the Texas Power Grid, but
- at the same time provide full home battery back-up and competitive
- electric utility prices. JD
- from Pflugerville, TX
-
- Base protects homeowners from power outages and
- reduces their energy bills with a battery-powered
- home energy service.
-
- When you switch to Base as your energy provider,
- you get a home battery for a fraction of the cost
- of other backup batteries or generators. The
- upfront cost is low because when the grid is up
- and running, the battery performs grid balancing:
- it charges when electricity is cheap and
- discharges when electricity is expensive. This
- allows the battery to pay for itself over time
- without the customer having to think about it.
- Savings are passed on to Base customers via lower
- monthly energy bills.
-
- When the grid goes down, Base customers get
- exclusive access to the stored energy to protect
- their home from power outages. Base’s beta outage
- prediction technology protects customers from 97%
- of outages. As Base improves its prediction
- software and the battery network, backup duration
- and performance will improve over time.
- Base has two key pricing components:
- Upfront Fee: The Base battery is
- a 20-kWh battery, one of the largest home
- batteries on the market. Comparable backup
- systems, including installation, cost
- approximately $20K. With Base, homeowners only pay
- a one-time installation fee. Base installation fee
- is typically $3K, but can be lower in different
- cities. For the $3K installation, Base offers 0%
- interest payment plans.
-
- Monthly Energy Bills: As your
- energy provider, Base guarantees that its rates
- will always be below the market average
- consumption rates. Base’s rates energy charges are
- dependent on your address. If you have solar, Base
- offers competitive buyback for all of your
- overproduction (regardless of whether the solar
- energy goes into the battery or to the grid) at a
- rate of real-time wholesale plus 3 ¢/kWh. Send us
- a copy of your latest energy bill at
- team@basepowercompany.com, and Base will provide a
- cost comparison. See Base's latest plans and
- Electricity Facts Labels (EFLs)
- here.
-
- Base operates in select deregulated regions of
- Texas where you can choose your energy provider,
- including areas served by the following
- Transmission and Distribution Utilities (TDUs):
- Oncor, CenterPoint, TNMP, AEP, and Lubbock Power
- and Light.
-
- Enter your address to check your home’s
- eligibility and the timeline for installation.
-
- Yes, Base serves customers with and without solar.
- Base’s batteries are easy to integrate with solar
- panels, and the integration does not affect your
- warranty or require any rewiring of your solar
- system.
- Reasons why solar customers choose Base:
- You can install a Base battery now and easily
- install solar panels later on as well.
-
- Base batteries protect customers from 97% of
- outages. Depending on household energy usage,
- outage protection can last from 6 to 24 hours.
-
- For solar customers, outage protection is even
- longer since your solar panels can continue to
- charge the battery.
-
- In the event of an outage, Base notifies customers
- of their expected battery duration, tips to extend
- their coverage, and a timeline for grid power
- restoration.
-
- Certainly, you can email us at
- team@basepowercompany.com
- or call/text us at
- (512) 518-1009.
-
- If you're a current customer and need
- support, please reach out to our toll-free number
- (866) 479-7697.
-
- Base is a modern power company on a mission to make
- Texans’ power more reliable and affordable. Base
- customers save on their monthly electric bills and enjoy
- power without interruption through a battery-powered
- home energy service.
- The upfront cost is a one-time fee of $3,000 to cover
- installation, which is 1/10 of the cost of other home
- batteries or generators on the market today.
- Base operates in deregulated areas of Texas where you
- can select your own provider, including regions serviced
- by the following Transmission and Distribution Utilities
- (TDUs): Oncor, Centerpoint, TNMP, AEP, and Lubbock Power
- and Light. Enter your address to check your home’s
- eligibility and the timeline for installation.
- There are four steps in switching to Base:
-
- With Base's Gen 1 technology, the average customer
- is fully protected from 97% of potential outages. As we
- improve our prediction software and battery network,
- outage coverage will improve over time.
- Base offers a 20kWh battery and 11kW inverter, one of
- the largest home backup systems on the market. Our
- batteries have longer duration and can backup more
- appliances in your home than almost any other home
- backup solution.
- Yes, Base batteries can integrate with existing solar
- panels, enhancing the value and efficiency of your solar
- system in a more cost effective way than high cost
- alternatives. Solar installations are more complex and
- provide whole home back up.
- Base's hardware is UL certified - the ‘gold
- standard’ of electrical systems safety for all home
- appliances. Our electricians are licensed, bonded,
- insured + certified. All electricians work under a
- Master Electrician.
-
- Here’s a summary of the Base Agreements:
- If your contract is up within the next 3 months, we’ll
- schedule your switch and installation to avoid
- triggering the early cancellation fee. If not, we’ll
- cover up to $250 of your early cancellation fee for
- switching. Please contact us to review your exact
- situation so we can help.
-
- Certainly, shoot us a text at 866-479-7697 and we’ll
- give you a call.
- Refundable Preorder $50 40 kWh Battery FREE
- Installation (due on activation)
- $1500 Energy Service
- Determined at activation
-
- Base protects homeowners from power outages
- and reduces their energy bills with a
- battery-powered home energy service.
-
- When you switch to Base as your energy
- provider, you get a home battery for a
- fraction of the cost of other backup
- batteries or generators. The upfront cost is
- low because when the grid is up and running,
- the battery performs grid balancing: it
- charges when electricity is cheap and
- discharges when electricity is expensive.
- This allows the battery to pay for itself
- over time without the customer having to
- think about it. Savings are passed on to
- Base customers via lower monthly energy
- bills.
-
- When the grid goes down, Base customers get
- exclusive access to the stored energy to
- protect their home from power outages.
- Base’s beta outage prediction technology
- protects customers from 97% of outages. As
- Base improves its prediction software and
- the battery network, backup duration and
- performance will improve over time.
- Base has two key pricing components:
- Upfront Fee: The Base
- battery is a 20-kWh battery, one of the
- largest home batteries on the market.
- Comparable backup systems, including
- installation, cost approximately $20K. With
- Base, homeowners only pay a one-time
- installation fee. Base installation fee is
- typically $3K, but can be lower in different
- cities. For the $3K installation, Base
- offers 0% interest payment plans.
-
- Monthly Energy Bills: As
- your energy provider, Base guarantees that
- its rates will always be below the market
- average consumption rates. Base’s rates
- energy charges are dependent on your
- address. If you have solar, Base offers
- competitive buyback for all of your
- overproduction (regardless of whether the
- solar energy goes into the battery or to the
- grid) at a rate of real-time wholesale plus
- 3 ¢/kWh. Send us a copy of your latest
- energy bill at team@basepowercompany.com,
- and Base will provide a cost comparison. See
- Base's latest plans and Electricity
- Facts Labels (EFLs)
- here.
-
- Base operates in select deregulated regions
- of Texas where you can choose your energy
- provider, including areas served by the
- following Transmission and Distribution
- Utilities (TDUs): Oncor, CenterPoint, TNMP,
- AEP, and Lubbock Power and Light.
-
- Enter your address to check your home’s
- eligibility and the timeline for
- installation.
-
- Yes, Base serves customers with and without
- solar. Base’s batteries are easy to
- integrate with solar panels, and the
- integration does not affect your warranty or
- require any rewiring of your solar system.
-
- Reasons why solar customers choose Base:
-
- You can install a Base battery now and
- easily install solar panels later on as
- well.
-
- Base batteries protect customers from 97% of
- outages. Depending on household energy
- usage, outage protection can last from 6 to
- 24 hours.
-
- For solar customers, outage protection is
- even longer since your solar panels can
- continue to charge the battery.
-
- In the event of an outage, Base notifies
- customers of their expected battery
- duration, tips to extend their coverage, and
- a timeline for grid power restoration.
-
- Certainly, you can email us at
- team@basepowercompany.com
- or call/text us at
- (512) 518-1009.
-
- If you're a current customer and need
- support, please reach out to our toll-free
- number (866) 479-7697.
-
- Base is a modern power company on a mission to
- make Texans’ power more reliable and affordable.
- Base customers save on their monthly electric
- bills and enjoy power without interruption through
- a battery-powered home energy service.
-
- The upfront cost is a one-time fee of $3,000 to
- cover installation, which is 1/10 of the cost of
- other home batteries or generators on the market
- today.
- Base operates in deregulated areas of Texas where
- you can select your own provider, including
- regions serviced by the following Transmission and
- Distribution Utilities (TDUs): Oncor, Centerpoint,
- TNMP, AEP, and Lubbock Power and Light. Enter your
- address to check your home’s eligibility and the
- timeline for installation.
- There are four steps in switching to Base:
-
- With Base's Gen 1 technology, the average
- customer is fully protected from 97% of potential
- outages. As we improve our prediction software and
- battery network, outage coverage will improve over
- time.
- Base offers a 20kWh battery and 11kW inverter, one
- of the largest home backup systems on the market.
- Our batteries have longer duration and can backup
- more appliances in your home than almost any other
- home backup solution.
- Yes, Base batteries can integrate with existing
- solar panels, enhancing the value and efficiency
- of your solar system in a more cost effective way
- than high cost alternatives. Solar installations
- are more complex and provide whole home back up.
-
- Base's hardware is UL certified - the ‘gold
- standard’ of electrical systems safety for all
- home appliances. Our electricians are licensed,
- bonded, insured + certified. All electricians work
- under a Master Electrician.
-
- Here’s a summary of the Base Agreements:
- If your contract is up within the next 3 months,
- we’ll schedule your switch and installation to
- avoid triggering the early cancellation fee. If
- not, we’ll cover up to $250 of your early
- cancellation fee for switching. Please contact us
- to review your exact situation so we can help.
-
- Certainly, shoot us a text at 866-479-7697 and
- we’ll give you a call.
-
- Switch to Base as your electricity provider to power your
- home with a free backup battery, professionally installed
- for $1,500.
- Our Beta is now available in select regions of Texas.0?a=this.ne.v/100:s=-this.ne.v/100,this.xe.v>0?o=1-this.xe.v/100:l=1+this.xe.v/100;var c=BezierFactory.getBezierEasing(a,s,o,l).get,u=0,f=this.finalS,g=this.finalE,d=this.data.sh;if(d===2)u=c(u=g===f?i>=g?1:0:e(0,t(.5/(g-f)+(i-f)/(g-f),1)));else if(d===3)u=c(u=g===f?i>=g?0:1:1-e(0,t(.5/(g-f)+(i-f)/(g-f),1)));else if(d===4)g===f?u=0:(u=e(0,t(.5/(g-f)+(i-f)/(g-f),1)))<.5?u*=2:u=1-2*(u-.5),u=c(u);else if(d===5){if(g===f)u=0;else{var p=g-f,m=-p/2+(i=t(e(0,i+.5-f),g-f)),h=p/2;u=Math.sqrt(1-m*m/(h*h))}u=c(u)}else d===6?(g===f?u=0:(i=t(e(0,i+.5-f),g-f),u=(1+Math.cos(Math.PI+2*Math.PI*i/(g-f)))/2),u=c(u)):(i>=r(f)&&(u=e(0,t(i-f<0?t(g,1)-(f-i):g-i,1))),u=c(u));if(this.sm.v!==100){var v=.01*this.sm.v;v===0&&(v=1e-8);var y=.5-.5*v;u").attr("src","https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-icon-d2.89e12c322e.svg").attr("alt","").css({marginRight:"4px",width:"26px"}),m=e("
").attr("src","https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-text-d2.c82cec3b78.svg").attr("alt","Made in Webflow");return d.append(p,m),d[0]}function g(){var d=i.children(a),p=d.length&&d.get(0)===c,m=Gx.env("editor");if(p){m&&d.remove();return}d.length&&d.remove(),m||i.append(c)}return t})});var Wx=E((Bse,jx)=>{"use strict";var xu=Qe();xu.define("edit",jx.exports=function(e,t,r){if(r=r||{},(xu.env("test")||xu.env("frame"))&&!r.fixture&&!uU())return{exit:1};var n={},i=e(window),a=e(document.documentElement),s=document.location,o="hashchange",l,c=r.load||g,u=!1;try{u=localStorage&&localStorage.getItem&&localStorage.getItem("WebflowEditor")}catch{}u?c():s.search?(/[?&](edit)(?:[=&?]|$)/.test(s.search)||/\?edit$/.test(s.href))&&c():i.on(o,f).triggerHandler(o);function f(){l||/\?edit/.test(s.hash)&&c()}function g(){l=!0,window.WebflowEditor=!0,i.off(o,f),y(function(x){e.ajax({url:v("https://editor-api.webflow.com/api/editor/view"),data:{siteId:a.attr("data-wf-site")},xhrFields:{withCredentials:!0},dataType:"json",crossDomain:!0,success:d(x)})})}function d(x){return function(S){if(!S){console.error("Could not load editor data");return}S.thirdPartyCookiesSupported=x,p(h(S.bugReporterScriptPath),function(){p(h(S.scriptPath),function(){window.WebflowEditor(S)})})}}function p(x,S){e.ajax({type:"GET",url:x,dataType:"script",cache:!0}).then(S,m)}function m(x,S,T){throw console.error("Could not load editor script: "+S),T}function h(x){return x.indexOf("//")>=0?x:v("https://editor-api.webflow.com"+x)}function v(x){return x.replace(/([^:])\/\//g,"$1/")}function y(x){var S=window.document.createElement("iframe");S.src="https://webflow.com/site/third-party-cookie-check.html",S.style.display="none",S.sandbox="allow-scripts allow-same-origin";var T=function(_){_.data==="WF_third_party_cookies_unsupported"?(b(S,T),x(!1)):_.data==="WF_third_party_cookies_supported"&&(b(S,T),x(!0))};S.onerror=function(){b(S,T),x(!1)},window.addEventListener("message",T,!1),window.document.body.appendChild(S)}function b(x,S){window.removeEventListener("message",S,!1),x.remove()}return n});function uU(){try{return window.top.__Cypress__}catch{return!1}}});var Xx=E((Vse,Ux)=>{"use strict";var hU=Qe();hU.define("focus-visible",Ux.exports=function(){function e(r){var n=!0,i=!1,a=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function o(b){return!!(b&&b!==document&&b.nodeName!=="HTML"&&b.nodeName!=="BODY"&&"classList"in b&&"contains"in b.classList)}function l(b){var x=b.type,S=b.tagName;return!!(S==="INPUT"&&s[x]&&!b.readOnly||S==="TEXTAREA"&&!b.readOnly||b.isContentEditable)}function c(b){b.getAttribute("data-wf-focus-visible")||b.setAttribute("data-wf-focus-visible","true")}function u(b){b.getAttribute("data-wf-focus-visible")&&b.removeAttribute("data-wf-focus-visible")}function f(b){b.metaKey||b.altKey||b.ctrlKey||(o(r.activeElement)&&c(r.activeElement),n=!0)}function g(){n=!1}function d(b){o(b.target)&&(n||l(b.target))&&c(b.target)}function p(b){o(b.target)&&b.target.hasAttribute("data-wf-focus-visible")&&(i=!0,window.clearTimeout(a),a=window.setTimeout(function(){i=!1},100),u(b.target))}function m(){document.visibilityState==="hidden"&&(i&&(n=!0),h())}function h(){document.addEventListener("mousemove",y),document.addEventListener("mousedown",y),document.addEventListener("mouseup",y),document.addEventListener("pointermove",y),document.addEventListener("pointerdown",y),document.addEventListener("pointerup",y),document.addEventListener("touchmove",y),document.addEventListener("touchstart",y),document.addEventListener("touchend",y)}function v(){document.removeEventListener("mousemove",y),document.removeEventListener("mousedown",y),document.removeEventListener("mouseup",y),document.removeEventListener("pointermove",y),document.removeEventListener("pointerdown",y),document.removeEventListener("pointerup",y),document.removeEventListener("touchmove",y),document.removeEventListener("touchstart",y),document.removeEventListener("touchend",y)}function y(b){b.target.nodeName&&b.target.nodeName.toLowerCase()==="html"||(n=!1,v())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",g,!0),document.addEventListener("pointerdown",g,!0),document.addEventListener("touchstart",g,!0),document.addEventListener("visibilitychange",m,!0),h(),r.addEventListener("focus",d,!0),r.addEventListener("blur",p,!0)}function t(){if(typeof document<"u")try{document.querySelector(":focus-visible")}catch{e(document)}}return{ready:t}})});var Yx=E((Gse,Kx)=>{"use strict";var $x=Qe();$x.define("focus",Kx.exports=function(){var e=[],t=!1;function r(s){t&&(s.preventDefault(),s.stopPropagation(),s.stopImmediatePropagation(),e.unshift(s))}function n(s){var o=s.target,l=o.tagName;return/^a$/i.test(l)&&o.href!=null||/^(button|textarea)$/i.test(l)&&o.disabled!==!0||/^input$/i.test(l)&&/^(button|reset|submit|radio|checkbox)$/i.test(o.type)&&!o.disabled||!/^(button|input|textarea|select|a)$/i.test(l)&&!Number.isNaN(Number.parseFloat(o.tabIndex))||/^audio$/i.test(l)||/^video$/i.test(l)&&o.controls===!0}function i(s){n(s)&&(t=!0,setTimeout(()=>{for(t=!1,s.target.focus();e.length>0;){var o=e.pop();o.target.dispatchEvent(new MouseEvent(o.type,o))}},0))}function a(){typeof document<"u"&&document.body.hasAttribute("data-wf-focus-within")&&$x.env.safari&&(document.addEventListener("mousedown",i,!0),document.addEventListener("mouseup",r,!0),document.addEventListener("click",r,!0))}return{ready:a}})});var Jx=E((zse,Qx)=>{"use strict";var Su=window.jQuery,Dt={},Ya=[],Zx=".w-ix",Za={reset:function(e,t){t.__wf_intro=null},intro:function(e,t){t.__wf_intro||(t.__wf_intro=!0,Su(t).triggerHandler(Dt.types.INTRO))},outro:function(e,t){t.__wf_intro&&(t.__wf_intro=null,Su(t).triggerHandler(Dt.types.OUTRO))}};Dt.triggers={};Dt.types={INTRO:"w-ix-intro"+Zx,OUTRO:"w-ix-outro"+Zx};Dt.init=function(){for(var e=Ya.length,t=0;t
6?s-6:0),l=6;l7?c-7:0),f=7;f{"use strict";et();t_=pe(ln()),{IX2_PREVIEW_REQUESTED:$X,IX2_PLAYBACK_REQUESTED:KX,IX2_STOP_REQUESTED:YX,IX2_CLEAR_REQUESTED:ZX}=Re,QX={preview:{},playback:{},stop:{},clear:{}},e_=Object.create(null,{[$X]:{value:"preview"},[KX]:{value:"playback"},[YX]:{value:"stop"},[ZX]:{value:"clear"}}),r_=(e=QX,t)=>{if(t.type in e_){let r=[e_[t.type]];return(0,t_.setIn)(e,[r],{...t.payload})}return e}});var $e,JX,e6,t6,r6,n6,i6,a6,s6,o6,l6,i_,u6,a_,s_=ye(()=>{"use strict";et();$e=pe(ln()),{IX2_SESSION_INITIALIZED:JX,IX2_SESSION_STARTED:e6,IX2_TEST_FRAME_RENDERED:t6,IX2_SESSION_STOPPED:r6,IX2_EVENT_LISTENER_ADDED:n6,IX2_EVENT_STATE_CHANGED:i6,IX2_ANIMATION_FRAME_CHANGED:a6,IX2_ACTION_LIST_PLAYBACK_CHANGED:s6,IX2_VIEWPORT_WIDTH_CHANGED:o6,IX2_MEDIA_QUERIES_DEFINED:l6}=Re,i_={active:!1,tick:0,eventListeners:[],eventState:{},playbackState:{},viewportWidth:0,mediaQueryKey:null,hasBoundaryNodes:!1,hasDefinedMediaQueries:!1,reducedMotion:!1},u6=20,a_=(e=i_,t)=>{switch(t.type){case JX:{let{hasBoundaryNodes:r,reducedMotion:n}=t.payload;return(0,$e.merge)(e,{hasBoundaryNodes:r,reducedMotion:n})}case e6:return(0,$e.set)(e,"active",!0);case t6:{let{payload:{step:r=u6}}=t;return(0,$e.set)(e,"tick",e.tick+r)}case r6:return i_;case a6:{let{payload:{now:r}}=t;return(0,$e.set)(e,"tick",r)}case n6:{let r=(0,$e.addLast)(e.eventListeners,t.payload);return(0,$e.set)(e,"eventListeners",r)}case i6:{let{stateKey:r,newState:n}=t.payload;return(0,$e.setIn)(e,["eventState",r],n)}case s6:{let{actionListId:r,isPlaying:n}=t.payload;return(0,$e.setIn)(e,["playbackState",r],n)}case o6:{let{width:r,mediaQueries:n}=t.payload,i=n.length,a=null;for(let s=0;s=l&&r<=c){a=o;break}}return(0,$e.merge)(e,{viewportWidth:r,mediaQueryKey:a})}case l6:return(0,$e.set)(e,"hasDefinedMediaQueries",!0);default:return e}}});var ju=E((Aoe,o_)=>{var h6=er(),c6=gr(),f6=Fn();function p6(e){return function(t,r,n){var i=Object(t);if(!c6(t)){var a=h6(r,3);t=f6(t),r=function(o){return a(i[o],o,i)}}var s=e(t,r,n);return s>-1?i[a?t[s]:s]:void 0}}o_.exports=p6});var Wu=E((Poe,l_)=>{var d6=ju(),m6=So(),g6=d6(m6);l_.exports=g6});var c_={};je(c_,{ELEMENT_MATCHES:()=>v6,FLEX_PREFIXED:()=>Uu,IS_BROWSER_ENV:()=>St,TRANSFORM_PREFIXED:()=>fr,TRANSFORM_STYLE_PREFIXED:()=>os,withBrowser:()=>ss});var h_,St,ss,v6,Uu,fr,u_,os,ls=ye(()=>{"use strict";h_=pe(Wu()),St=typeof window<"u",ss=(e,t)=>St?e():t,v6=ss(()=>(0,h_.default)(["matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector"],e=>e in Element.prototype)),Uu=ss(()=>{let e=document.createElement("i"),t=["flex","-webkit-flex","-ms-flexbox","-moz-box","-webkit-box"],r="";try{let{length:n}=t;for(let i=0;i0&&r(o)?t>1?XI(o,t-1,r,n,i):dZ(i,o):n||(i[i.length]=o)}return i}$I.exports=XI});var ZI=E((Wle,YI)=>{var gZ=KI();function vZ(e){var t=e==null?0:e.length;return t?gZ(e,1):[]}YI.exports=vZ});var JI=E((Ule,QI)=>{function yZ(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}QI.exports=yZ});var rA=E((Xle,tA)=>{var EZ=JI(),eA=Math.max;function bZ(e,t,r){return t=eA(t===void 0?e.length-1:t,0),function(){for(var n=arguments,i=-1,a=eA(n.length-t,0),s=Array(a);++i{function xZ(e){return function(){return e}}nA.exports=xZ});var oA=E((Kle,sA)=>{var SZ=iA(),aA=yh(),_Z=Yi(),TZ=aA?function(e,t){return aA(e,"toString",{configurable:!0,enumerable:!1,value:SZ(t),writable:!0})}:_Z;sA.exports=TZ});var uA=E((Yle,lA)=>{var IZ=800,AZ=16,PZ=Date.now;function CZ(e){var t=0,r=0;return function(){var n=PZ(),i=AZ-(n-r);if(r=n,i>0){if(++t>=IZ)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}lA.exports=CZ});var cA=E((Zle,hA)=>{var wZ=oA(),MZ=uA(),OZ=MZ(wZ);hA.exports=OZ});var pA=E((Qle,fA)=>{var DZ=ZI(),RZ=rA(),FZ=cA();function qZ(e){return FZ(RZ(e,void 0,DZ),e+"")}fA.exports=qZ});var gA=E((Jle,mA)=>{var dA=oo(),LZ=dA&&new dA;mA.exports=LZ});var yA=E((eue,vA)=>{function kZ(){}vA.exports=kZ});var Lh=E((tue,bA)=>{var EA=gA(),NZ=yA(),BZ=EA?function(e){return EA.get(e)}:NZ;bA.exports=BZ});var SA=E((rue,xA)=>{var VZ={};xA.exports=VZ});var kh=E((nue,TA)=>{var _A=SA(),GZ=Object.prototype,zZ=GZ.hasOwnProperty;function HZ(e){for(var t=e.name+"",r=_A[t],n=zZ.call(_A,t)?r.length:0;n--;){var i=r[n],a=i.func;if(a==null||a==e)return i.name}return t}TA.exports=HZ});var ws=E((iue,IA)=>{var jZ=qh(),WZ=Is(),UZ=4294967295;function Cs(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=UZ,this.__views__=[]}Cs.prototype=jZ(WZ.prototype);Cs.prototype.constructor=Cs;IA.exports=Cs});var PA=E((aue,AA)=>{function XZ(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r
-
-
-
-
-
- Protect your home from outages
-
-
-
- Get all the benefits of backup power for a fraction of the
- cost
-
-
-
to other batteries
-
-
to generators
-
- No hidden fees, no seasonal prices, no
- gimmicks.
-
-
See more details on Base's latest
- plans and Electricity Facts Labels (EFLs)
- here.
-
-
-
If you don't have solar,
- Base guarantees rates remain below market average. You
- can also add solar after installing Base.
-
-
-
-
-
-
-
When you switch to Base
- as your energy provider, you get a battery for 1/10 of
- the cost of other backup batteries or generators. When
- the grid is up and running, the Base battery will
- improve grid stability, and when the grid goes down,
- Base will protect customers’ homes from power outages.
- Base customers gain access to reliable battery backup
- and bill stability, without the high upfront costs of
- traditional home batteries or needing to install solar.
-
To
- get your custom quote for energy, submit your
- information on the website. When it’s your turn to come
- off of the waitlist, Base will inform you of your
- personalized energy rate.
-
-
(1) a quick consultation to make sure your
- home qualifies for service
(2) enrollment in our
- retail electricity service and in our battery agreements
-
(3) a couple of signatures on permitting documents
-
(4) scheduling your battery install. Base will
- handle everything else
This process can take
- between 1-5 weeks from start to finish. You can read
- more about each of these steps in our guide.
-
In
- the event of an outage, Base notifies customers with
- their expected battery duration, tips to extend their
- coverage, and a timeline for grid power restoration.
-
Base offers home backup for critical
- appliances, like your fridge, lights, and outlets. The
- loads we cover depend on your subpanel, i.e. the breaker
- box often found in the garage. You can learn more by
- joining our waitlist - when Base becomes available, our
- team of engineers will conduct a site survey to tell you
- exactly what will be backed up.
-
Base batteries are designed
- to last over 15 years and withstand extreme
- temperatures. Base owns the battery and will handle the
- warranty and any other maintenance on the system.
-
Base's
- solar integration does not affect your warranty. We do
- not need to rewire your existing solar devices to
- install. Feel free to send your warranty to
- team@basepowercompany.com to confirm.
If you
- don’t have solar yet but would like both solar panels
- and a battery installed, Base expects to add this
- offering in the future. We recommend signing up so you
- are the first to know about availability.
-
1) Base
- can access the battery when necessary, and handles
- maintenance & warranty. All applicable warranties
- from the installer and manufacturer are passed to
- you.
2) Base will be your energy provider for the
- life of the battery and will renew energy prices
- annually below the market average
3) If you move,
- you can transfer to the next homeowner at no cost to you
- or them
4) As Base is in Beta, back up energy
- should not be used for life critical devices and cannot
- be guaranteed
5) You can't steal or damage the
- battery without fees.
If you ever want to
- cancel with Base, you only have to pay for
- de-installation, which is $1,000. You don’t have to pay
- for de-installation if you move after 5 years, transfer
- to the next homeowner, or if the renewal price exceeds
- market average.
-
-
Modern Power Company
-
- PRICING OVERVIEW
-
-
-
-
-
When you switch to Base as your energy
- provider, you get a battery for 1/10 of the cost
- of other backup batteries or generators. When the
- grid is up and running, the Base battery will
- improve grid stability, and when the grid goes
- down, Base will protect customers’ homes from
- power outages. Base customers gain access to
- reliable battery backup and bill stability,
- without the high upfront costs of traditional home
- batteries or needing to install solar.
-
To get your custom quote for
- energy, submit your information on the website.
- When it’s your turn to come off of the waitlist,
- Base will inform you of your personalized energy
- rate.
-
-
(1) a quick consultation to make sure
- your home qualifies for service
(2)
- enrollment in our retail electricity service and
- in our battery agreements
(3) a couple of
- signatures on permitting documents
(4)
- scheduling your battery install. Base will handle
- everything else
This process can take
- between 1-5 weeks from start to finish. You can
- read more about each of these steps in our guide.
-
In the event of an outage, Base
- notifies customers with their expected battery
- duration, tips to extend their coverage, and a
- timeline for grid power restoration.
-
Base offers home backup for critical
- appliances, like your fridge, lights, and outlets.
- The loads we cover depend on your subpanel, i.e.
- the breaker box often found in the garage. You can
- learn more by joining our waitlist - when Base
- becomes available, our team of engineers will
- conduct a site survey to tell you exactly what
- will be backed up.
-
Base batteries
- are designed to last over 15 years and withstand
- extreme temperatures. Base owns the battery and
- will handle the warranty and any other maintenance
- on the system.
-
Base's solar integration does not
- affect your warranty. We do not need to rewire
- your existing solar devices to install. Feel free
- to send your warranty to team@basepowercompany.com
- to confirm.
If you don’t have solar yet
- but would like both solar panels and a battery
- installed, Base expects to add this offering in
- the future. We recommend signing up so you are the
- first to know about availability.
-
1)
- Base can access the battery when necessary, and
- handles maintenance & warranty. All applicable
- warranties from the installer and manufacturer are
- passed to you.
2) Base will be your energy
- provider for the life of the battery and will
- renew energy prices annually below the market
- average
3) If you move, you can transfer to
- the next homeowner at no cost to you or them
4)
- As Base is in Beta, back up energy should not be
- used for life critical devices and cannot be
- guaranteed
5) You can't steal or damage
- the battery without fees.
If you ever
- want to cancel with Base, you only have to pay for
- de-installation, which is $1,000. You don’t have
- to pay for de-installation if you move after 5
- years, transfer to the next homeowner, or if the
- renewal price exceeds market average.
-
- Reliable electricity for your home
-
-
});
-
-
-
-
-
-
-
-
+
\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n // make sure an initial resize event is fired _after_ the iframe is loaded (which is asynchronous)\n // see https://github.com/sveltejs/svelte/issues/4233\n fn();\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nconst resize_observer_content_box = /* @__PURE__ */ new ResizeObserverSingleton({ box: 'content-box' });\nconst resize_observer_border_box = /* @__PURE__ */ new ResizeObserverSingleton({ box: 'border-box' });\nconst resize_observer_device_pixel_content_box = /* @__PURE__ */ new ResizeObserverSingleton({ box: 'device-pixel-content-box' });\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, cancelable, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nfunction head_selector(nodeId, head) {\n const result = [];\n let started = 0;\n for (const node of head.childNodes) {\n if (node.nodeType === 8 /* comment node */) {\n const comment = node.textContent.trim();\n if (comment === `HEAD_${nodeId}_END`) {\n started -= 1;\n result.push(node);\n }\n else if (comment === `HEAD_${nodeId}_START`) {\n started += 1;\n result.push(node);\n }\n }\n else if (started > 0) {\n result.push(node);\n }\n }\n return result;\n}\nclass HtmlTag {\n constructor(is_svg = false) {\n this.is_svg = false;\n this.is_svg = is_svg;\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n if (this.is_svg)\n this.e = svg_element(target.nodeName);\n /** #7364 target for may be provided as #document-fragment(11) */\n else\n this.e = element((target.nodeType === 11 ? 'TEMPLATE' : target.nodeName));\n this.t = target.tagName !== 'TEMPLATE' ? target : target.content;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.nodeName === 'TEMPLATE' ? this.e.content.childNodes : this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes, is_svg = false) {\n super(is_svg);\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\nfunction construct_svelte_component(component, props) {\n return new component(props);\n}\n\n// we need to store the information for multiple documents because a Svelte application could also contain iframes\n// https://github.com/sveltejs/svelte/issues/3624\nconst managed_styles = new Map();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_style_information(doc, node) {\n const info = { stylesheet: append_empty_stylesheet(node), rules: {} };\n managed_styles.set(doc, info);\n return info;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);\n if (!rules[name]) {\n rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n managed_styles.forEach(info => {\n const { ownerNode } = info.stylesheet;\n // there is no ownerNode if it runs on jsdom.\n if (ownerNode)\n detach(ownerNode);\n });\n managed_styles.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`\n *\n * https://svelte.dev/docs#run-time-svelte-beforeupdate\n */\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs#run-time-svelte-onmount\n */\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`\n */\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * https://svelte.dev/docs#run-time-svelte-ondestroy\n */\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](/docs#template-syntax-component-directives-on-eventname).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * https://svelte.dev/docs#run-time-svelte-createeventdispatcher\n */\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail, { cancelable = false } = {}) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail, { cancelable });\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n return !event.defaultPrevented;\n }\n return true;\n };\n}\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * https://svelte.dev/docs#run-time-svelte-setcontext\n */\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n return context;\n}\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs#run-time-svelte-getcontext\n */\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * https://svelte.dev/docs#run-time-svelte-getallcontexts\n */\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs#run-time-svelte-hascontext\n */\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nlet render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = /* @__PURE__ */ Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\nlet flushidx = 0; // Do *not* move this inside the flush() function\nfunction flush() {\n // Do not reenter flush while dirty components are updated, as this can\n // result in an infinite loop. Instead, let the inner flush handle it.\n // Reentrancy is ok afterwards for bindings etc.\n if (flushidx !== 0) {\n return;\n }\n const saved_component = current_component;\n do {\n // first, call beforeUpdate functions\n // and update components\n try {\n while (flushidx < dirty_components.length) {\n const component = dirty_components[flushidx];\n flushidx++;\n set_current_component(component);\n update(component.$$);\n }\n }\n catch (e) {\n // reset dirty state to not end up in a deadlocked state and then rethrow\n dirty_components.length = 0;\n flushidx = 0;\n throw e;\n }\n set_current_component(null);\n dirty_components.length = 0;\n flushidx = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n seen_callbacks.clear();\n set_current_component(saved_component);\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n/**\n * Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.\n */\nfunction flush_render_callbacks(fns) {\n const filtered = [];\n const targets = [];\n render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c));\n targets.forEach((c) => c());\n render_callbacks = filtered;\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n else if (callback) {\n callback();\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n const options = { direction: 'in' };\n let config = fn(node, params, options);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config(options);\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n const options = { direction: 'out' };\n let config = fn(node, params, options);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config(options);\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n const options = { direction: 'both' };\n let config = fn(node, params, options);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config(options);\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n const updates = [];\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n // defer updates until all the DOM shuffling is done\n updates.push(() => block.p(child_ctx, dirty));\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n run_all(updates);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\nconst _boolean_attributes = [\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'inert',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n];\n/**\n * List of HTML boolean attributes (e.g. ``).\n * Source: https://html.spec.whatwg.org/multipage/indices.html\n */\nconst boolean_attributes = new Set([..._boolean_attributes]);\n\n/** regex of all html void element names */\nconst void_element_names = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;\nfunction is_void(name) {\n return void_element_names.test(name) || name.toLowerCase() === '!doctype';\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, attrs_to_add) {\n const attributes = Object.assign({}, ...args);\n if (attrs_to_add) {\n const classes_to_add = attrs_to_add.classes;\n const styles_to_add = attrs_to_add.styles;\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n if (styles_to_add) {\n if (attributes.style == null) {\n attributes.style = style_object_to_string(styles_to_add);\n }\n else {\n attributes.style = style_object_to_string(merge_ssr_styles(attributes.style, styles_to_add));\n }\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nfunction merge_ssr_styles(style_attribute, style_directive) {\n const style_object = {};\n for (const individual_style of style_attribute.split(';')) {\n const colon_index = individual_style.indexOf(':');\n const name = individual_style.slice(0, colon_index).trim();\n const value = individual_style.slice(colon_index + 1).trim();\n if (!name)\n continue;\n style_object[name] = value;\n }\n for (const name in style_directive) {\n const value = style_directive[name];\n if (value) {\n style_object[name] = value;\n }\n else {\n delete style_object[name];\n }\n }\n return style_object;\n}\nconst ATTR_REGEX = /[&\"]/g;\nconst CONTENT_REGEX = /[&<]/g;\n/**\n * Note: this method is performance sensitive and has been optimized\n * https://github.com/sveltejs/svelte/pull/5701\n */\nfunction escape(value, is_attr = false) {\n const str = String(value);\n const pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX;\n pattern.lastIndex = 0;\n let escaped = '';\n let last = 0;\n while (pattern.test(str)) {\n const i = pattern.lastIndex - 1;\n const ch = str[i];\n escaped += str.substring(last, i) + (ch === '&' ? '&' : (ch === '\"' ? '"' : '<'));\n last = i + 1;\n }\n return escaped + str.substring(last);\n}\nfunction escape_attribute_value(value) {\n // keep booleans, null, and undefined for the sake of `spread`\n const should_escape = typeof value === 'string' || (value && typeof value === 'object');\n return should_escape ? escape(value, true) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules. Otherwise you may need to fix a <${name}>.`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(context || (parent_component ? parent_component.$$.context : [])),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n const assignment = (boolean && value === true) ? '' : `=\"${escape(value, true)}\"`;\n return ` ${name}${assignment}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\nfunction style_object_to_string(style_object) {\n return Object.keys(style_object)\n .filter(key => style_object[key])\n .map(key => `${key}: ${escape_attribute_value(style_object[key])};`)\n .join(' ');\n}\nfunction add_styles(style_object) {\n const styles = style_object_to_string(style_object);\n return styles ? ` style=\"${styles}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n // if the component was destroyed immediately\n // it will update the `$$.on_destroy` reference to `null`.\n // the destructured on_destroy may still reference to the old array\n if (component.$$.on_destroy) {\n component.$$.on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n flush_render_callbacks($$.after_update);\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: [],\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n if (!is_function(callback)) {\n return noop;\n }\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n if (!is_function(callback)) {\n return noop;\n }\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.59.2' }, detail), { bubbles: true }));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation, has_stop_immediate_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n if (has_stop_immediate_propagation)\n modifiers.push('stopImmediatePropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.data === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction set_data_contenteditable_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction set_data_maybe_contenteditable_dev(text, data, attr_value) {\n if (~contenteditable_truthy_values.indexOf(attr_value)) {\n set_data_contenteditable_dev(text, data);\n }\n else {\n set_data_dev(text, data);\n }\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\nfunction validate_dynamic_element(tag) {\n const is_string = typeof tag === 'string';\n if (tag && !is_string) {\n throw new Error('
\n
\n