From 9ac6e9930ebed99708c982091b90990f483e50b6 Mon Sep 17 00:00:00 2001 From: Domeniko Gentner Date: Sat, 21 Nov 2020 20:23:43 +0100 Subject: [PATCH] Release 1 --- .gitignore | 8 + LICENSE.md | 22 + Pipfile | 20 + Pipfile.lock | 251 + README.md | 130 + db/keep | 0 docs/apache-config.md | 35 + docs/flow-chart.drawio | 1 + docs/flow-chart.png | Bin 0 -> 54468 bytes js/labertasche.js | 84 + labertasche.yaml | 44 + labertasche/__init__.py | 26 + labertasche/blueprints/__init__.py | 12 + labertasche/blueprints/bp_comments.py | 189 + labertasche/blueprints/bp_dashboard.py | 201 + labertasche/blueprints/bp_login.py | 46 + labertasche/database/__init__.py | 12 + labertasche/helper/__init__.py | 190 + labertasche/mail/__init__.py | 100 + labertasche/models/__init__.py | 11 + labertasche/models/t_comments.py | 34 + labertasche/models/t_emails.py | 23 + labertasche/models/t_location.py | 21 + labertasche/settings/__init__.py | 30 + mail_credentials.json | 9 + server.py | 75 + server.wsgi | 16 + static/css/Chart.min.css | 1 + static/css/labertasche.css | 10168 ++++++++++++++++ static/css/open-sans-v18-latin-700.woff2 | Bin 0 -> 15056 bytes .../css/open-sans-v18-latin-700italic.woff2 | Bin 0 -> 13880 bytes static/css/open-sans-v18-latin-italic.woff2 | Bin 0 -> 13780 bytes static/css/open-sans-v18-latin-regular.woff2 | Bin 0 -> 14380 bytes static/css/sass/bulma/base/_all.sass | 5 + static/css/sass/bulma/base/generic.sass | 143 + static/css/sass/bulma/base/helpers.sass | 1 + static/css/sass/bulma/base/minireset.sass | 79 + static/css/sass/bulma/components/_all.sass | 15 + .../css/sass/bulma/components/breadcrumb.sass | 75 + static/css/sass/bulma/components/card.sass | 83 + .../css/sass/bulma/components/dropdown.sass | 81 + static/css/sass/bulma/components/level.sass | 77 + static/css/sass/bulma/components/media.sass | 52 + static/css/sass/bulma/components/menu.sass | 57 + static/css/sass/bulma/components/message.sass | 99 + static/css/sass/bulma/components/modal.sass | 115 + static/css/sass/bulma/components/navbar.sass | 443 + .../css/sass/bulma/components/pagination.sass | 150 + static/css/sass/bulma/components/panel.sass | 119 + static/css/sass/bulma/components/tabs.sass | 174 + static/css/sass/bulma/elements/_all.sass | 16 + static/css/sass/bulma/elements/box.sass | 24 + static/css/sass/bulma/elements/button.sass | 325 + static/css/sass/bulma/elements/container.sass | 27 + static/css/sass/bulma/elements/content.sass | 155 + static/css/sass/bulma/elements/form.sass | 1 + static/css/sass/bulma/elements/icon.sass | 21 + static/css/sass/bulma/elements/image.sass | 71 + .../css/sass/bulma/elements/notification.sass | 50 + static/css/sass/bulma/elements/other.sass | 39 + static/css/sass/bulma/elements/progress.sass | 71 + static/css/sass/bulma/elements/table.sass | 131 + static/css/sass/bulma/elements/tag.sass | 138 + static/css/sass/bulma/elements/title.sass | 70 + static/css/sass/bulma/form/_all.sass | 9 + .../css/sass/bulma/form/checkbox-radio.sass | 22 + static/css/sass/bulma/form/file.sass | 182 + .../css/sass/bulma/form/input-textarea.sass | 66 + static/css/sass/bulma/form/select.sass | 87 + static/css/sass/bulma/form/shared.sass | 57 + static/css/sass/bulma/form/tools.sass | 215 + static/css/sass/bulma/grid/_all.sass | 5 + static/css/sass/bulma/grid/columns.sass | 504 + static/css/sass/bulma/grid/tiles.sass | 34 + static/css/sass/bulma/helpers/_all.sass | 12 + static/css/sass/bulma/helpers/color.sass | 37 + static/css/sass/bulma/helpers/flexbox.sass | 35 + static/css/sass/bulma/helpers/float.sass | 8 + static/css/sass/bulma/helpers/other.sass | 11 + static/css/sass/bulma/helpers/overflow.sass | 2 + static/css/sass/bulma/helpers/position.sass | 5 + static/css/sass/bulma/helpers/spacing.sass | 31 + static/css/sass/bulma/helpers/typography.sass | 98 + static/css/sass/bulma/helpers/visibility.sass | 122 + static/css/sass/bulma/layout/_all.sass | 6 + static/css/sass/bulma/layout/footer.sass | 9 + static/css/sass/bulma/layout/hero.sass | 147 + static/css/sass/bulma/layout/section.sass | 13 + static/css/sass/bulma/utilities/_all.sass | 9 + .../css/sass/bulma/utilities/animations.sass | 5 + static/css/sass/bulma/utilities/controls.sass | 50 + .../bulma/utilities/derived-variables.sass | 107 + .../css/sass/bulma/utilities/functions.sass | 115 + .../bulma/utilities/initial-variables.sass | 78 + static/css/sass/bulma/utilities/mixins.sass | 285 + static/css/sass/labertasche.scss | 87 + static/css/sass/sass-watch.cmd | 1 + static/css/sass/triangle.scss | 86 + static/js/Chart.bundle.min.js | 7 + static/js/dashboard.js | 21 + templates/base.html | 53 + templates/dashboard.html | 63 + templates/login.html | 58 + templates/manage-comments.html | 78 + templates/manage_mail_addresses.html | 63 + templates/review-spam.html | 78 + 106 files changed, 17627 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE.md create mode 100644 Pipfile create mode 100644 Pipfile.lock create mode 100644 README.md create mode 100644 db/keep create mode 100644 docs/apache-config.md create mode 100644 docs/flow-chart.drawio create mode 100644 docs/flow-chart.png create mode 100644 js/labertasche.js create mode 100644 labertasche.yaml create mode 100644 labertasche/__init__.py create mode 100644 labertasche/blueprints/__init__.py create mode 100644 labertasche/blueprints/bp_comments.py create mode 100644 labertasche/blueprints/bp_dashboard.py create mode 100644 labertasche/blueprints/bp_login.py create mode 100644 labertasche/database/__init__.py create mode 100644 labertasche/helper/__init__.py create mode 100644 labertasche/mail/__init__.py create mode 100644 labertasche/models/__init__.py create mode 100644 labertasche/models/t_comments.py create mode 100644 labertasche/models/t_emails.py create mode 100644 labertasche/models/t_location.py create mode 100644 labertasche/settings/__init__.py create mode 100644 mail_credentials.json create mode 100644 server.py create mode 100644 server.wsgi create mode 100644 static/css/Chart.min.css create mode 100644 static/css/labertasche.css create mode 100644 static/css/open-sans-v18-latin-700.woff2 create mode 100644 static/css/open-sans-v18-latin-700italic.woff2 create mode 100644 static/css/open-sans-v18-latin-italic.woff2 create mode 100644 static/css/open-sans-v18-latin-regular.woff2 create mode 100644 static/css/sass/bulma/base/_all.sass create mode 100644 static/css/sass/bulma/base/generic.sass create mode 100644 static/css/sass/bulma/base/helpers.sass create mode 100644 static/css/sass/bulma/base/minireset.sass create mode 100644 static/css/sass/bulma/components/_all.sass create mode 100644 static/css/sass/bulma/components/breadcrumb.sass create mode 100644 static/css/sass/bulma/components/card.sass create mode 100644 static/css/sass/bulma/components/dropdown.sass create mode 100644 static/css/sass/bulma/components/level.sass create mode 100644 static/css/sass/bulma/components/media.sass create mode 100644 static/css/sass/bulma/components/menu.sass create mode 100644 static/css/sass/bulma/components/message.sass create mode 100644 static/css/sass/bulma/components/modal.sass create mode 100644 static/css/sass/bulma/components/navbar.sass create mode 100644 static/css/sass/bulma/components/pagination.sass create mode 100644 static/css/sass/bulma/components/panel.sass create mode 100644 static/css/sass/bulma/components/tabs.sass create mode 100644 static/css/sass/bulma/elements/_all.sass create mode 100644 static/css/sass/bulma/elements/box.sass create mode 100644 static/css/sass/bulma/elements/button.sass create mode 100644 static/css/sass/bulma/elements/container.sass create mode 100644 static/css/sass/bulma/elements/content.sass create mode 100644 static/css/sass/bulma/elements/form.sass create mode 100644 static/css/sass/bulma/elements/icon.sass create mode 100644 static/css/sass/bulma/elements/image.sass create mode 100644 static/css/sass/bulma/elements/notification.sass create mode 100644 static/css/sass/bulma/elements/other.sass create mode 100644 static/css/sass/bulma/elements/progress.sass create mode 100644 static/css/sass/bulma/elements/table.sass create mode 100644 static/css/sass/bulma/elements/tag.sass create mode 100644 static/css/sass/bulma/elements/title.sass create mode 100644 static/css/sass/bulma/form/_all.sass create mode 100644 static/css/sass/bulma/form/checkbox-radio.sass create mode 100644 static/css/sass/bulma/form/file.sass create mode 100644 static/css/sass/bulma/form/input-textarea.sass create mode 100644 static/css/sass/bulma/form/select.sass create mode 100644 static/css/sass/bulma/form/shared.sass create mode 100644 static/css/sass/bulma/form/tools.sass create mode 100644 static/css/sass/bulma/grid/_all.sass create mode 100644 static/css/sass/bulma/grid/columns.sass create mode 100644 static/css/sass/bulma/grid/tiles.sass create mode 100644 static/css/sass/bulma/helpers/_all.sass create mode 100644 static/css/sass/bulma/helpers/color.sass create mode 100644 static/css/sass/bulma/helpers/flexbox.sass create mode 100644 static/css/sass/bulma/helpers/float.sass create mode 100644 static/css/sass/bulma/helpers/other.sass create mode 100644 static/css/sass/bulma/helpers/overflow.sass create mode 100644 static/css/sass/bulma/helpers/position.sass create mode 100644 static/css/sass/bulma/helpers/spacing.sass create mode 100644 static/css/sass/bulma/helpers/typography.sass create mode 100644 static/css/sass/bulma/helpers/visibility.sass create mode 100644 static/css/sass/bulma/layout/_all.sass create mode 100644 static/css/sass/bulma/layout/footer.sass create mode 100644 static/css/sass/bulma/layout/hero.sass create mode 100644 static/css/sass/bulma/layout/section.sass create mode 100644 static/css/sass/bulma/utilities/_all.sass create mode 100644 static/css/sass/bulma/utilities/animations.sass create mode 100644 static/css/sass/bulma/utilities/controls.sass create mode 100644 static/css/sass/bulma/utilities/derived-variables.sass create mode 100644 static/css/sass/bulma/utilities/functions.sass create mode 100644 static/css/sass/bulma/utilities/initial-variables.sass create mode 100644 static/css/sass/bulma/utilities/mixins.sass create mode 100644 static/css/sass/labertasche.scss create mode 100644 static/css/sass/sass-watch.cmd create mode 100644 static/css/sass/triangle.scss create mode 100644 static/js/Chart.bundle.min.js create mode 100644 static/js/dashboard.js create mode 100644 templates/base.html create mode 100644 templates/dashboard.html create mode 100644 templates/login.html create mode 100644 templates/manage-comments.html create mode 100644 templates/manage_mail_addresses.html create mode 100644 templates/review-spam.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..53d298f --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.idea +__pycache__/ +venv +db/labertasche.db-shm +db/labertasche.db-wal +output +/output/ +*.sql diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..68322a1 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2020 Domeniko Gentner + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..1ac692e --- /dev/null +++ b/Pipfile @@ -0,0 +1,20 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] + +[packages] +flask = "*" +pyyaml = "*" +flask-sqlalchemy = "*" +flask-cors = "*" +antispam = "*" +flask-login = "*" +sqlalchemy = "*" +requests = "*" +py3-validate-email = "*" + +[requires] +python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..8c7a9d0 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,251 @@ +{ + "_meta": { + "hash": { + "sha256": "57134ef6f8a30aa46c1ab6263e62e14edbb27d6df2911fc6b2140dde8c49d27c" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.8" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "antispam": { + "hashes": [ + "sha256:e188b424ea9b76c408a592a5ff60eb1280f45f26b404db4d5e96123f485de39b" + ], + "index": "pypi", + "version": "==0.0.10" + }, + "certifi": { + "hashes": [ + "sha256:1f422849db327d534e3d0c5f02a263458c3955ec0aae4ff09b95f195c59f4edd", + "sha256:f05def092c44fbf25834a51509ef6e631dc19765ab8a57b4e7ab85531f0a9cf4" + ], + "version": "==2020.11.8" + }, + "chardet": { + "hashes": [ + "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", + "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + ], + "version": "==3.0.4" + }, + "click": { + "hashes": [ + "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", + "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" + ], + "version": "==7.1.2" + }, + "dnspython": { + "hashes": [ + "sha256:044af09374469c3a39eeea1a146e8cac27daec951f1f1f157b1962fc7cb9d1b7", + "sha256:40bb3c24b9d4ec12500f0124288a65df232a3aa749bb0c39734b782873a2544d" + ], + "version": "==2.0.0" + }, + "filelock": { + "hashes": [ + "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", + "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" + ], + "version": "==3.0.12" + }, + "flask": { + "hashes": [ + "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060", + "sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557" + ], + "index": "pypi", + "version": "==1.1.2" + }, + "flask-cors": { + "hashes": [ + "sha256:6bcfc100288c5d1bcb1dbb854babd59beee622ffd321e444b05f24d6d58466b8", + "sha256:cee4480aaee421ed029eaa788f4049e3e26d15b5affb6a880dade6bafad38324" + ], + "index": "pypi", + "version": "==3.0.9" + }, + "flask-login": { + "hashes": [ + "sha256:6d33aef15b5bcead780acc339464aae8a6e28f13c90d8b1cf9de8b549d1c0b4b", + "sha256:7451b5001e17837ba58945aead261ba425fdf7b4f0448777e597ddab39f4fba0" + ], + "index": "pypi", + "version": "==0.5.0" + }, + "flask-sqlalchemy": { + "hashes": [ + "sha256:05b31d2034dd3f2a685cbbae4cfc4ed906b2a733cff7964ada450fd5e462b84e", + "sha256:bfc7150eaf809b1c283879302f04c42791136060c6eeb12c0c6674fb1291fae5" + ], + "index": "pypi", + "version": "==2.4.4" + }, + "idna": { + "hashes": [ + "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", + "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" + ], + "version": "==2.10" + }, + "itsdangerous": { + "hashes": [ + "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19", + "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749" + ], + "version": "==1.1.0" + }, + "jinja2": { + "hashes": [ + "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0", + "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035" + ], + "version": "==2.11.2" + }, + "markupsafe": { + "hashes": [ + "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", + "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", + "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", + "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", + "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42", + "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", + "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", + "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", + "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", + "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", + "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", + "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b", + "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", + "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15", + "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", + "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", + "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", + "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", + "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", + "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", + "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", + "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", + "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", + "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", + "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", + "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", + "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", + "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", + "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", + "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", + "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2", + "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7", + "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be" + ], + "version": "==1.1.1" + }, + "py3-validate-email": { + "hashes": [ + "sha256:3bbb264b49c0ae09afdb2738956f00b0e8dd7e079e2d079b2e9b6688de474d28" + ], + "index": "pypi", + "version": "==0.2.10" + }, + "pyyaml": { + "hashes": [ + "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97", + "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76", + "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2", + "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648", + "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf", + "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f", + "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2", + "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee", + "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d", + "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c", + "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a" + ], + "index": "pypi", + "version": "==5.3.1" + }, + "requests": { + "hashes": [ + "sha256:7f1a0b932f4a60a1a65caa4263921bb7d9ee911957e0ae4a23a6dd08185ad5f8", + "sha256:e786fa28d8c9154e6a4de5d46a1d921b8749f8b74e28bde23768e5e16eece998" + ], + "index": "pypi", + "version": "==2.25.0" + }, + "six": { + "hashes": [ + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + ], + "version": "==1.15.0" + }, + "sqlalchemy": { + "hashes": [ + "sha256:009e8388d4d551a2107632921320886650b46332f61dc935e70c8bcf37d8e0d6", + "sha256:0157c269701d88f5faf1fa0e4560e4d814f210c01a5b55df3cab95e9346a8bcc", + "sha256:0a92745bb1ebbcb3985ed7bda379b94627f0edbc6c82e9e4bac4fb5647ae609a", + "sha256:0cca1844ba870e81c03633a99aa3dc62256fb96323431a5dec7d4e503c26372d", + "sha256:166917a729b9226decff29416f212c516227c2eb8a9c9f920d69ced24e30109f", + "sha256:1f5f369202912be72fdf9a8f25067a5ece31a2b38507bb869306f173336348da", + "sha256:2909dffe5c9a615b7e6c92d1ac2d31e3026dc436440a4f750f4749d114d88ceb", + "sha256:2b5dafed97f778e9901b79cc01b88d39c605e0545b4541f2551a2fd785adc15b", + "sha256:2e9bd5b23bba8ae8ce4219c9333974ff5e103c857d9ff0e4b73dc4cb244c7d86", + "sha256:3aa6d45e149a16aa1f0c46816397e12313d5e37f22205c26e06975e150ffcf2a", + "sha256:4bdbdb8ca577c6c366d15791747c1de6ab14529115a2eb52774240c412a7b403", + "sha256:53fd857c6c8ffc0aa6a5a3a2619f6a74247e42ec9e46b836a8ffa4abe7aab327", + "sha256:5cdfe54c1e37279dc70d92815464b77cd8ee30725adc9350f06074f91dbfeed2", + "sha256:5d92c18458a4aa27497a986038d5d797b5279268a2de303cd00910658e8d149c", + "sha256:632b32183c0cb0053194a4085c304bc2320e5299f77e3024556fa2aa395c2a8b", + "sha256:7c735c7a6db8ee9554a3935e741cf288f7dcbe8706320251eb38c412e6a4281d", + "sha256:7cd40cb4bc50d9e87b3540b23df6e6b24821ba7e1f305c1492b0806c33dbdbec", + "sha256:84f0ac4a09971536b38cc5d515d6add7926a7e13baa25135a1dbb6afa351a376", + "sha256:8dcbf377529a9af167cbfc5b8acec0fadd7c2357fc282a1494c222d3abfc9629", + "sha256:950f0e17ffba7a7ceb0dd056567bc5ade22a11a75920b0e8298865dc28c0eff6", + "sha256:9e379674728f43a0cd95c423ac0e95262500f9bfd81d33b999daa8ea1756d162", + "sha256:b15002b9788ffe84e42baffc334739d3b68008a973d65fad0a410ca5d0531980", + "sha256:b6f036ecc017ec2e2cc2a40615b41850dc7aaaea6a932628c0afc73ab98ba3fb", + "sha256:bad73f9888d30f9e1d57ac8829f8a12091bdee4949b91db279569774a866a18e", + "sha256:bbc58fca72ce45a64bb02b87f73df58e29848b693869e58bd890b2ddbb42d83b", + "sha256:bca4d367a725694dae3dfdc86cf1d1622b9f414e70bd19651f5ac4fb3aa96d61", + "sha256:be41d5de7a8e241864189b7530ca4aaf56a5204332caa70555c2d96379e18079", + "sha256:bf53d8dddfc3e53a5bda65f7f4aa40fae306843641e3e8e701c18a5609471edf", + "sha256:c092fe282de83d48e64d306b4bce03114859cdbfe19bf8a978a78a0d44ddadb1", + "sha256:c3ab23ee9674336654bf9cac30eb75ac6acb9150dc4b1391bec533a7a4126471", + "sha256:ce64a44c867d128ab8e675f587aae7f61bd2db836a3c4ba522d884cd7c298a77", + "sha256:d05cef4a164b44ffda58200efcb22355350979e000828479971ebca49b82ddb1", + "sha256:d2f25c7f410338d31666d7ddedfa67570900e248b940d186b48461bd4e5569a1", + "sha256:d3b709d64b5cf064972b3763b47139e4a0dc4ae28a36437757f7663f67b99710", + "sha256:e32e3455db14602b6117f0f422f46bc297a3853ae2c322ecd1e2c4c04daf6ed5", + "sha256:ed53209b5f0f383acb49a927179fa51a6e2259878e164273ebc6815f3a752465", + "sha256:f605f348f4e6a2ba00acb3399c71d213b92f27f2383fc4abebf7a37368c12142", + "sha256:fcdb3755a7c355bc29df1b5e6fb8226d5c8b90551d202d69d0076a8a5649d68b" + ], + "index": "pypi", + "version": "==1.3.20" + }, + "urllib3": { + "hashes": [ + "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", + "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" + ], + "version": "==1.26.2" + }, + "werkzeug": { + "hashes": [ + "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43", + "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c" + ], + "version": "==1.0.1" + } + }, + "develop": {} +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..454a14b --- /dev/null +++ b/README.md @@ -0,0 +1,130 @@ +# Labertasche + +A comment system for Hugo, written in Python (and Javascript). + +## Feature Set + +* Written in Python, utilizing Flask + * Robust Database handling by utilizing SQLAlchemy, which supports all big database engines + * flask-cors for robust security +* Uses Javascript to send comment via POST to the comment server + * Has callbacks for implementing your own notifications during the posting process. +* No IP being logged +* Email confirmation +* EMail Blocklist +* Only outputs JSON, so templates can be done independently, enhancing customization. Using the comments via a partial + template in Hugo is the recommended way. See below for integration code. + + +## Requirements + +* A public webserver capable of running Apache/NGINX and/or gunicorn. This server does not need to be the same as the + server running the site, but it must have access to your CI/CD chain. Same server is of course easier to implement. + + +## How does it work? + +A picture often says more than a thousand words: + +![flow chart image](/docs/flow-chart.png "Flow Chart") + +In some words, the user sends the comment from your site to the comment system, the comment system does the validation +and confirmation. Then, a json is put into the data directory from where you can load it via Hugo and generate your +template. + +## Setup + +Run `ssh://git@git.tuxstash.de:1235/gothseidank/labertasche.git` in the directory where you wish to host the comment +system. For example, `/var/www/html`, I also recommend making use of `/srv/` or `/opt/`. It depends on you. + +When everything is downloaded, create the directory `/etc/labertasche`. In this directory, we need 2 files: + +* labertasche.yaml - you can find an example in the root directory. +* mail_credentials.json - you can find an example in the root directory. + +Copy these files from the root directory of this app to the folder `/etc/labertasche`. Make sure to set ownership for +your user that runs your server later. I always do `chmown user:www-data`, so Apache has only group rights and enable read-only +for the Apache user. + +Make sure to read the config and replace the values as needed. The mail configuration should need no explanation, +`labertasche.yaml` has comments. Feel free to bug about more documentation regarding this. Pay special attention to +secrets and passwords. + +Now, for the server there are several options. I personally always host flask apps with Apache and mod_wsgi. +The config looks like this: + +* [Apache](docs/apache-config.md) + +Other options: + +* [gunicorn](https://gunicorn.org/https://gunicorn.org/) + Apache/Nginx with Proxy Pass + +Once you can see the administrative page, you can start integrating it into Hugo. + +## Integrating it into Hugo + +### Javascript + +In the project folder is a small javascript file. You will need to load this into Hugo, I suggest using Hugo's asset +pipeline to integrate it into your site. One thing is important to know: this script only does the bare bones post request +to your comment backend. Anything else must be done by yourself, but don't worry: The function is making use of a callback, +so you can control what happens during the various stages. + +TODO: Example using the javascript properly + +### Hugo templates + +Remember the `labertasche.yaml` file? It asked you where the data folder of Hugo is. What this program does, is to place +various json files into that folder, in folders that describe your sections. So, for each category/section of your blog +where comments can be placed, one folder will be made. And for each page within that section it generates a json file. + +Now create a new partial called "comments.html" (or something else). Within that template the following structure is needed: + +``` +{{ $location := .Scratch.Get "location" }} +{{ if (fileExists $location ) }} + {{ $dataJ := getJSON $location }} + {{ range $dataJ.comments }} + + {{ end }} +{{ end }} +``` + +This loads the json depending on the rel url and walks the list of comments. You can then use the following variables to +access the per-comment data: + +* .content => The body of the message the user has sent +* .email => The mail the person used to send the mail +* .created_on => The date and time the comment was posted +* .comment_id => The comment id, great for making anchors +* .gravatar => The md5 hash of the mail for gravatar, if caching is on, prepend e.g. `/images`, otherwise use the gravatar url to integrate it. + +You can style around them as needed. You have free reign. + +Of course you will also need a few inputs and a button that submits the data. +Here is a base skeleton to start out: + +``` +
+ + + +
+``` + +Please take note of the `id` on each element, these are mandatory, as well as the function call for the `onclick` event. +Again, style as needed and add more Javascript to your gusto. + + +Inside your template `single.html`, or wherever you want to place comments, you qwill also need this: + +``` +{{ $file := replaceRE "^(.*)[\\/]$" "data$1.json" .Page.RelPermalink }} +{{ .Scratch.Set "location" $file }} +{{ partial "partials/comments" . }} +``` + +After that and configuring labertasche correctly, the json files should be placed in your data folder and all you got +to do after that, is to rebuild Hugo and the new comment should appear. + + diff --git a/db/keep b/db/keep new file mode 100644 index 0000000..e69de29 diff --git a/docs/apache-config.md b/docs/apache-config.md new file mode 100644 index 0000000..1a0c282 --- /dev/null +++ b/docs/apache-config.md @@ -0,0 +1,35 @@ +This is an example server config for Apache Webserver with mod_wsgi. +If you wish to use pipenv, then please take also a look at the +[WSGIPythonHome](https://modwsgi.readthedocs.io/en/develop/configuration-directives/WSGIPythonHome.html) +directive. + +``` + + ServerAdmin server@example.com + ServerName comments.example.com + Redirect permanent / https://comments.example.com + + + + + ServerAdmin server@example.com + ServerName comments.example.com + + WSGIDaemonProcess laberflask user=user group=group threads=2 + WSGIScriptAlias / /var/www/html/labertasche/server.wsgi + + SSLCertificateFile /etc/letsencrypt/live/comments.example.com/fullchain.pem + SSLCertificateKeyFile /etc/letsencrypt/live/comments.example.com/privkey.pem + Include /etc/letsencrypt/options-ssl-apache.conf + + + WSGIProcessGroup laberflask + WSGIApplicationGroup %{GLOBAL} + Options -Indexes + AllowOverride None + Require all granted + + ErrorLog ${APACHE_LOG_DIR}/laberflask.error.log + CustomLog /dev/null common + +``` diff --git a/docs/flow-chart.drawio b/docs/flow-chart.drawio new file mode 100644 index 0000000..69f0d88 --- /dev/null +++ b/docs/flow-chart.drawio @@ -0,0 +1 @@ +7Vttc9o4EP41fMyNLdnGfIVAm14uyZX00ny6kW2BXYTFWSJAf/1JtmxeRBsnBQSezjCMtJZsa3ef1b7ILdibLj9kaBb/RSNMWsCKli143QLAdgBoyZ8VrQpK21OEcZZEatCaMEy+Y0W0FHWeRJhtDeSUEp7MtokhTVMc8i0ayjK62B42omT7qTM0xhphGCKiU5+SiMcF1QftNf0jTsZx+WTb6xRXpqgcrFbCYhTRxQYJ9luwl1HKi9Z02cNEMq/ky9PN6oncTrwPn/5m/6Ev3T8f7/65Km42eMuUagkZTvm7b02GV3Nr6PUG7FO3C1CPsvbkylFL46uSXzgS7FNdmvGYjmmKSH9N7WZ0nkZY3tUSvfWYW0pngmgL4jfM+UrpAppzKkgxnxJ1FS8T/lVNl+1n2f7DVb3r5cal61XZSXm2+lreQHY2ZsnuelreK+cV65OL2lGHV3ipxjE6z0L8EwYq3eAoG2P+k3GgUhiBNEynWLykmJdhgnjysv1ySKn8uBq3FqtoKMm+QcqeUSlXkn3euPKKlDcE+7wl1/OWsmtSyuolXxCZqycNCGITQRri7AVnmhKsRSylsogTjoczlDNiITaDbXGOEkJ6lNAsnwuxHbm4LeiMZ3SCN650vDZEXiUU8WCOl+8Qi85GdRfgq5WqHclR3cXavNueosUbpr2cdnDGA43xn7FYNsOC+JDR5aopnHfPjPG2rXH2t2F7k2Fzaxo229qvGKexbK4GMHGbkE6ngglMNFO8aAGPiAV0A2HmvLFsPdwPHw8KvAhhfxTuA54X+jgYndDkVTAzBz2jnqPdeofnaLXOynO06zoVNjSJPdu9lBDhfARm1Nm3dT8wYXJ9MzRtwYFuEmM6DebszeZwNBqBcK85jLzAc4/ph0CwbQ4rM7dhDv1TWkMImu6I5L0HnCWCYTg7FeJATcQBzyji9ADgjh4MZ8Lb9yNnH858EEDvmDizzw5nF+PwHx0asO5m5BuFBtSg8YzZ4fYgP8T796DAdx3XOiI23HPDRpnRPn9sXNYe5F3GHuRpQGPidcUs9m/u+cmyi/zLxGUtVk5SJgDSkkWPJH9Umg8OCA0nJGFcB+yW3lwMaHcdR88yHUcDoztaI+Jovy5AjeawgNkQ4T2CPrNSW21B2x2jltjXLHEefyepfBohdCEECqzcrDYjHN91hZw9hYHTukKw6a7Q0bHWqYs1s15PR8NaMyJv6J0bpMymgRsAKVA3fQwco36Knj5uSMTu7Z4bMI4pv+mYMhKxA6cu0IzuXeVrbgAt9w51qP1CrG1wC/Occ4u14eWcgxOdk8OmbqILGj3l5hgV4psSJnuEeK5JlNrCd8w6J3qW8+Zu2P/8KGg3d4/3embzuqupC4vRTDbDFUmEVmTwdasaFPpzG1QEFE7GuVbdz7m4DVZ0ViiQ7eqm2OC5Pbs8xFGd4ddNcWePJa7qf4dH8e8I/RcRC+uGE9BoARDq4UR/OaN5sSGvMXycj2nxYGB9Y1QmyZKR+EupHFLUMFB1fuWgvpG583zuTnjf3lM8PLFvpJ+xHOA8USlNHU6jprB+JwjsGD9J6ZgtDDTBFNYtDDg/UI0TmUK9MKAMHqEoKrC2KvjCE0SaArhdW9cBxhFna4LozhMiBfCEAyb4KpUpFvwex6LVEwMGvZuDysPkRxw78rAt499xOEaTy00ogjt1c17QaBHc0XNeX5j8Mk1+/jtKsinLm/mHHaU5LI6kHBB7oxH2flApbXcC66jnT+zT+X2iu/42Ob+28YU37P8P \ No newline at end of file diff --git a/docs/flow-chart.png b/docs/flow-chart.png new file mode 100644 index 0000000000000000000000000000000000000000..cf071bae5d07448c2c43bf34fbafe14cc85c5f61 GIT binary patch literal 54468 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 b=W30~q~ejqP|m6);N$D_qj%MJp~?RQklBFt literal 0 HcmV?d00001 diff --git a/js/labertasche.js b/js/labertasche.js new file mode 100644 index 0000000..68cf007 --- /dev/null +++ b/js/labertasche.js @@ -0,0 +1,84 @@ +//********************************************************************************** +// * _author : Domeniko Gentner +// * _mail : code@tuxstash.de +// * _repo : https://git.tuxstash.de/gothseidank/labertasche +// * _license : This project is under MIT License +// *********************************************************************************/ + +/* + Callback example. + Possible messages: + + post-min-length + post-max-length + post-invalid-json + post-duplicate + post-internal-server-error + post-success + post-before-fetch + +function labertasche_callback(state) +{ + if (state === "post-before-fetch"){ + + } + if (state === "post-min-length"){ + + } + if (state === "post-success"){ + + } + if (state === "post-fetch-exception" || state === "post-internal-server-error"){ + + } + if (state === "post-invalid-email"){ + + } +} +*/ + +function labertasche_post_comment(btn, callback) +{ + let remote = document.getElementById('labertasche-comment-section').dataset.remote; + let comment = document.getElementById('labertasche-text').value; + let mail = document.getElementById('labertasche-mail').value; + + if (mail.length <= 0 || comment.length < 40){ + callback('post-min-length'); + if(btn) { + btn.preventDefault(); + } + return + } + + callback('post-before-fetch'); + fetch(remote, + { + mode:"cors", + headers: { + 'Access-Control-Allow-Origin':'*', + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + method: "POST", + // use real location + body: JSON.stringify({ "email": mail, + "content": comment, + "location": window.location.pathname, + "replied_to": null // TODO: future feature: replies? + }) + }) + .then(async function(response){ + let result = await response.json(); + callback(result['status']); + }) + .catch(function(exc){ + console.log(exc); + callback('post-fetch-exception'); + }) + + // Don't reload the page + if (btn) { + btn.preventDefault(); + } +} diff --git a/labertasche.yaml b/labertasche.yaml new file mode 100644 index 0000000..e61e3e2 --- /dev/null +++ b/labertasche.yaml @@ -0,0 +1,44 @@ +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ + +system: + web_url: "http://dev.localhost:1314/" # Url where the comment system is served + blog_url: "http://dev.localhost:1313/" # Url of your website + cookie-domain: "dev.localhost" # Url where the comment system is served + database_uri: "sqlite:///db/labertasche.db" # Database URI. See documentation. Default is sqlite. + secret: "6Gxvb52bIJCm2vfDsmWKzShKp1omrzVG" # CHANGE ME! THIS IS IMPORTANT! + output: "../../web/tuxstash.de/data/" # Base path for the output json + debug: false # Leave this as is, this is for development. + send_otp_to_publish: true # Disables confirmation w/ OTP via mail + +gravatar: + cache: true # Enable caching of gravatar images + static_dir: "../../web/tuxstash.de/static/images/gravatar/" # Where to store cached images + size: 256 # only applies if images are cached, + # otherwise use ?s=size at the end of the gravatar url + +dashboard: + username: "admin" # CHANGE ME! + password: "admin" # CHANGE ME! + +addons: + smileys: true # Enable smiley replacements, set to false if unwanted + +# https://www.w3schools.com/charsets/ref_emoji_smileys.asp +smileys: + ":)": "😀" + ":d": "😁" + ":D": "😁" + ";)": "😉" + ":p": "😋" + ":P": "😋" + ":8": "😎" + "(:": "🙃" + "$)": "🤑" + ":o": "😲" + ":O": "😲" + diff --git a/labertasche/__init__.py b/labertasche/__init__.py new file mode 100644 index 0000000..64d0aeb --- /dev/null +++ b/labertasche/__init__.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ + +from labertasche import ( + models, + database, + blueprints, + helper, + mail, + settings +) + +_all_ = [ + models, + database, + blueprints, + helper, + mail, + settings +] diff --git a/labertasche/blueprints/__init__.py b/labertasche/blueprints/__init__.py new file mode 100644 index 0000000..6dd3415 --- /dev/null +++ b/labertasche/blueprints/__init__.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +from .bp_comments import bp_comments +from .bp_login import bp_login +from .bp_dashboard import bp_dashboard + diff --git a/labertasche/blueprints/bp_comments.py b/labertasche/blueprints/bp_comments.py new file mode 100644 index 0000000..239f494 --- /dev/null +++ b/labertasche/blueprints/bp_comments.py @@ -0,0 +1,189 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +import re +from sys import stderr +from antispam import is_spam as spam, score +from flask import Blueprint, jsonify, request, make_response, redirect +from flask_cors import cross_origin +from sqlalchemy import exc +from labertasche.database import labertasche_db as db +from labertasche.helper import is_valid_json, default_timestamp, check_gravatar, export_location +from labertasche.mail import mail +from labertasche.models import TComments, TLocation, TEmail +from labertasche.settings import Settings +from secrets import compare_digest + + +# Blueprint +bp_comments = Blueprint("bp_comments", __name__, url_prefix='/comments') + + +# Route for adding new comments +@bp_comments.route("/new", methods=['POST']) +@cross_origin() +def check_and_insert_new_comment(): + if request.method == 'POST': + settings = Settings() + smileys = settings.smileys + addons = settings.addons + sender = mail() + + # Check length of content and abort if too long or too short + if request.content_length > 2048: + return make_response(jsonify(status="post-max-length"), 400) + if request.content_length <= 0: + return make_response(jsonify(status="post-min-length"), 400) + + # get json from request + new_comment = request.json + + # save and sanitize location, nice try, bitch + location = new_comment['location'].strip().replace('.', '') + + # Validate json and check length again + if not is_valid_json(new_comment) or \ + len(new_comment['content']) < 40 or \ + len(new_comment['email']) < 5: + print("too short", file=stderr) + return make_response(jsonify(status='post-invalid-json'), 400) + + # Strip any HTML from message body + tags = re.compile('<.*?>') + special = re.compile('[&].*[;]') + content = re.sub(tags, '', new_comment['content']).strip() + content = re.sub(special, '', content).strip() + + # Convert smileys + if addons['smileys']: + for key, value in smileys.items(): + content = content.replace(key, value) + + # Update values + new_comment.update({"content": content}) + new_comment.update({"email": new_comment['email'].strip()}) + new_comment.update({"location": location}) + new_comment.update({"replied_to": None}) # Not (yet?) implemented + + # Check mail + if not sender.validate(new_comment['email']): + return make_response(jsonify(status='post-invalid-email'), 400) + + # check for spam + is_spam = spam(new_comment['content']) + has_score = score(new_comment['content']) + + # Insert mail into spam if detected, allow if listed as such + email = db.session.query(TEmail).filter(TEmail.email == new_comment['email']).first() + if not email: + if is_spam: + entry = { + "email": new_comment['email'], + "is_blocked": True, + "is_allowed": False + } + db.session.add(TEmail(**entry)) + if email: + if not email.is_allowed: + is_spam = True + if email.is_allowed: + is_spam = False + + # Look for location + loc_query = db.session.query(TLocation)\ + .filter(TLocation.location == new_comment['location']) + + if loc_query.first(): + # Set existing location id + new_comment.update({'location_id': loc_query.first().id_location}) + # TComments does not have this field + new_comment.pop("location") + else: + # Insert new location + loc_table = { + 'location': new_comment['location'] + } + new_loc = TLocation(**loc_table) + db.session.add(new_loc) + db.session.flush() + db.session.refresh(new_loc) + new_comment.update({'location_id': new_loc.id_location}) + + # TComments does not have this field + new_comment.pop("location") + + # insert comment + try: + new_comment.update({"is_published": False}) + new_comment.update({"created_on": default_timestamp()}) + new_comment.update({"is_spam": is_spam}) + new_comment.update({"spam_score": has_score}) + new_comment.update({"gravatar": check_gravatar(new_comment['email'])}) + t_comment = TComments(**new_comment) + db.session.add(t_comment) + db.session.commit() + db.session.flush() + db.session.refresh(t_comment) + + # Send confirmation link and store returned value + hashes = sender.send_confirmation_link(new_comment['email']) + setattr(t_comment, "confirmation", hashes[0]) + setattr(t_comment, "deletion", hashes[1]) + db.session.commit() + + except exc.IntegrityError as e: + # Comment body exists, because content is unique + print(f"Duplicate from {request.environ['REMOTE_ADDR']}, error is:\n{e}", file=stderr) + return make_response(jsonify(status="post-duplicate"), 400) + + except Exception as e: # must be at bottom + # mail(f"check_and_insert_new_comment has thrown an error: {e}", ) + print(e, file=stderr) + return make_response(jsonify(status="post-internal-server-error"), 400) + + export_location(location) + return make_response(jsonify(status="post-success", comment_id=t_comment.comments_id), 200) + + +# Route for confirming comments +@bp_comments.route("/confirm/", methods=['GET']) +@cross_origin() +def check_confirmation_link(email_hash): + settings = Settings() + comment = db.session.query(TComments).filter(TComments.confirmation == email_hash).first() + if comment: + location = db.session.query(TLocation).filter(TLocation.id_location == comment.location_id).first() + if compare_digest(comment.confirmation, email_hash): + comment.confirmation = None + if not comment.is_spam: + setattr(comment, "is_published", True) + db.session.commit() + url = f"{settings.system['blog_url']}{location.location}#comment_{comment.comments_id}" + export_location(location.location) + return redirect(url) + + return redirect(f"{settings.system['blog_url']}?cnf=true") + + +# Route for deleting comments +@bp_comments.route("/delete/", methods=['GET']) +@cross_origin() +def check_deletion_link(email_hash): + settings = Settings() + query = db.session.query(TComments).filter(TComments.deletion == email_hash) + comment = query.first() + if comment: + location = db.session.query(TLocation).filter(TLocation.id_location == comment.location_id).first() + if compare_digest(comment.deletion, email_hash): + query.delete() + db.session.commit() + url = f"{settings.system['blog_url']}?deleted=true" + export_location(location.location) + return redirect(url) + + return redirect(f"{settings.system['blog_url']}?cnf=true") diff --git a/labertasche/blueprints/bp_dashboard.py b/labertasche/blueprints/bp_dashboard.py new file mode 100644 index 0000000..f488779 --- /dev/null +++ b/labertasche/blueprints/bp_dashboard.py @@ -0,0 +1,201 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +from flask import Blueprint, render_template, request, redirect +from flask_login import login_required +from labertasche.database import labertasche_db as db +from labertasche.models import TLocation, TComments, TEmail +from labertasche.helper import dates_of_the_week +from sqlalchemy import func +import re + +# Blueprint +bp_dashboard = Blueprint("bp_dashboard", __name__, url_prefix='/dashboard') + + +@bp_dashboard.route('/') +@login_required +def dashboard_index(): + dates = dates_of_the_week() + spam = list() + published = list() + unpublished = list() + for each in dates: + spam_comments = db.session.query(TComments).filter(func.DATE(TComments.created_on) == each.date())\ + .filter(TComments.is_spam == True).all() + + pub_comments = db.session.query(TComments).filter(func.DATE(TComments.created_on) == each.date()) \ + .filter(TComments.is_spam == False)\ + .filter(TComments.is_published == True).all() + + unpub_comments = db.session.query(TComments).filter(func.DATE(TComments.created_on) == each.date()) \ + .filter(TComments.is_spam == False)\ + .filter(TComments.is_published == False).all() + + published.append(len(pub_comments)) + spam.append(len(spam_comments)) + unpublished.append(len(unpub_comments)) + + return render_template('dashboard.html', dates=dates, spam=spam, published=published, unpublished=unpublished) + + +@bp_dashboard.route('/review-spam/', methods=["POST", "GET"]) +@bp_dashboard.route('/review-spam/', methods=["POST", "GET"]) +@login_required +def dashboard_review_spam(location=None): + all_locations = db.session.query(TLocation).all() + + # Check post + if request.method == "POST": + location = request.form.get('selected_location') + + # no parameters found + if location is None: + return render_template("review-spam.html", locations=all_locations, selected=location) + + try: + if int(location) >= 1: + spam_comments = db.session.query(TComments).filter(TComments.location_id == location)\ + .filter(TComments.is_spam == True) + return render_template("review-spam.html", locations=all_locations, selected=location, + spam_comments=spam_comments) + except ValueError: + pass + + return render_template("review-spam.html", locations=all_locations, selected=location) + + +@bp_dashboard.route('/manage-comments/', methods=["POST", "GET"]) +@bp_dashboard.route('/manage-comments/', methods=["POST", "GET"]) +@login_required +def dashboard_manage_regular_comments(location=None): + all_locations = db.session.query(TLocation).all() + + # Check post + if request.method == "POST": + location = request.form.get('selected_location') + + # no parameters found + if location is None: + return render_template("manage-comments.html", locations=all_locations, selected=location) + + try: + if int(location) >= 1: + spam_comments = db.session.query(TComments).filter(TComments.location_id == location) \ + .filter(TComments.is_spam == False) + return render_template("manage-comments.html", locations=all_locations, selected=location, + spam_comments=spam_comments) + except ValueError: + pass + + return render_template("manage-comments.html", locations=all_locations, selected=location) + + +@bp_dashboard.route('/manage-mail/') +@login_required +def dashboard_allow_email(): + addresses = db.session.query(TEmail).all() + return render_template("manage_mail_addresses.html", addresses=addresses) + + +@bp_dashboard.route('/toggle-mail-allowed/') +@login_required +def dashboard_allow_email_toggle(id_email): + address = db.session.query(TEmail).filter(TEmail.id_email == id_email).first() + if address: + setattr(address, "is_allowed", (not address.is_allowed)) + setattr(address, "is_blocked", (not address.is_blocked)) + db.session.commit() + return redirect(request.referrer) + + +@bp_dashboard.route('/reset-mail-reputation/') +@login_required +def dashboard_reset_mail_reputation(id_email): + db.session.query(TEmail).filter(TEmail.id_email == id_email).delete() + db.session.commit() + return redirect(request.referrer) + + +@bp_dashboard.route('/delete-comment//', methods=['GET']) +@login_required +def dashboard_review_spam_delete_comment(location_id, comment_id): + comment = db.session.query(TComments).filter(TComments.comments_id == comment_id).first() + db.session.delete(comment) + db.session.commit() + + # Remove after last slash, to keep the location but get rid of the comment id + url = re.match("^(.*[/])", request.referrer)[0] + return redirect(f"{url}/{location_id}") + + +@bp_dashboard.route('/allow-comment//', methods=['GET']) +@login_required +def dashboard_review_spam_allow_comment(comment_id, location_id): + comment = db.session.query(TComments).filter(TComments.comments_id == comment_id).first() + if comment: + setattr(comment, 'is_published', True) + setattr(comment, 'is_spam', False) + db.session.commit() + + url = re.match("^(.*[/])", request.referrer)[0] + return redirect(f"{url}/{location_id}") + + +@bp_dashboard.route('/block-mail//', methods=["GET"]) +@login_required +def dashboard_review_spam_block_mail(location_id, comment_id): + comment = db.session.query(TComments).filter(TComments.comments_id == comment_id).first() + if comment: + mail = db.session.query(TEmail).filter(TEmail.email == comment.email).first() + if mail: + setattr(mail, 'is_allowed', False) + setattr(mail, 'is_blocked', True) + else: + new_mail = { + "email": comment.first().email, + "is_allowed": False, + "is_blocked": True + } + db.session.add(TEmail(**new_mail)) + + # Delete all comments made by this mail address + db.session.query(TComments).filter(TComments.email == comment.email).delete() + db.session.commit() + + url = re.match("^(.*[/])", request.referrer)[0] + return redirect(f"{url}/{location_id}") + + +@bp_dashboard.route('/allow-user//', methods=["GET"]) +@login_required +def dashboard_review_spam_allow_user(location_id, comment_id): + comment = db.session.query(TComments).filter(TComments.comments_id == comment_id).first() + if comment: + mail = db.session.query(TEmail).filter(TEmail.email == comment.email).first() + if mail: + setattr(mail, 'is_allowed', True) + setattr(mail, 'is_blocked', False) + else: + new_mail = { + "email": comment.email, + "is_allowed": True, + "is_blocked": False + } + db.session.add(TEmail(**new_mail)) + + # Allow all comments made by this mail address + all_comments = db.session.query(TComments).filter(TComments.email == comment.email).all() + if all_comments: + for comment in all_comments: + setattr(comment, 'is_published', True) + setattr(comment, 'is_spam', False) + + db.session.commit() + url = re.match("^(.*[/])", request.referrer)[0] + return redirect(f"{url}/{location_id}") diff --git a/labertasche/blueprints/bp_login.py b/labertasche/blueprints/bp_login.py new file mode 100644 index 0000000..7af59ce --- /dev/null +++ b/labertasche/blueprints/bp_login.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +from flask import Blueprint, render_template, request, redirect, url_for +from flask_cors import cross_origin +from labertasche.helper import check_auth, User +from flask_login import login_user, current_user, logout_user + +# Blueprint +bp_login = Blueprint("bp_login", __name__) + + +@cross_origin() +@bp_login.route('/', methods=['GET']) +def show_login(): + if current_user.is_authenticated: + return redirect(url_for('bp_dashboard.dashboard_index')) + return render_template('login.html') + + +@cross_origin() +@bp_login.route('/login', methods=['POST', 'GET']) +def login(): + if request.method == 'POST': + username = request.form['username'] + password = request.form['password'] + + if check_auth(username, password): + login_user(User(0), remember=True) + return redirect(url_for('bp_dashboard.dashboard_index')) + + # Redirect get request to the login page + return redirect(url_for('bp_login.show_login')) + + +@cross_origin() +@bp_login.route('/logout/', methods=["GET"]) +def logout(): + if current_user.is_authenticated: + logout_user() + return redirect(url_for("bp_login.show_login")) diff --git a/labertasche/database/__init__.py b/labertasche/database/__init__.py new file mode 100644 index 0000000..929b1da --- /dev/null +++ b/labertasche/database/__init__.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +from flask_sqlalchemy import SQLAlchemy + +# Create SQLAlchemy +labertasche_db = SQLAlchemy() diff --git a/labertasche/helper/__init__.py b/labertasche/helper/__init__.py new file mode 100644 index 0000000..2e31356 --- /dev/null +++ b/labertasche/helper/__init__.py @@ -0,0 +1,190 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +import datetime +import json +from labertasche.models import TLocation, TComments +from labertasche.settings import Settings +from labertasche.database import labertasche_db as db +from functools import wraps +from hashlib import md5 +from flask import request +from flask_login import UserMixin +from secrets import compare_digest +from pathlib import Path +from sys import stderr +from re import match as re_match +import requests + + +class User(UserMixin): + def __init__(self, user_id): + self.id = user_id + + +def is_valid_json(j): + """ + Tries to load the json to test if it is valid. + + :param j: The json to test. + :return: True if the json is valid, False on any exception. + """ + try: + json.dumps(j) + return True + except json.JSONDecodeError as e: + print("not valid json") + return False + + +def default_timestamp(): + """Timestamp used by the project to ensure consistency""" + date = datetime.datetime.now().replace(microsecond=0) + return date + + +def time_to_js(obj): + """" + Returns a timestring readable by Javascript + """ + if isinstance(obj, (datetime.date, datetime.datetime)): + return obj.isoformat() + + +def alchemy_query_to_dict(obj): + """ + Used when exporting the data. It truncates the mail, removes the T from the date string, etc. + + :param obj: A single query item from sqlalchemy. + :return: a dict with the query + """ + no_mail = re_match("^.*[@]", obj.email)[0] + result = { + "comment_id": obj.comments_id, + "email": no_mail, + "content": obj.content, + "created_on": time_to_js(obj.created_on).replace("T", " "), + "replied_to": obj.replied_to, + "gravatar": obj.gravatar + } + return dict(result) + + +# Come on, it's a mail hash, don't complain +# noinspection InsecureHash +def check_gravatar(email: str): + """ + Builds the gravatar email hash, which uses md5. + You may use ?size=128 for example to dictate size in the final template. + :param email: the email to use for the hash + :return: the gravatar url of the image + """ + settings = Settings() + options = settings.gravatar + gravatar_hash = md5(email.strip().lower().encode("utf8")).hexdigest() + if options['cache']: + url = f"https://www.gravatar.com/avatar/{gravatar_hash}?s={options['size']}" + response = requests.get(url) + if response.ok: + outfile = Path(f"{options['static_dir']}/{gravatar_hash}.jpg") + if not outfile.exists(): + with outfile.open('wb') as fp: + response.raw.decode_content = True + for chunk in response: + fp.write(chunk) + + return gravatar_hash + + +def check_auth(username: str, password: str): + """ + Compares username and password from the settings file in a safe way. + Direct string comparison is vulnerable to timing attacks + https://sqreen.github.io/DevelopersSecurityBestPractices/timing-attack/python + :param username: username entered by the user + :param password: password entered by the user + :return: True if equal, False if not + """ + settings = Settings() + if compare_digest(username, settings.dashboard['username']) and \ + compare_digest(password, settings.dashboard['password']): + return True + return False + + +def basic_login_required(f): + """ + Decorator for basic auth + """ + @wraps(f) + def wrapped_view(**kwargs): + auth = request.authorization + if not (auth and check_auth(auth.username, auth.password)): + return ('Unauthorized', 401, { + 'WWW-Authenticate': 'Basic realm="Login Required"' + }) + return f(**kwargs) + return wrapped_view + + +def export_location(location: str) -> bool: + """ + Exports the comments for the location after the comment was accepted + :param location: relative url of the hugo page + """ + try: + # Query + loc_query = db.session.query(TLocation).filter(TLocation.location == location).first() + + if loc_query: + comments = db.session.query(TComments).filter(TComments.is_spam != True) \ + .filter(TComments.is_published == True) \ + .filter(TComments.location_id == loc_query.id_location) \ + .filter(TComments.replied_to == None) + + bundle = { + "comments": [] + } + for comment in comments: + bundle['comments'].append(alchemy_query_to_dict(comment)) + + path_loc = re_match(".*(?=/)", loc_query.location)[0] + + system = Settings().system + out = Path(f"{system['output']}/{path_loc}.json") + out = out.absolute() + print(out) + folder = out.parents[0] + folder.mkdir(parents=True, exist_ok=True) + with out.open('w') as fp: + json.dump(bundle, fp) + + return True + + except Exception as e: + # mail(f"export_comments has thrown an error: {str(e)}") + print(e, file=stderr) + return False + + +def dates_of_the_week(): + """ + Finds all dates of this week and returns them as a list, + going from midnight on monday to sunday 1 second before midnight + :return: A list containing the dates + """ + date_list = list() + now = datetime.datetime.now() + monday = now - datetime.timedelta(days=now.weekday(), hours=now.hour, minutes=now.minute, seconds=now.second, + microseconds=now.microsecond) + date_list.append(monday) + for each in range(1, 6): + monday = monday + datetime.timedelta(days=1) + date_list.append(monday) + date_list.append((monday + datetime.timedelta(days=1, hours=23, minutes=59, seconds=59))) + return date_list diff --git a/labertasche/mail/__init__.py b/labertasche/mail/__init__.py new file mode 100644 index 0000000..b49b29e --- /dev/null +++ b/labertasche/mail/__init__.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +from email.mime.text import MIMEText +from email.mime.multipart import MIMEMultipart +from json import load as j_load +from pathlib import Path +from platform import system +from smtplib import SMTP_SSL, SMTPHeloError, SMTPAuthenticationError, SMTPException +from ssl import create_default_context +from labertasche.settings import Settings +from validate_email import validate_email +from secrets import token_urlsafe + + +class mail: + + def __init__(self): + path = Path("/etc/labertasche/mail_credentials.json") + if system().lower() == "windows": + path = Path("mail_credentials.json") + + with path.open("r") as fp: + self.credentials = j_load(fp) + + def send(self, txt_what: str, html_what: str, to: str): + if not self.credentials['enable']: + return + + txtmail = MIMEText(txt_what, "plain", _charset='utf8') + + multimime = MIMEMultipart('alternative') + multimime['Subject'] = "Comment confirmation pending" + multimime['From'] = self.credentials['email-sendfrom'] + multimime['To'] = to + multimime.attach(txtmail) + + # Only send HTML if needed + if html_what is not None: + htmlmail = MIMEText(html_what, "html", _charset='utf8') + multimime.attach(htmlmail) + + try: + with SMTP_SSL(host=self.credentials['smtp-server'], + port=self.credentials['smtp-port'], + context=create_default_context()) as server: + server.login(user=self.credentials['email-user'], password=self.credentials['email-password']) + server.sendmail(to_addrs=to, + msg=multimime.as_string(), + from_addr=self.credentials['email-sendfrom']) + + except SMTPHeloError as helo: + print(f"SMTPHeloError: {helo}") + except SMTPAuthenticationError as auth_error: + print(f"Authentication Error: {auth_error}") + except SMTPException as e: + print(f"SMTPException: {e}") + + def send_confirmation_link(self, email): + """ + Send confirmation link after entering a comment + :param email: The address to send the mail to + :return: A tuple with the confirmation token and the deletion token, in this order + """ + settings = Settings() + confirm_digest = token_urlsafe(48) + delete_digest = token_urlsafe(48) + + confirm_url = f"{settings.system['web_url']}/comments/confirm/{confirm_digest}" + delete_url = f"{settings.system['web_url']}/comments/delete/{delete_digest}" + + txt_what = f"Hey there. You have made a comment on {settings.system['blog_url']}. Please confirm it by " \ + f"copying this link into your browser:\n{confirm_url}\nIf you want to delete your comment for,"\ + f"whatever reason, please use this link:\n{delete_url}" + + html_what = f"Hey there. You have made a comment on {settings.system['blog_url']}.
Please confirm it by " \ + f"clicking on this link.
"\ + f"In case you want to delete your comment later, please click here."\ + f"

If you think this is in error or someone made this comment in your name, please "\ + f"write me a mail to discuss options such as " \ + f"blocking your mail from being used." + + self.send(txt_what, html_what, email) + + return confirm_digest, delete_digest + + def validate(self, addr): + # validate email + is_valid = validate_email(email_address=addr, + check_regex=True, + check_mx=False, + dns_timeout=10, + use_blacklist=True, + debug=False) + return is_valid diff --git a/labertasche/models/__init__.py b/labertasche/models/__init__.py new file mode 100644 index 0000000..6614d81 --- /dev/null +++ b/labertasche/models/__init__.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +from .t_comments import TComments +from .t_location import TLocation +from .t_emails import TEmail diff --git a/labertasche/models/t_comments.py b/labertasche/models/t_comments.py new file mode 100644 index 0000000..ab4c392 --- /dev/null +++ b/labertasche/models/t_comments.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +from labertasche.database import labertasche_db as db +from sqlalchemy import ForeignKey + + +class TComments(db.Model): + # table name + __tablename__ = "t_comments" + __table_args__ = {'useexisting': True} + + # primary key + comments_id = db.Column(db.Integer, primary_key=True) + + # foreign keys + location_id = db.Column(db.Text, ForeignKey('t_location.id_location'), nullable=False) + + # data + email = db.Column(db.Text, nullable=False) + content = db.Column(db.Text, nullable=False, unique=True) + created_on = db.Column(db.DateTime, nullable=False) + is_published = db.Column(db.Boolean, nullable=False) + is_spam = db.Column(db.Boolean, nullable=False) + spam_score = db.Column(db.Float, nullable=False) + replied_to = db.Column(db.Boolean, nullable=True) + confirmation = db.Column(db.Text, nullable=True) + deletion = db.Column(db.Text, nullable=True) + gravatar = db.Column(db.Text, nullable=True) diff --git a/labertasche/models/t_emails.py b/labertasche/models/t_emails.py new file mode 100644 index 0000000..49e90c3 --- /dev/null +++ b/labertasche/models/t_emails.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +from labertasche.database import labertasche_db as db + + +class TEmail(db.Model): + # Table name + __tablename__ = 't_email' + __table_args__ = {'useexisting': True} + + # primary key + id_email = db.Column(db.Integer, primary_key=True) + + # data + email = db.Column(db.Integer, unique=True) + is_blocked = db.Column(db.Boolean) + is_allowed = db.Column(db.Boolean) diff --git a/labertasche/models/t_location.py b/labertasche/models/t_location.py new file mode 100644 index 0000000..9203156 --- /dev/null +++ b/labertasche/models/t_location.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +from labertasche.database import labertasche_db as db + + +class TLocation(db.Model): + # table name + __tablename__ = "t_location" + __table_args__ = {'useexisting': True} + + # primary key + id_location = db.Column(db.Integer, primary_key=True) + + # data + location = db.Column(db.Text, nullable=False, unique=True) diff --git a/labertasche/settings/__init__.py b/labertasche/settings/__init__.py new file mode 100644 index 0000000..034abb0 --- /dev/null +++ b/labertasche/settings/__init__.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +import yaml +from pathlib import Path +from platform import system + + +class Settings: + """ + Automatically loads the settings from /etc/ on Linux and same directory on other OS + """ + def __init__(self): + file = Path("labertasche.yaml") + if system().lower() == "linux": + file = Path("/etc/labertasche/labertasche.yaml") + + with file.open('r') as fp: + conf = yaml.safe_load(fp) + + self.system = conf['system'] + self.dashboard = conf['dashboard'] + self.gravatar = conf['gravatar'] + self.addons = conf['addons'] + self.smileys = conf['smileys'] diff --git a/mail_credentials.json b/mail_credentials.json new file mode 100644 index 0000000..6313237 --- /dev/null +++ b/mail_credentials.json @@ -0,0 +1,9 @@ +{ + "enable": true, + "smtp-server": "mail server", + "smtp-port": 465, + "email-user": "username for smtp", + "email-sendfrom": "sender mail", + "email-password": "passw0rd", + "email-sendto": "receiving mail" +} \ No newline at end of file diff --git a/server.py b/server.py new file mode 100644 index 0000000..1b93525 --- /dev/null +++ b/server.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/labertasche +# * _license : This project is under MIT License +# *********************************************************************************/ +import logging +from flask import Flask, redirect, url_for +from flask_cors import CORS +from sqlalchemy import event +# noinspection PyProtectedMember +from sqlalchemy.engine import Engine +from labertasche.settings import Settings +from labertasche.database import labertasche_db +from labertasche.blueprints import bp_comments, bp_login, bp_dashboard +from labertasche.helper import User +from flask_login import LoginManager + + +# Load settings +settings = Settings() + +# Flask App +laberflask = Flask(__name__) +laberflask.config.update(dict( + SESSION_COOKIE_DOMAIN=settings.system['cookie-domain'], + DEBUG=settings.system['debug'], + SECRET_KEY=settings.system['secret'], + TEMPLATES_AUTO_RELOAD=True, + SQLALCHEMY_DATABASE_URI=settings.system['database_uri'], + SQLALCHEMY_TRACK_MODIFICATIONS=False +)) + +# CORS +CORS(laberflask, resources={r"/comments": {"origins": settings.system['blog_url']}}) + +# Import blueprints +laberflask.register_blueprint(bp_comments) +laberflask.register_blueprint(bp_dashboard) +laberflask.register_blueprint(bp_login) + +# Disable Werkzeug's verbosity during development +log = logging.getLogger('werkzeug') +log.setLevel(logging.ERROR) + +# Initialize ORM +labertasche_db.init_app(laberflask) +with laberflask.app_context(): + labertasche_db.create_all() + +# Set up login manager +loginmgr = LoginManager(laberflask) +loginmgr.login_view = 'bp_admin_login.login' + + +@loginmgr.user_loader +def user_loader(user_id): + if user_id != "0": + return None + return User(user_id) + + +@loginmgr.unauthorized_handler +def login_invalid(): + return redirect(url_for('bp_login.show_login')) + + +@event.listens_for(Engine, "connect") +def set_sqlite_pragma(dbapi_connection, connection_record): + if settings.system["database_uri"][0:6] == 'sqlite': + cursor = dbapi_connection.cursor() + cursor.execute("PRAGMA journal_mode=WAL;") + cursor.close() diff --git a/server.wsgi b/server.wsgi new file mode 100644 index 0000000..368760d --- /dev/null +++ b/server.wsgi @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# """ +# /********************************************************************************** +# * _author : Domeniko Gentner +# * _mail : code@tuxstash.de +# * _repo : https://git.tuxstash.de/gothseidank/piradio +# * _license : This project is under GPL.v2 +# *********************************************************************************/ +from sys import path as sys_path +from os import path as os_path + +sys_path.insert(0, os_path.dirname(os_path.realpath(__file__))) + +from server import laberflask +application = laberflask diff --git a/static/css/Chart.min.css b/static/css/Chart.min.css new file mode 100644 index 0000000..9dc5ac2 --- /dev/null +++ b/static/css/Chart.min.css @@ -0,0 +1 @@ +@keyframes chartjs-render-animation{from{opacity:.99}to{opacity:1}}.chartjs-render-monitor{animation:chartjs-render-animation 1ms}.chartjs-size-monitor,.chartjs-size-monitor-expand,.chartjs-size-monitor-shrink{position:absolute;direction:ltr;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1}.chartjs-size-monitor-expand>div{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0} \ No newline at end of file diff --git a/static/css/labertasche.css b/static/css/labertasche.css new file mode 100644 index 0000000..b872483 --- /dev/null +++ b/static/css/labertasche.css @@ -0,0 +1,10168 @@ +@charset "UTF-8"; +/* Bulma Utilities */ +@keyframes spinAround { + from { + transform: rotate(0deg); + } + to { + transform: rotate(359deg); + } +} +.is-unselectable, .tabs, .pagination-previous, +.pagination-next, +.pagination-link, +.pagination-ellipsis, .breadcrumb, .file, .button, .modal-close, .delete { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.navbar-link:not(.is-arrowless)::after, .select:not(.is-multiple):not(.is-loading)::after { + border: 3px solid transparent; + border-radius: 2px; + border-right: 0; + border-top: 0; + content: " "; + display: block; + height: 0.625em; + margin-top: -0.4375em; + pointer-events: none; + position: absolute; + top: 50%; + transform: rotate(-45deg); + transform-origin: center; + width: 0.625em; +} + +.tabs:not(:last-child), .pagination:not(:last-child), .message:not(:last-child), .level:not(:last-child), .breadcrumb:not(:last-child), .highlight:not(:last-child), .block:not(:last-child), .title:not(:last-child), +.subtitle:not(:last-child), .table-container:not(:last-child), .table:not(:last-child), .progress:not(:last-child), .notification:not(:last-child), .content:not(:last-child), .box:not(:last-child) { + margin-bottom: 1.5rem; +} + +.modal-close, .delete { + -moz-appearance: none; + -webkit-appearance: none; + background-color: rgba(10, 10, 10, 0.2); + border: none; + border-radius: 290486px; + cursor: pointer; + pointer-events: auto; + display: inline-block; + flex-grow: 0; + flex-shrink: 0; + font-size: 0; + height: 20px; + max-height: 20px; + max-width: 20px; + min-height: 20px; + min-width: 20px; + outline: none; + position: relative; + vertical-align: top; + width: 20px; +} +.modal-close::before, .delete::before, .modal-close::after, .delete::after { + background-color: white; + content: ""; + display: block; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform-origin: center center; +} +.modal-close::before, .delete::before { + height: 2px; + width: 50%; +} +.modal-close::after, .delete::after { + height: 50%; + width: 2px; +} +.modal-close:hover, .delete:hover, .modal-close:focus, .delete:focus { + background-color: rgba(10, 10, 10, 0.3); +} +.modal-close:active, .delete:active { + background-color: rgba(10, 10, 10, 0.4); +} +.is-small.modal-close, .is-small.delete { + height: 16px; + max-height: 16px; + max-width: 16px; + min-height: 16px; + min-width: 16px; + width: 16px; +} +.is-medium.modal-close, .is-medium.delete { + height: 24px; + max-height: 24px; + max-width: 24px; + min-height: 24px; + min-width: 24px; + width: 24px; +} +.is-large.modal-close, .is-large.delete { + height: 32px; + max-height: 32px; + max-width: 32px; + min-height: 32px; + min-width: 32px; + width: 32px; +} + +.control.is-loading::after, .select.is-loading::after, .loader, .button.is-loading::after { + animation: spinAround 500ms infinite linear; + border: 2px solid #dbdbdb; + border-radius: 290486px; + border-right-color: transparent; + border-top-color: transparent; + content: ""; + display: block; + height: 1em; + position: relative; + width: 1em; +} + +.hero-video, .is-overlay, .modal-background, .modal, .image.is-square img, +.image.is-square .has-ratio, .image.is-1by1 img, +.image.is-1by1 .has-ratio, .image.is-5by4 img, +.image.is-5by4 .has-ratio, .image.is-4by3 img, +.image.is-4by3 .has-ratio, .image.is-3by2 img, +.image.is-3by2 .has-ratio, .image.is-5by3 img, +.image.is-5by3 .has-ratio, .image.is-16by9 img, +.image.is-16by9 .has-ratio, .image.is-2by1 img, +.image.is-2by1 .has-ratio, .image.is-3by1 img, +.image.is-3by1 .has-ratio, .image.is-4by5 img, +.image.is-4by5 .has-ratio, .image.is-3by4 img, +.image.is-3by4 .has-ratio, .image.is-2by3 img, +.image.is-2by3 .has-ratio, .image.is-3by5 img, +.image.is-3by5 .has-ratio, .image.is-9by16 img, +.image.is-9by16 .has-ratio, .image.is-1by2 img, +.image.is-1by2 .has-ratio, .image.is-1by3 img, +.image.is-1by3 .has-ratio { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; +} + +.pagination-previous, +.pagination-next, +.pagination-link, +.pagination-ellipsis, .file-cta, +.file-name, .select select, .textarea, .input, .button { + -moz-appearance: none; + -webkit-appearance: none; + align-items: center; + border: 1px solid transparent; + border-radius: 4px; + box-shadow: none; + display: inline-flex; + font-size: 1rem; + height: 2.5em; + justify-content: flex-start; + line-height: 1.5; + padding-bottom: calc(0.5em - 1px); + padding-left: calc(0.75em - 1px); + padding-right: calc(0.75em - 1px); + padding-top: calc(0.5em - 1px); + position: relative; + vertical-align: top; +} +.pagination-previous:focus, +.pagination-next:focus, +.pagination-link:focus, +.pagination-ellipsis:focus, .file-cta:focus, +.file-name:focus, .select select:focus, .textarea:focus, .input:focus, .button:focus, .is-focused.pagination-previous, +.is-focused.pagination-next, +.is-focused.pagination-link, +.is-focused.pagination-ellipsis, .is-focused.file-cta, +.is-focused.file-name, .select select.is-focused, .is-focused.textarea, .is-focused.input, .is-focused.button, .pagination-previous:active, +.pagination-next:active, +.pagination-link:active, +.pagination-ellipsis:active, .file-cta:active, +.file-name:active, .select select:active, .textarea:active, .input:active, .button:active, .is-active.pagination-previous, +.is-active.pagination-next, +.is-active.pagination-link, +.is-active.pagination-ellipsis, .is-active.file-cta, +.is-active.file-name, .select select.is-active, .is-active.textarea, .is-active.input, .is-active.button { + outline: none; +} +[disabled].pagination-previous, +[disabled].pagination-next, +[disabled].pagination-link, +[disabled].pagination-ellipsis, [disabled].file-cta, +[disabled].file-name, .select select[disabled], [disabled].textarea, [disabled].input, [disabled].button, fieldset[disabled] .pagination-previous, +fieldset[disabled] .pagination-next, +fieldset[disabled] .pagination-link, +fieldset[disabled] .pagination-ellipsis, fieldset[disabled] .file-cta, +fieldset[disabled] .file-name, fieldset[disabled] .select select, .select fieldset[disabled] select, fieldset[disabled] .textarea, fieldset[disabled] .input, fieldset[disabled] .button { + cursor: not-allowed; +} + +/* Bulma Base */ +/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */ +html, +body, +p, +ol, +ul, +li, +dl, +dt, +dd, +blockquote, +figure, +fieldset, +legend, +textarea, +pre, +iframe, +hr, +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + padding: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: 100%; + font-weight: normal; +} + +ul { + list-style: none; +} + +button, +input, +select, +textarea { + margin: 0; +} + +html { + box-sizing: border-box; +} + +*, *::before, *::after { + box-sizing: inherit; +} + +img, +video { + height: auto; + max-width: 100%; +} + +iframe { + border: 0; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} +td:not([align]), +th:not([align]) { + text-align: inherit; +} + +html { + background-color: white; + font-size: 16px; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + min-width: 300px; + overflow-x: hidden; + overflow-y: scroll; + text-rendering: optimizeLegibility; + text-size-adjust: 100%; +} + +article, +aside, +figure, +footer, +header, +hgroup, +section { + display: block; +} + +body, +button, +input, +optgroup, +select, +textarea { + font-family: "Open Sans", sans-serif; +} + +code, +pre { + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: auto; + font-family: "Fira Code", monospace; +} + +body { + color: white; + font-size: 1em; + font-weight: 400; + line-height: 1.5; +} + +a { + color: #feda5a; + cursor: pointer; + text-decoration: none; +} +a strong { + color: currentColor; +} +a:hover { + color: white; +} + +code { + background-color: whitesmoke; + color: #da1039; + font-size: 0.875em; + font-weight: normal; + padding: 0.25em 0.5em 0.25em; +} + +hr { + background-color: whitesmoke; + border: none; + display: block; + height: 2px; + margin: 1.5rem 0; +} + +img { + height: auto; + max-width: 100%; +} + +input[type=checkbox], +input[type=radio] { + vertical-align: baseline; +} + +small { + font-size: 0.875em; +} + +span { + font-style: inherit; + font-weight: inherit; +} + +strong { + color: white; + font-weight: 700; +} + +fieldset { + border: none; +} + +pre { + -webkit-overflow-scrolling: touch; + background-color: whitesmoke; + color: #4a4a4a; + font-size: 0.875em; + overflow-x: auto; + padding: 1.25rem 1.5rem; + white-space: pre; + word-wrap: normal; +} +pre code { + background-color: transparent; + color: currentColor; + font-size: 1em; + padding: 0; +} + +table td, +table th { + vertical-align: top; +} +table td:not([align]), +table th:not([align]) { + text-align: inherit; +} +table th { + color: #363636; +} + +/* Bulma Elements */ +.box { + background-color: #feda6a; + border-radius: 6px; + box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02); + color: #4a4a4a; + display: block; + padding: 0.25rem; +} + +a.box:hover, a.box:focus { + box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0 0 1px #feda5a; +} +a.box:active { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #feda5a; +} + +.button { + background-color: white; + border-color: #dbdbdb; + border-width: 1px; + color: #363636; + cursor: pointer; + justify-content: center; + padding-bottom: calc(0.5em - 1px); + padding-left: 1em; + padding-right: 1em; + padding-top: calc(0.5em - 1px); + text-align: center; + white-space: nowrap; +} +.button strong { + color: inherit; +} +.button .icon, .button .icon.is-small, .button .icon.is-medium, .button .icon.is-large { + height: 1.5em; + width: 1.5em; +} +.button .icon:first-child:not(:last-child) { + margin-left: calc(-0.5em - 1px); + margin-right: 0.25em; +} +.button .icon:last-child:not(:first-child) { + margin-left: 0.25em; + margin-right: calc(-0.5em - 1px); +} +.button .icon:first-child:last-child { + margin-left: calc(-0.5em - 1px); + margin-right: calc(-0.5em - 1px); +} +.button:hover, .button.is-hovered { + border-color: #b5b5b5; + color: white; +} +.button:focus, .button.is-focused { + border-color: #3273dc; + color: #363636; +} +.button:focus:not(:active), .button.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(254, 218, 90, 0.25); +} +.button:active, .button.is-active { + border-color: #4a4a4a; + color: #363636; +} +.button.is-text { + background-color: transparent; + border-color: transparent; + color: #4a4a4a; + text-decoration: underline; +} +.button.is-text:hover, .button.is-text.is-hovered, .button.is-text:focus, .button.is-text.is-focused { + background-color: whitesmoke; + color: #363636; +} +.button.is-text:active, .button.is-text.is-active { + background-color: #e8e8e8; + color: #363636; +} +.button.is-text[disabled], fieldset[disabled] .button.is-text { + background-color: transparent; + border-color: transparent; + box-shadow: none; +} +.button.is-white { + background-color: white; + border-color: transparent; + color: #0a0a0a; +} +.button.is-white:hover, .button.is-white.is-hovered { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; +} +.button.is-white:focus, .button.is-white.is-focused { + border-color: transparent; + color: #0a0a0a; +} +.button.is-white:focus:not(:active), .button.is-white.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); +} +.button.is-white:active, .button.is-white.is-active { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; +} +.button.is-white[disabled], fieldset[disabled] .button.is-white { + background-color: white; + border-color: transparent; + box-shadow: none; +} +.button.is-white.is-inverted { + background-color: #0a0a0a; + color: white; +} +.button.is-white.is-inverted:hover, .button.is-white.is-inverted.is-hovered { + background-color: black; +} +.button.is-white.is-inverted[disabled], fieldset[disabled] .button.is-white.is-inverted { + background-color: #0a0a0a; + border-color: transparent; + box-shadow: none; + color: white; +} +.button.is-white.is-loading::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; +} +.button.is-white.is-outlined { + background-color: transparent; + border-color: white; + color: white; +} +.button.is-white.is-outlined:hover, .button.is-white.is-outlined.is-hovered, .button.is-white.is-outlined:focus, .button.is-white.is-outlined.is-focused { + background-color: white; + border-color: white; + color: #0a0a0a; +} +.button.is-white.is-outlined.is-loading::after { + border-color: transparent transparent white white !important; +} +.button.is-white.is-outlined.is-loading:hover::after, .button.is-white.is-outlined.is-loading.is-hovered::after, .button.is-white.is-outlined.is-loading:focus::after, .button.is-white.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; +} +.button.is-white.is-outlined[disabled], fieldset[disabled] .button.is-white.is-outlined { + background-color: transparent; + border-color: white; + box-shadow: none; + color: white; +} +.button.is-white.is-inverted.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + color: #0a0a0a; +} +.button.is-white.is-inverted.is-outlined:hover, .button.is-white.is-inverted.is-outlined.is-hovered, .button.is-white.is-inverted.is-outlined:focus, .button.is-white.is-inverted.is-outlined.is-focused { + background-color: #0a0a0a; + color: white; +} +.button.is-white.is-inverted.is-outlined.is-loading:hover::after, .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-white.is-inverted.is-outlined.is-loading:focus::after, .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent white white !important; +} +.button.is-white.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-white.is-inverted.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + box-shadow: none; + color: #0a0a0a; +} +.button.is-black { + background-color: #0a0a0a; + border-color: transparent; + color: white; +} +.button.is-black:hover, .button.is-black.is-hovered { + background-color: #040404; + border-color: transparent; + color: white; +} +.button.is-black:focus, .button.is-black.is-focused { + border-color: transparent; + color: white; +} +.button.is-black:focus:not(:active), .button.is-black.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); +} +.button.is-black:active, .button.is-black.is-active { + background-color: black; + border-color: transparent; + color: white; +} +.button.is-black[disabled], fieldset[disabled] .button.is-black { + background-color: #0a0a0a; + border-color: transparent; + box-shadow: none; +} +.button.is-black.is-inverted { + background-color: white; + color: #0a0a0a; +} +.button.is-black.is-inverted:hover, .button.is-black.is-inverted.is-hovered { + background-color: #f2f2f2; +} +.button.is-black.is-inverted[disabled], fieldset[disabled] .button.is-black.is-inverted { + background-color: white; + border-color: transparent; + box-shadow: none; + color: #0a0a0a; +} +.button.is-black.is-loading::after { + border-color: transparent transparent white white !important; +} +.button.is-black.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + color: #0a0a0a; +} +.button.is-black.is-outlined:hover, .button.is-black.is-outlined.is-hovered, .button.is-black.is-outlined:focus, .button.is-black.is-outlined.is-focused { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; +} +.button.is-black.is-outlined.is-loading::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; +} +.button.is-black.is-outlined.is-loading:hover::after, .button.is-black.is-outlined.is-loading.is-hovered::after, .button.is-black.is-outlined.is-loading:focus::after, .button.is-black.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent white white !important; +} +.button.is-black.is-outlined[disabled], fieldset[disabled] .button.is-black.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + box-shadow: none; + color: #0a0a0a; +} +.button.is-black.is-inverted.is-outlined { + background-color: transparent; + border-color: white; + color: white; +} +.button.is-black.is-inverted.is-outlined:hover, .button.is-black.is-inverted.is-outlined.is-hovered, .button.is-black.is-inverted.is-outlined:focus, .button.is-black.is-inverted.is-outlined.is-focused { + background-color: white; + color: #0a0a0a; +} +.button.is-black.is-inverted.is-outlined.is-loading:hover::after, .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-black.is-inverted.is-outlined.is-loading:focus::after, .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; +} +.button.is-black.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-black.is-inverted.is-outlined { + background-color: transparent; + border-color: white; + box-shadow: none; + color: white; +} +.button.is-light { + background-color: whitesmoke; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.button.is-light:hover, .button.is-light.is-hovered { + background-color: #eeeeee; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.button.is-light:focus, .button.is-light.is-focused { + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.button.is-light:focus:not(:active), .button.is-light.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); +} +.button.is-light:active, .button.is-light.is-active { + background-color: #e8e8e8; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.button.is-light[disabled], fieldset[disabled] .button.is-light { + background-color: whitesmoke; + border-color: transparent; + box-shadow: none; +} +.button.is-light.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + color: whitesmoke; +} +.button.is-light.is-inverted:hover, .button.is-light.is-inverted.is-hovered { + background-color: rgba(0, 0, 0, 0.7); +} +.button.is-light.is-inverted[disabled], fieldset[disabled] .button.is-light.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + border-color: transparent; + box-shadow: none; + color: whitesmoke; +} +.button.is-light.is-loading::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; +} +.button.is-light.is-outlined { + background-color: transparent; + border-color: whitesmoke; + color: whitesmoke; +} +.button.is-light.is-outlined:hover, .button.is-light.is-outlined.is-hovered, .button.is-light.is-outlined:focus, .button.is-light.is-outlined.is-focused { + background-color: whitesmoke; + border-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); +} +.button.is-light.is-outlined.is-loading::after { + border-color: transparent transparent whitesmoke whitesmoke !important; +} +.button.is-light.is-outlined.is-loading:hover::after, .button.is-light.is-outlined.is-loading.is-hovered::after, .button.is-light.is-outlined.is-loading:focus::after, .button.is-light.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; +} +.button.is-light.is-outlined[disabled], fieldset[disabled] .button.is-light.is-outlined { + background-color: transparent; + border-color: whitesmoke; + box-shadow: none; + color: whitesmoke; +} +.button.is-light.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + color: rgba(0, 0, 0, 0.7); +} +.button.is-light.is-inverted.is-outlined:hover, .button.is-light.is-inverted.is-outlined.is-hovered, .button.is-light.is-inverted.is-outlined:focus, .button.is-light.is-inverted.is-outlined.is-focused { + background-color: rgba(0, 0, 0, 0.7); + color: whitesmoke; +} +.button.is-light.is-inverted.is-outlined.is-loading:hover::after, .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-light.is-inverted.is-outlined.is-loading:focus::after, .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent whitesmoke whitesmoke !important; +} +.button.is-light.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-light.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + box-shadow: none; + color: rgba(0, 0, 0, 0.7); +} +.button.is-dark { + background-color: #363636; + border-color: transparent; + color: #fff; +} +.button.is-dark:hover, .button.is-dark.is-hovered { + background-color: #2f2f2f; + border-color: transparent; + color: #fff; +} +.button.is-dark:focus, .button.is-dark.is-focused { + border-color: transparent; + color: #fff; +} +.button.is-dark:focus:not(:active), .button.is-dark.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); +} +.button.is-dark:active, .button.is-dark.is-active { + background-color: #292929; + border-color: transparent; + color: #fff; +} +.button.is-dark[disabled], fieldset[disabled] .button.is-dark { + background-color: #363636; + border-color: transparent; + box-shadow: none; +} +.button.is-dark.is-inverted { + background-color: #fff; + color: #363636; +} +.button.is-dark.is-inverted:hover, .button.is-dark.is-inverted.is-hovered { + background-color: #f2f2f2; +} +.button.is-dark.is-inverted[disabled], fieldset[disabled] .button.is-dark.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #363636; +} +.button.is-dark.is-loading::after { + border-color: transparent transparent #fff #fff !important; +} +.button.is-dark.is-outlined { + background-color: transparent; + border-color: #363636; + color: #363636; +} +.button.is-dark.is-outlined:hover, .button.is-dark.is-outlined.is-hovered, .button.is-dark.is-outlined:focus, .button.is-dark.is-outlined.is-focused { + background-color: #363636; + border-color: #363636; + color: #fff; +} +.button.is-dark.is-outlined.is-loading::after { + border-color: transparent transparent #363636 #363636 !important; +} +.button.is-dark.is-outlined.is-loading:hover::after, .button.is-dark.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-outlined.is-loading:focus::after, .button.is-dark.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; +} +.button.is-dark.is-outlined[disabled], fieldset[disabled] .button.is-dark.is-outlined { + background-color: transparent; + border-color: #363636; + box-shadow: none; + color: #363636; +} +.button.is-dark.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; +} +.button.is-dark.is-inverted.is-outlined:hover, .button.is-dark.is-inverted.is-outlined.is-hovered, .button.is-dark.is-inverted.is-outlined:focus, .button.is-dark.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #363636; +} +.button.is-dark.is-inverted.is-outlined.is-loading:hover::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #363636 #363636 !important; +} +.button.is-dark.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-dark.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; +} +.button.is-primary { + background-color: #00d1b2; + border-color: transparent; + color: #fff; +} +.button.is-primary:hover, .button.is-primary.is-hovered { + background-color: #00c4a7; + border-color: transparent; + color: #fff; +} +.button.is-primary:focus, .button.is-primary.is-focused { + border-color: transparent; + color: #fff; +} +.button.is-primary:focus:not(:active), .button.is-primary.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(0, 209, 178, 0.25); +} +.button.is-primary:active, .button.is-primary.is-active { + background-color: #00b89c; + border-color: transparent; + color: #fff; +} +.button.is-primary[disabled], fieldset[disabled] .button.is-primary { + background-color: #00d1b2; + border-color: transparent; + box-shadow: none; +} +.button.is-primary.is-inverted { + background-color: #fff; + color: #00d1b2; +} +.button.is-primary.is-inverted:hover, .button.is-primary.is-inverted.is-hovered { + background-color: #f2f2f2; +} +.button.is-primary.is-inverted[disabled], fieldset[disabled] .button.is-primary.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #00d1b2; +} +.button.is-primary.is-loading::after { + border-color: transparent transparent #fff #fff !important; +} +.button.is-primary.is-outlined { + background-color: transparent; + border-color: #00d1b2; + color: #00d1b2; +} +.button.is-primary.is-outlined:hover, .button.is-primary.is-outlined.is-hovered, .button.is-primary.is-outlined:focus, .button.is-primary.is-outlined.is-focused { + background-color: #00d1b2; + border-color: #00d1b2; + color: #fff; +} +.button.is-primary.is-outlined.is-loading::after { + border-color: transparent transparent #00d1b2 #00d1b2 !important; +} +.button.is-primary.is-outlined.is-loading:hover::after, .button.is-primary.is-outlined.is-loading.is-hovered::after, .button.is-primary.is-outlined.is-loading:focus::after, .button.is-primary.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; +} +.button.is-primary.is-outlined[disabled], fieldset[disabled] .button.is-primary.is-outlined { + background-color: transparent; + border-color: #00d1b2; + box-shadow: none; + color: #00d1b2; +} +.button.is-primary.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; +} +.button.is-primary.is-inverted.is-outlined:hover, .button.is-primary.is-inverted.is-outlined.is-hovered, .button.is-primary.is-inverted.is-outlined:focus, .button.is-primary.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #00d1b2; +} +.button.is-primary.is-inverted.is-outlined.is-loading:hover::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #00d1b2 #00d1b2 !important; +} +.button.is-primary.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-primary.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; +} +.button.is-primary.is-light { + background-color: #ebfffc; + color: #00947e; +} +.button.is-primary.is-light:hover, .button.is-primary.is-light.is-hovered { + background-color: #defffa; + border-color: transparent; + color: #00947e; +} +.button.is-primary.is-light:active, .button.is-primary.is-light.is-active { + background-color: #d1fff8; + border-color: transparent; + color: #00947e; +} +.button.is-link { + background-color: #feda5a; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.button.is-link:hover, .button.is-link.is-hovered { + background-color: #fed74d; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.button.is-link:focus, .button.is-link.is-focused { + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.button.is-link:focus:not(:active), .button.is-link.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(254, 218, 90, 0.25); +} +.button.is-link:active, .button.is-link.is-active { + background-color: #fed441; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.button.is-link[disabled], fieldset[disabled] .button.is-link { + background-color: #feda5a; + border-color: transparent; + box-shadow: none; +} +.button.is-link.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + color: #feda5a; +} +.button.is-link.is-inverted:hover, .button.is-link.is-inverted.is-hovered { + background-color: rgba(0, 0, 0, 0.7); +} +.button.is-link.is-inverted[disabled], fieldset[disabled] .button.is-link.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + border-color: transparent; + box-shadow: none; + color: #feda5a; +} +.button.is-link.is-loading::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; +} +.button.is-link.is-outlined { + background-color: transparent; + border-color: #feda5a; + color: #feda5a; +} +.button.is-link.is-outlined:hover, .button.is-link.is-outlined.is-hovered, .button.is-link.is-outlined:focus, .button.is-link.is-outlined.is-focused { + background-color: #feda5a; + border-color: #feda5a; + color: rgba(0, 0, 0, 0.7); +} +.button.is-link.is-outlined.is-loading::after { + border-color: transparent transparent #feda5a #feda5a !important; +} +.button.is-link.is-outlined.is-loading:hover::after, .button.is-link.is-outlined.is-loading.is-hovered::after, .button.is-link.is-outlined.is-loading:focus::after, .button.is-link.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; +} +.button.is-link.is-outlined[disabled], fieldset[disabled] .button.is-link.is-outlined { + background-color: transparent; + border-color: #feda5a; + box-shadow: none; + color: #feda5a; +} +.button.is-link.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + color: rgba(0, 0, 0, 0.7); +} +.button.is-link.is-inverted.is-outlined:hover, .button.is-link.is-inverted.is-outlined.is-hovered, .button.is-link.is-inverted.is-outlined:focus, .button.is-link.is-inverted.is-outlined.is-focused { + background-color: rgba(0, 0, 0, 0.7); + color: #feda5a; +} +.button.is-link.is-inverted.is-outlined.is-loading:hover::after, .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-link.is-inverted.is-outlined.is-loading:focus::after, .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #feda5a #feda5a !important; +} +.button.is-link.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-link.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + box-shadow: none; + color: rgba(0, 0, 0, 0.7); +} +.button.is-link.is-light { + background-color: #fffaeb; + color: #937301; +} +.button.is-link.is-light:hover, .button.is-link.is-light.is-hovered { + background-color: #fff8de; + border-color: transparent; + color: #937301; +} +.button.is-link.is-light:active, .button.is-link.is-light.is-active { + background-color: #fff5d1; + border-color: transparent; + color: #937301; +} +.button.is-info { + background-color: #3298dc; + border-color: transparent; + color: #fff; +} +.button.is-info:hover, .button.is-info.is-hovered { + background-color: #2793da; + border-color: transparent; + color: #fff; +} +.button.is-info:focus, .button.is-info.is-focused { + border-color: transparent; + color: #fff; +} +.button.is-info:focus:not(:active), .button.is-info.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(50, 152, 220, 0.25); +} +.button.is-info:active, .button.is-info.is-active { + background-color: #238cd1; + border-color: transparent; + color: #fff; +} +.button.is-info[disabled], fieldset[disabled] .button.is-info { + background-color: #3298dc; + border-color: transparent; + box-shadow: none; +} +.button.is-info.is-inverted { + background-color: #fff; + color: #3298dc; +} +.button.is-info.is-inverted:hover, .button.is-info.is-inverted.is-hovered { + background-color: #f2f2f2; +} +.button.is-info.is-inverted[disabled], fieldset[disabled] .button.is-info.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #3298dc; +} +.button.is-info.is-loading::after { + border-color: transparent transparent #fff #fff !important; +} +.button.is-info.is-outlined { + background-color: transparent; + border-color: #3298dc; + color: #3298dc; +} +.button.is-info.is-outlined:hover, .button.is-info.is-outlined.is-hovered, .button.is-info.is-outlined:focus, .button.is-info.is-outlined.is-focused { + background-color: #3298dc; + border-color: #3298dc; + color: #fff; +} +.button.is-info.is-outlined.is-loading::after { + border-color: transparent transparent #3298dc #3298dc !important; +} +.button.is-info.is-outlined.is-loading:hover::after, .button.is-info.is-outlined.is-loading.is-hovered::after, .button.is-info.is-outlined.is-loading:focus::after, .button.is-info.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; +} +.button.is-info.is-outlined[disabled], fieldset[disabled] .button.is-info.is-outlined { + background-color: transparent; + border-color: #3298dc; + box-shadow: none; + color: #3298dc; +} +.button.is-info.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; +} +.button.is-info.is-inverted.is-outlined:hover, .button.is-info.is-inverted.is-outlined.is-hovered, .button.is-info.is-inverted.is-outlined:focus, .button.is-info.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #3298dc; +} +.button.is-info.is-inverted.is-outlined.is-loading:hover::after, .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-info.is-inverted.is-outlined.is-loading:focus::after, .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #3298dc #3298dc !important; +} +.button.is-info.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-info.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; +} +.button.is-info.is-light { + background-color: #eef6fc; + color: #1d72aa; +} +.button.is-info.is-light:hover, .button.is-info.is-light.is-hovered { + background-color: #e3f1fa; + border-color: transparent; + color: #1d72aa; +} +.button.is-info.is-light:active, .button.is-info.is-light.is-active { + background-color: #d8ebf8; + border-color: transparent; + color: #1d72aa; +} +.button.is-success { + background-color: #48c774; + border-color: transparent; + color: #fff; +} +.button.is-success:hover, .button.is-success.is-hovered { + background-color: #3ec46d; + border-color: transparent; + color: #fff; +} +.button.is-success:focus, .button.is-success.is-focused { + border-color: transparent; + color: #fff; +} +.button.is-success:focus:not(:active), .button.is-success.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(72, 199, 116, 0.25); +} +.button.is-success:active, .button.is-success.is-active { + background-color: #3abb67; + border-color: transparent; + color: #fff; +} +.button.is-success[disabled], fieldset[disabled] .button.is-success { + background-color: #48c774; + border-color: transparent; + box-shadow: none; +} +.button.is-success.is-inverted { + background-color: #fff; + color: #48c774; +} +.button.is-success.is-inverted:hover, .button.is-success.is-inverted.is-hovered { + background-color: #f2f2f2; +} +.button.is-success.is-inverted[disabled], fieldset[disabled] .button.is-success.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #48c774; +} +.button.is-success.is-loading::after { + border-color: transparent transparent #fff #fff !important; +} +.button.is-success.is-outlined { + background-color: transparent; + border-color: #48c774; + color: #48c774; +} +.button.is-success.is-outlined:hover, .button.is-success.is-outlined.is-hovered, .button.is-success.is-outlined:focus, .button.is-success.is-outlined.is-focused { + background-color: #48c774; + border-color: #48c774; + color: #fff; +} +.button.is-success.is-outlined.is-loading::after { + border-color: transparent transparent #48c774 #48c774 !important; +} +.button.is-success.is-outlined.is-loading:hover::after, .button.is-success.is-outlined.is-loading.is-hovered::after, .button.is-success.is-outlined.is-loading:focus::after, .button.is-success.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; +} +.button.is-success.is-outlined[disabled], fieldset[disabled] .button.is-success.is-outlined { + background-color: transparent; + border-color: #48c774; + box-shadow: none; + color: #48c774; +} +.button.is-success.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; +} +.button.is-success.is-inverted.is-outlined:hover, .button.is-success.is-inverted.is-outlined.is-hovered, .button.is-success.is-inverted.is-outlined:focus, .button.is-success.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #48c774; +} +.button.is-success.is-inverted.is-outlined.is-loading:hover::after, .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-success.is-inverted.is-outlined.is-loading:focus::after, .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #48c774 #48c774 !important; +} +.button.is-success.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-success.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; +} +.button.is-success.is-light { + background-color: #effaf3; + color: #257942; +} +.button.is-success.is-light:hover, .button.is-success.is-light.is-hovered { + background-color: #e6f7ec; + border-color: transparent; + color: #257942; +} +.button.is-success.is-light:active, .button.is-success.is-light.is-active { + background-color: #dcf4e4; + border-color: transparent; + color: #257942; +} +.button.is-warning { + background-color: #ffdd57; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.button.is-warning:hover, .button.is-warning.is-hovered { + background-color: #ffdb4a; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.button.is-warning:focus, .button.is-warning.is-focused { + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.button.is-warning:focus:not(:active), .button.is-warning.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); +} +.button.is-warning:active, .button.is-warning.is-active { + background-color: #ffd83d; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.button.is-warning[disabled], fieldset[disabled] .button.is-warning { + background-color: #ffdd57; + border-color: transparent; + box-shadow: none; +} +.button.is-warning.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + color: #ffdd57; +} +.button.is-warning.is-inverted:hover, .button.is-warning.is-inverted.is-hovered { + background-color: rgba(0, 0, 0, 0.7); +} +.button.is-warning.is-inverted[disabled], fieldset[disabled] .button.is-warning.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + border-color: transparent; + box-shadow: none; + color: #ffdd57; +} +.button.is-warning.is-loading::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; +} +.button.is-warning.is-outlined { + background-color: transparent; + border-color: #ffdd57; + color: #ffdd57; +} +.button.is-warning.is-outlined:hover, .button.is-warning.is-outlined.is-hovered, .button.is-warning.is-outlined:focus, .button.is-warning.is-outlined.is-focused { + background-color: #ffdd57; + border-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); +} +.button.is-warning.is-outlined.is-loading::after { + border-color: transparent transparent #ffdd57 #ffdd57 !important; +} +.button.is-warning.is-outlined.is-loading:hover::after, .button.is-warning.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-outlined.is-loading:focus::after, .button.is-warning.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; +} +.button.is-warning.is-outlined[disabled], fieldset[disabled] .button.is-warning.is-outlined { + background-color: transparent; + border-color: #ffdd57; + box-shadow: none; + color: #ffdd57; +} +.button.is-warning.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + color: rgba(0, 0, 0, 0.7); +} +.button.is-warning.is-inverted.is-outlined:hover, .button.is-warning.is-inverted.is-outlined.is-hovered, .button.is-warning.is-inverted.is-outlined:focus, .button.is-warning.is-inverted.is-outlined.is-focused { + background-color: rgba(0, 0, 0, 0.7); + color: #ffdd57; +} +.button.is-warning.is-inverted.is-outlined.is-loading:hover::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #ffdd57 #ffdd57 !important; +} +.button.is-warning.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-warning.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + box-shadow: none; + color: rgba(0, 0, 0, 0.7); +} +.button.is-warning.is-light { + background-color: #fffbeb; + color: #947600; +} +.button.is-warning.is-light:hover, .button.is-warning.is-light.is-hovered { + background-color: #fff8de; + border-color: transparent; + color: #947600; +} +.button.is-warning.is-light:active, .button.is-warning.is-light.is-active { + background-color: #fff6d1; + border-color: transparent; + color: #947600; +} +.button.is-danger { + background-color: #f14668; + border-color: transparent; + color: #fff; +} +.button.is-danger:hover, .button.is-danger.is-hovered { + background-color: #f03a5f; + border-color: transparent; + color: #fff; +} +.button.is-danger:focus, .button.is-danger.is-focused { + border-color: transparent; + color: #fff; +} +.button.is-danger:focus:not(:active), .button.is-danger.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(241, 70, 104, 0.25); +} +.button.is-danger:active, .button.is-danger.is-active { + background-color: #ef2e55; + border-color: transparent; + color: #fff; +} +.button.is-danger[disabled], fieldset[disabled] .button.is-danger { + background-color: #f14668; + border-color: transparent; + box-shadow: none; +} +.button.is-danger.is-inverted { + background-color: #fff; + color: #f14668; +} +.button.is-danger.is-inverted:hover, .button.is-danger.is-inverted.is-hovered { + background-color: #f2f2f2; +} +.button.is-danger.is-inverted[disabled], fieldset[disabled] .button.is-danger.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #f14668; +} +.button.is-danger.is-loading::after { + border-color: transparent transparent #fff #fff !important; +} +.button.is-danger.is-outlined { + background-color: transparent; + border-color: #f14668; + color: #f14668; +} +.button.is-danger.is-outlined:hover, .button.is-danger.is-outlined.is-hovered, .button.is-danger.is-outlined:focus, .button.is-danger.is-outlined.is-focused { + background-color: #f14668; + border-color: #f14668; + color: #fff; +} +.button.is-danger.is-outlined.is-loading::after { + border-color: transparent transparent #f14668 #f14668 !important; +} +.button.is-danger.is-outlined.is-loading:hover::after, .button.is-danger.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-outlined.is-loading:focus::after, .button.is-danger.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; +} +.button.is-danger.is-outlined[disabled], fieldset[disabled] .button.is-danger.is-outlined { + background-color: transparent; + border-color: #f14668; + box-shadow: none; + color: #f14668; +} +.button.is-danger.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; +} +.button.is-danger.is-inverted.is-outlined:hover, .button.is-danger.is-inverted.is-outlined.is-hovered, .button.is-danger.is-inverted.is-outlined:focus, .button.is-danger.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #f14668; +} +.button.is-danger.is-inverted.is-outlined.is-loading:hover::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #f14668 #f14668 !important; +} +.button.is-danger.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-danger.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; +} +.button.is-danger.is-light { + background-color: #feecf0; + color: #cc0f35; +} +.button.is-danger.is-light:hover, .button.is-danger.is-light.is-hovered { + background-color: #fde0e6; + border-color: transparent; + color: #cc0f35; +} +.button.is-danger.is-light:active, .button.is-danger.is-light.is-active { + background-color: #fcd4dc; + border-color: transparent; + color: #cc0f35; +} +.button.is-small { + border-radius: 2px; + font-size: 0.75rem; +} +.button.is-normal { + font-size: 1rem; +} +.button.is-medium { + font-size: 1.25rem; +} +.button.is-large { + font-size: 1.5rem; +} +.button[disabled], fieldset[disabled] .button { + background-color: white; + border-color: #dbdbdb; + box-shadow: none; + opacity: 0.5; +} +.button.is-fullwidth { + display: flex; + width: 100%; +} +.button.is-loading { + color: transparent !important; + pointer-events: none; +} +.button.is-loading::after { + position: absolute; + left: calc(50% - (1em / 2)); + top: calc(50% - (1em / 2)); + position: absolute !important; +} +.button.is-static { + background-color: whitesmoke; + border-color: #dbdbdb; + color: #7a7a7a; + box-shadow: none; + pointer-events: none; +} +.button.is-rounded { + border-radius: 290486px; + padding-left: calc(1em + 0.25em); + padding-right: calc(1em + 0.25em); +} + +.buttons { + align-items: center; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.buttons .button { + margin-bottom: 0.5rem; +} +.buttons .button:not(:last-child):not(.is-fullwidth) { + margin-right: 0.5rem; +} +.buttons:last-child { + margin-bottom: -0.5rem; +} +.buttons:not(:last-child) { + margin-bottom: 1rem; +} +.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) { + border-radius: 2px; + font-size: 0.75rem; +} +.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) { + font-size: 1.25rem; +} +.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) { + font-size: 1.5rem; +} +.buttons.has-addons .button:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.buttons.has-addons .button:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + margin-right: -1px; +} +.buttons.has-addons .button:last-child { + margin-right: 0; +} +.buttons.has-addons .button:hover, .buttons.has-addons .button.is-hovered { + z-index: 2; +} +.buttons.has-addons .button:focus, .buttons.has-addons .button.is-focused, .buttons.has-addons .button:active, .buttons.has-addons .button.is-active, .buttons.has-addons .button.is-selected { + z-index: 3; +} +.buttons.has-addons .button:focus:hover, .buttons.has-addons .button.is-focused:hover, .buttons.has-addons .button:active:hover, .buttons.has-addons .button.is-active:hover, .buttons.has-addons .button.is-selected:hover { + z-index: 4; +} +.buttons.has-addons .button.is-expanded { + flex-grow: 1; + flex-shrink: 1; +} +.buttons.is-centered { + justify-content: center; +} +.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) { + margin-left: 0.25rem; + margin-right: 0.25rem; +} +.buttons.is-right { + justify-content: flex-end; +} +.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) { + margin-left: 0.25rem; + margin-right: 0.25rem; +} + +.container { + flex-grow: 1; + margin: 0 auto; + position: relative; + width: auto; +} +.container.is-fluid { + max-width: none !important; + padding-left: 32px; + padding-right: 32px; + width: 100%; +} +@media screen and (min-width: 1024px) { + .container { + max-width: 960px; + } +} +@media screen and (max-width: 1215px) { + .container.is-widescreen:not(.is-max-desktop) { + max-width: 1152px; + } +} +@media screen and (max-width: 1407px) { + .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen) { + max-width: 1344px; + } +} +@media screen and (min-width: 1216px) { + .container:not(.is-max-desktop) { + max-width: 1152px; + } +} +@media screen and (min-width: 1408px) { + .container:not(.is-max-desktop):not(.is-max-widescreen) { + max-width: 1344px; + } +} + +.content li + li { + margin-top: 0.25em; +} +.content p:not(:last-child), +.content dl:not(:last-child), +.content ol:not(:last-child), +.content ul:not(:last-child), +.content blockquote:not(:last-child), +.content pre:not(:last-child), +.content table:not(:last-child) { + margin-bottom: 1em; +} +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + color: #363636; + font-weight: 600; + line-height: 1.125; +} +.content h1 { + font-size: 2em; + margin-bottom: 0.5em; +} +.content h1:not(:first-child) { + margin-top: 1em; +} +.content h2 { + font-size: 1.75em; + margin-bottom: 0.5714em; +} +.content h2:not(:first-child) { + margin-top: 1.1428em; +} +.content h3 { + font-size: 1.5em; + margin-bottom: 0.6666em; +} +.content h3:not(:first-child) { + margin-top: 1.3333em; +} +.content h4 { + font-size: 1.25em; + margin-bottom: 0.8em; +} +.content h5 { + font-size: 1.125em; + margin-bottom: 0.8888em; +} +.content h6 { + font-size: 1em; + margin-bottom: 1em; +} +.content blockquote { + background-color: whitesmoke; + border-left: 5px solid #dbdbdb; + padding: 1.25em 1.5em; +} +.content ol { + list-style-position: outside; + margin-left: 2em; + margin-top: 1em; +} +.content ol:not([type]) { + list-style-type: decimal; +} +.content ol:not([type]).is-lower-alpha { + list-style-type: lower-alpha; +} +.content ol:not([type]).is-lower-roman { + list-style-type: lower-roman; +} +.content ol:not([type]).is-upper-alpha { + list-style-type: upper-alpha; +} +.content ol:not([type]).is-upper-roman { + list-style-type: upper-roman; +} +.content ul { + list-style: disc outside; + margin-left: 2em; + margin-top: 1em; +} +.content ul ul { + list-style-type: circle; + margin-top: 0.5em; +} +.content ul ul ul { + list-style-type: square; +} +.content dd { + margin-left: 2em; +} +.content figure { + margin-left: 2em; + margin-right: 2em; + text-align: center; +} +.content figure:not(:first-child) { + margin-top: 2em; +} +.content figure:not(:last-child) { + margin-bottom: 2em; +} +.content figure img { + display: inline-block; +} +.content figure figcaption { + font-style: italic; +} +.content pre { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + padding: 1.25em 1.5em; + white-space: pre; + word-wrap: normal; +} +.content sup, +.content sub { + font-size: 75%; +} +.content table { + width: 100%; +} +.content table td, +.content table th { + border: 1px solid #dbdbdb; + border-width: 0 0 1px; + padding: 0.5em 0.75em; + vertical-align: top; +} +.content table th { + color: #363636; +} +.content table th:not([align]) { + text-align: inherit; +} +.content table thead td, +.content table thead th { + border-width: 0 0 2px; + color: #363636; +} +.content table tfoot td, +.content table tfoot th { + border-width: 2px 0 0; + color: #363636; +} +.content table tbody tr:last-child td, +.content table tbody tr:last-child th { + border-bottom-width: 0; +} +.content .tabs li + li { + margin-top: 0; +} +.content.is-small { + font-size: 0.75rem; +} +.content.is-medium { + font-size: 1.25rem; +} +.content.is-large { + font-size: 1.5rem; +} + +.icon { + align-items: center; + display: inline-flex; + justify-content: center; + height: 1.5rem; + width: 1.5rem; +} +.icon.is-small { + height: 1rem; + width: 1rem; +} +.icon.is-medium { + height: 2rem; + width: 2rem; +} +.icon.is-large { + height: 3rem; + width: 3rem; +} + +.image { + display: block; + position: relative; +} +.image img { + display: block; + height: auto; + width: 100%; +} +.image img.is-rounded { + border-radius: 290486px; +} +.image.is-fullwidth { + width: 100%; +} +.image.is-square img, +.image.is-square .has-ratio, .image.is-1by1 img, +.image.is-1by1 .has-ratio, .image.is-5by4 img, +.image.is-5by4 .has-ratio, .image.is-4by3 img, +.image.is-4by3 .has-ratio, .image.is-3by2 img, +.image.is-3by2 .has-ratio, .image.is-5by3 img, +.image.is-5by3 .has-ratio, .image.is-16by9 img, +.image.is-16by9 .has-ratio, .image.is-2by1 img, +.image.is-2by1 .has-ratio, .image.is-3by1 img, +.image.is-3by1 .has-ratio, .image.is-4by5 img, +.image.is-4by5 .has-ratio, .image.is-3by4 img, +.image.is-3by4 .has-ratio, .image.is-2by3 img, +.image.is-2by3 .has-ratio, .image.is-3by5 img, +.image.is-3by5 .has-ratio, .image.is-9by16 img, +.image.is-9by16 .has-ratio, .image.is-1by2 img, +.image.is-1by2 .has-ratio, .image.is-1by3 img, +.image.is-1by3 .has-ratio { + height: 100%; + width: 100%; +} +.image.is-square, .image.is-1by1 { + padding-top: 100%; +} +.image.is-5by4 { + padding-top: 80%; +} +.image.is-4by3 { + padding-top: 75%; +} +.image.is-3by2 { + padding-top: 66.6666%; +} +.image.is-5by3 { + padding-top: 60%; +} +.image.is-16by9 { + padding-top: 56.25%; +} +.image.is-2by1 { + padding-top: 50%; +} +.image.is-3by1 { + padding-top: 33.3333%; +} +.image.is-4by5 { + padding-top: 125%; +} +.image.is-3by4 { + padding-top: 133.3333%; +} +.image.is-2by3 { + padding-top: 150%; +} +.image.is-3by5 { + padding-top: 166.6666%; +} +.image.is-9by16 { + padding-top: 177.7777%; +} +.image.is-1by2 { + padding-top: 200%; +} +.image.is-1by3 { + padding-top: 300%; +} +.image.is-16x16 { + height: 16px; + width: 16px; +} +.image.is-24x24 { + height: 24px; + width: 24px; +} +.image.is-32x32 { + height: 32px; + width: 32px; +} +.image.is-48x48 { + height: 48px; + width: 48px; +} +.image.is-64x64 { + height: 64px; + width: 64px; +} +.image.is-96x96 { + height: 96px; + width: 96px; +} +.image.is-128x128 { + height: 128px; + width: 128px; +} + +.notification { + background-color: whitesmoke; + border-radius: 4px; + position: relative; + padding: 1.25rem 2.5rem 1.25rem 1.5rem; +} +.notification a:not(.button):not(.dropdown-item) { + color: currentColor; + text-decoration: underline; +} +.notification strong { + color: currentColor; +} +.notification code, +.notification pre { + background: white; +} +.notification pre code { + background: transparent; +} +.notification > .delete { + right: 0.5rem; + position: absolute; + top: 0.5rem; +} +.notification .title, +.notification .subtitle, +.notification .content { + color: currentColor; +} +.notification.is-white { + background-color: white; + color: #0a0a0a; +} +.notification.is-black { + background-color: #0a0a0a; + color: white; +} +.notification.is-light { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); +} +.notification.is-dark { + background-color: #363636; + color: #fff; +} +.notification.is-primary { + background-color: #00d1b2; + color: #fff; +} +.notification.is-primary.is-light { + background-color: #ebfffc; + color: #00947e; +} +.notification.is-link { + background-color: #feda5a; + color: rgba(0, 0, 0, 0.7); +} +.notification.is-link.is-light { + background-color: #fffaeb; + color: #937301; +} +.notification.is-info { + background-color: #3298dc; + color: #fff; +} +.notification.is-info.is-light { + background-color: #eef6fc; + color: #1d72aa; +} +.notification.is-success { + background-color: #48c774; + color: #fff; +} +.notification.is-success.is-light { + background-color: #effaf3; + color: #257942; +} +.notification.is-warning { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); +} +.notification.is-warning.is-light { + background-color: #fffbeb; + color: #947600; +} +.notification.is-danger { + background-color: #f14668; + color: #fff; +} +.notification.is-danger.is-light { + background-color: #feecf0; + color: #cc0f35; +} + +.progress { + -moz-appearance: none; + -webkit-appearance: none; + border: none; + border-radius: 290486px; + display: block; + height: 1rem; + overflow: hidden; + padding: 0; + width: 100%; +} +.progress::-webkit-progress-bar { + background-color: #ededed; +} +.progress::-webkit-progress-value { + background-color: #4a4a4a; +} +.progress::-moz-progress-bar { + background-color: #4a4a4a; +} +.progress::-ms-fill { + background-color: #4a4a4a; + border: none; +} +.progress.is-white::-webkit-progress-value { + background-color: white; +} +.progress.is-white::-moz-progress-bar { + background-color: white; +} +.progress.is-white::-ms-fill { + background-color: white; +} +.progress.is-white:indeterminate { + background-image: linear-gradient(to right, white 30%, #ededed 30%); +} +.progress.is-black::-webkit-progress-value { + background-color: #0a0a0a; +} +.progress.is-black::-moz-progress-bar { + background-color: #0a0a0a; +} +.progress.is-black::-ms-fill { + background-color: #0a0a0a; +} +.progress.is-black:indeterminate { + background-image: linear-gradient(to right, #0a0a0a 30%, #ededed 30%); +} +.progress.is-light::-webkit-progress-value { + background-color: whitesmoke; +} +.progress.is-light::-moz-progress-bar { + background-color: whitesmoke; +} +.progress.is-light::-ms-fill { + background-color: whitesmoke; +} +.progress.is-light:indeterminate { + background-image: linear-gradient(to right, whitesmoke 30%, #ededed 30%); +} +.progress.is-dark::-webkit-progress-value { + background-color: #363636; +} +.progress.is-dark::-moz-progress-bar { + background-color: #363636; +} +.progress.is-dark::-ms-fill { + background-color: #363636; +} +.progress.is-dark:indeterminate { + background-image: linear-gradient(to right, #363636 30%, #ededed 30%); +} +.progress.is-primary::-webkit-progress-value { + background-color: #00d1b2; +} +.progress.is-primary::-moz-progress-bar { + background-color: #00d1b2; +} +.progress.is-primary::-ms-fill { + background-color: #00d1b2; +} +.progress.is-primary:indeterminate { + background-image: linear-gradient(to right, #00d1b2 30%, #ededed 30%); +} +.progress.is-link::-webkit-progress-value { + background-color: #feda5a; +} +.progress.is-link::-moz-progress-bar { + background-color: #feda5a; +} +.progress.is-link::-ms-fill { + background-color: #feda5a; +} +.progress.is-link:indeterminate { + background-image: linear-gradient(to right, #feda5a 30%, #ededed 30%); +} +.progress.is-info::-webkit-progress-value { + background-color: #3298dc; +} +.progress.is-info::-moz-progress-bar { + background-color: #3298dc; +} +.progress.is-info::-ms-fill { + background-color: #3298dc; +} +.progress.is-info:indeterminate { + background-image: linear-gradient(to right, #3298dc 30%, #ededed 30%); +} +.progress.is-success::-webkit-progress-value { + background-color: #48c774; +} +.progress.is-success::-moz-progress-bar { + background-color: #48c774; +} +.progress.is-success::-ms-fill { + background-color: #48c774; +} +.progress.is-success:indeterminate { + background-image: linear-gradient(to right, #48c774 30%, #ededed 30%); +} +.progress.is-warning::-webkit-progress-value { + background-color: #ffdd57; +} +.progress.is-warning::-moz-progress-bar { + background-color: #ffdd57; +} +.progress.is-warning::-ms-fill { + background-color: #ffdd57; +} +.progress.is-warning:indeterminate { + background-image: linear-gradient(to right, #ffdd57 30%, #ededed 30%); +} +.progress.is-danger::-webkit-progress-value { + background-color: #f14668; +} +.progress.is-danger::-moz-progress-bar { + background-color: #f14668; +} +.progress.is-danger::-ms-fill { + background-color: #f14668; +} +.progress.is-danger:indeterminate { + background-image: linear-gradient(to right, #f14668 30%, #ededed 30%); +} +.progress:indeterminate { + animation-duration: 1.5s; + animation-iteration-count: infinite; + animation-name: moveIndeterminate; + animation-timing-function: linear; + background-color: #ededed; + background-image: linear-gradient(to right, #4a4a4a 30%, #ededed 30%); + background-position: top left; + background-repeat: no-repeat; + background-size: 150% 150%; +} +.progress:indeterminate::-webkit-progress-bar { + background-color: transparent; +} +.progress:indeterminate::-moz-progress-bar { + background-color: transparent; +} +.progress:indeterminate::-ms-fill { + animation-name: none; +} +.progress.is-small { + height: 0.75rem; +} +.progress.is-medium { + height: 1.25rem; +} +.progress.is-large { + height: 1.5rem; +} + +@keyframes moveIndeterminate { + from { + background-position: 200% 0; + } + to { + background-position: -200% 0; + } +} +.table { + background-color: white; + color: #363636; +} +.table td, +.table th { + border: 1px solid #dbdbdb; + border-width: 0 0 1px; + padding: 0.5em 0.75em; + vertical-align: top; +} +.table td.is-white, +.table th.is-white { + background-color: white; + border-color: white; + color: #0a0a0a; +} +.table td.is-black, +.table th.is-black { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; +} +.table td.is-light, +.table th.is-light { + background-color: whitesmoke; + border-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); +} +.table td.is-dark, +.table th.is-dark { + background-color: #363636; + border-color: #363636; + color: #fff; +} +.table td.is-primary, +.table th.is-primary { + background-color: #00d1b2; + border-color: #00d1b2; + color: #fff; +} +.table td.is-link, +.table th.is-link { + background-color: #feda5a; + border-color: #feda5a; + color: rgba(0, 0, 0, 0.7); +} +.table td.is-info, +.table th.is-info { + background-color: #3298dc; + border-color: #3298dc; + color: #fff; +} +.table td.is-success, +.table th.is-success { + background-color: #48c774; + border-color: #48c774; + color: #fff; +} +.table td.is-warning, +.table th.is-warning { + background-color: #ffdd57; + border-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); +} +.table td.is-danger, +.table th.is-danger { + background-color: #f14668; + border-color: #f14668; + color: #fff; +} +.table td.is-narrow, +.table th.is-narrow { + white-space: nowrap; + width: 1%; +} +.table td.is-selected, +.table th.is-selected { + background-color: #00d1b2; + color: #fff; +} +.table td.is-selected a, +.table td.is-selected strong, +.table th.is-selected a, +.table th.is-selected strong { + color: currentColor; +} +.table td.is-vcentered, +.table th.is-vcentered { + vertical-align: middle; +} +.table th { + color: #363636; +} +.table th:not([align]) { + text-align: inherit; +} +.table tr.is-selected { + background-color: #00d1b2; + color: #fff; +} +.table tr.is-selected a, +.table tr.is-selected strong { + color: currentColor; +} +.table tr.is-selected td, +.table tr.is-selected th { + border-color: #fff; + color: currentColor; +} +.table thead { + background-color: #feda6a; +} +.table thead td, +.table thead th { + border-width: 0 0 2px; + color: #363636; +} +.table tfoot { + background-color: transparent; +} +.table tfoot td, +.table tfoot th { + border-width: 2px 0 0; + color: #363636; +} +.table tbody { + background-color: white; +} +.table tbody tr:last-child td, +.table tbody tr:last-child th { + border-bottom-width: 0; +} +.table.is-bordered td, +.table.is-bordered th { + border-width: 1px; +} +.table.is-bordered tr:last-child td, +.table.is-bordered tr:last-child th { + border-bottom-width: 1px; +} +.table.is-fullwidth { + width: 100%; +} +.table.is-hoverable tbody tr:not(.is-selected):hover { + background-color: #fafafa; +} +.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover { + background-color: #fafafa; +} +.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even) { + background-color: whitesmoke; +} +.table.is-narrow td, +.table.is-narrow th { + padding: 0.25em 0.5em; +} +.table.is-striped tbody tr:not(.is-selected):nth-child(even) { + background-color: #fafafa; +} + +.table-container { + -webkit-overflow-scrolling: touch; + overflow: auto; + overflow-y: hidden; + max-width: 100%; +} + +.tags { + align-items: center; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.tags .tag { + margin-bottom: 0.5rem; +} +.tags .tag:not(:last-child) { + margin-right: 0.5rem; +} +.tags:last-child { + margin-bottom: -0.5rem; +} +.tags:not(:last-child) { + margin-bottom: 1rem; +} +.tags.are-medium .tag:not(.is-normal):not(.is-large) { + font-size: 1rem; +} +.tags.are-large .tag:not(.is-normal):not(.is-medium) { + font-size: 1.25rem; +} +.tags.is-centered { + justify-content: center; +} +.tags.is-centered .tag { + margin-right: 0.25rem; + margin-left: 0.25rem; +} +.tags.is-right { + justify-content: flex-end; +} +.tags.is-right .tag:not(:first-child) { + margin-left: 0.5rem; +} +.tags.is-right .tag:not(:last-child) { + margin-right: 0; +} +.tags.has-addons .tag { + margin-right: 0; +} +.tags.has-addons .tag:not(:first-child) { + margin-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.tags.has-addons .tag:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.tag:not(body) { + align-items: center; + background-color: whitesmoke; + border-radius: 4px; + color: #4a4a4a; + display: inline-flex; + font-size: 0.75rem; + height: 2em; + justify-content: center; + line-height: 1.5; + padding-left: 0.75em; + padding-right: 0.75em; + white-space: nowrap; +} +.tag:not(body) .delete { + margin-left: 0.25rem; + margin-right: -0.375rem; +} +.tag:not(body).is-white { + background-color: white; + color: #0a0a0a; +} +.tag:not(body).is-black { + background-color: #0a0a0a; + color: white; +} +.tag:not(body).is-light { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); +} +.tag:not(body).is-dark { + background-color: #363636; + color: #fff; +} +.tag:not(body).is-primary { + background-color: #00d1b2; + color: #fff; +} +.tag:not(body).is-primary.is-light { + background-color: #ebfffc; + color: #00947e; +} +.tag:not(body).is-link { + background-color: #feda5a; + color: rgba(0, 0, 0, 0.7); +} +.tag:not(body).is-link.is-light { + background-color: #fffaeb; + color: #937301; +} +.tag:not(body).is-info { + background-color: #3298dc; + color: #fff; +} +.tag:not(body).is-info.is-light { + background-color: #eef6fc; + color: #1d72aa; +} +.tag:not(body).is-success { + background-color: #48c774; + color: #fff; +} +.tag:not(body).is-success.is-light { + background-color: #effaf3; + color: #257942; +} +.tag:not(body).is-warning { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); +} +.tag:not(body).is-warning.is-light { + background-color: #fffbeb; + color: #947600; +} +.tag:not(body).is-danger { + background-color: #f14668; + color: #fff; +} +.tag:not(body).is-danger.is-light { + background-color: #feecf0; + color: #cc0f35; +} +.tag:not(body).is-normal { + font-size: 0.75rem; +} +.tag:not(body).is-medium { + font-size: 1rem; +} +.tag:not(body).is-large { + font-size: 1.25rem; +} +.tag:not(body) .icon:first-child:not(:last-child) { + margin-left: -0.375em; + margin-right: 0.1875em; +} +.tag:not(body) .icon:last-child:not(:first-child) { + margin-left: 0.1875em; + margin-right: -0.375em; +} +.tag:not(body) .icon:first-child:last-child { + margin-left: -0.375em; + margin-right: -0.375em; +} +.tag:not(body).is-delete { + margin-left: 1px; + padding: 0; + position: relative; + width: 2em; +} +.tag:not(body).is-delete::before, .tag:not(body).is-delete::after { + background-color: currentColor; + content: ""; + display: block; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform-origin: center center; +} +.tag:not(body).is-delete::before { + height: 1px; + width: 50%; +} +.tag:not(body).is-delete::after { + height: 50%; + width: 1px; +} +.tag:not(body).is-delete:hover, .tag:not(body).is-delete:focus { + background-color: #e8e8e8; +} +.tag:not(body).is-delete:active { + background-color: #dbdbdb; +} +.tag:not(body).is-rounded { + border-radius: 290486px; +} + +a.tag:hover { + text-decoration: underline; +} + +.title, +.subtitle { + word-break: break-word; +} +.title em, +.title span, +.subtitle em, +.subtitle span { + font-weight: inherit; +} +.title sub, +.subtitle sub { + font-size: 0.75em; +} +.title sup, +.subtitle sup { + font-size: 0.75em; +} +.title .tag, +.subtitle .tag { + vertical-align: middle; +} + +.title { + color: #363636; + font-size: 2rem; + font-weight: 600; + line-height: 1.125; +} +.title strong { + color: inherit; + font-weight: inherit; +} +.title + .highlight { + margin-top: -0.75rem; +} +.title:not(.is-spaced) + .subtitle { + margin-top: -1.25rem; +} +.title.is-1 { + font-size: 3rem; +} +.title.is-2 { + font-size: 2.5rem; +} +.title.is-3 { + font-size: 2rem; +} +.title.is-4 { + font-size: 1.5rem; +} +.title.is-5 { + font-size: 1.25rem; +} +.title.is-6 { + font-size: 1rem; +} +.title.is-7 { + font-size: 0.75rem; +} + +.subtitle { + color: #4a4a4a; + font-size: 1.25rem; + font-weight: 400; + line-height: 1.25; +} +.subtitle strong { + color: #363636; + font-weight: 600; +} +.subtitle:not(.is-spaced) + .title { + margin-top: -1.25rem; +} +.subtitle.is-1 { + font-size: 3rem; +} +.subtitle.is-2 { + font-size: 2.5rem; +} +.subtitle.is-3 { + font-size: 2rem; +} +.subtitle.is-4 { + font-size: 1.5rem; +} +.subtitle.is-5 { + font-size: 1.25rem; +} +.subtitle.is-6 { + font-size: 1rem; +} +.subtitle.is-7 { + font-size: 0.75rem; +} + +.heading { + display: block; + font-size: 11px; + letter-spacing: 1px; + margin-bottom: 5px; + text-transform: uppercase; +} + +.highlight { + font-weight: 400; + max-width: 100%; + overflow: hidden; + padding: 0; +} +.highlight pre { + overflow: auto; + max-width: 100%; +} + +.number { + align-items: center; + background-color: whitesmoke; + border-radius: 290486px; + display: inline-flex; + font-size: 1.25rem; + height: 2em; + justify-content: center; + margin-right: 1.5rem; + min-width: 2.5em; + padding: 0.25rem 0.5rem; + text-align: center; + vertical-align: top; +} + +/* Bulma Form */ +.select select, .textarea, .input { + background-color: white; + border-color: #dbdbdb; + border-radius: 4px; + color: #363636; +} +.select select::-moz-placeholder, .textarea::-moz-placeholder, .input::-moz-placeholder { + color: rgba(54, 54, 54, 0.3); +} +.select select::-webkit-input-placeholder, .textarea::-webkit-input-placeholder, .input::-webkit-input-placeholder { + color: rgba(54, 54, 54, 0.3); +} +.select select:-moz-placeholder, .textarea:-moz-placeholder, .input:-moz-placeholder { + color: rgba(54, 54, 54, 0.3); +} +.select select:-ms-input-placeholder, .textarea:-ms-input-placeholder, .input:-ms-input-placeholder { + color: rgba(54, 54, 54, 0.3); +} +.select select:hover, .textarea:hover, .input:hover, .select select.is-hovered, .is-hovered.textarea, .is-hovered.input { + border-color: #b5b5b5; +} +.select select:focus, .textarea:focus, .input:focus, .select select.is-focused, .is-focused.textarea, .is-focused.input, .select select:active, .textarea:active, .input:active, .select select.is-active, .is-active.textarea, .is-active.input { + border-color: #feda5a; + box-shadow: 0 0 0 0.125em rgba(254, 218, 90, 0.25); +} +.select select[disabled], [disabled].textarea, [disabled].input, fieldset[disabled] .select select, .select fieldset[disabled] select, fieldset[disabled] .textarea, fieldset[disabled] .input { + background-color: whitesmoke; + border-color: whitesmoke; + box-shadow: none; + color: #7a7a7a; +} +.select select[disabled]::-moz-placeholder, [disabled].textarea::-moz-placeholder, [disabled].input::-moz-placeholder, fieldset[disabled] .select select::-moz-placeholder, .select fieldset[disabled] select::-moz-placeholder, fieldset[disabled] .textarea::-moz-placeholder, fieldset[disabled] .input::-moz-placeholder { + color: rgba(122, 122, 122, 0.3); +} +.select select[disabled]::-webkit-input-placeholder, [disabled].textarea::-webkit-input-placeholder, [disabled].input::-webkit-input-placeholder, fieldset[disabled] .select select::-webkit-input-placeholder, .select fieldset[disabled] select::-webkit-input-placeholder, fieldset[disabled] .textarea::-webkit-input-placeholder, fieldset[disabled] .input::-webkit-input-placeholder { + color: rgba(122, 122, 122, 0.3); +} +.select select[disabled]:-moz-placeholder, [disabled].textarea:-moz-placeholder, [disabled].input:-moz-placeholder, fieldset[disabled] .select select:-moz-placeholder, .select fieldset[disabled] select:-moz-placeholder, fieldset[disabled] .textarea:-moz-placeholder, fieldset[disabled] .input:-moz-placeholder { + color: rgba(122, 122, 122, 0.3); +} +.select select[disabled]:-ms-input-placeholder, [disabled].textarea:-ms-input-placeholder, [disabled].input:-ms-input-placeholder, fieldset[disabled] .select select:-ms-input-placeholder, .select fieldset[disabled] select:-ms-input-placeholder, fieldset[disabled] .textarea:-ms-input-placeholder, fieldset[disabled] .input:-ms-input-placeholder { + color: rgba(122, 122, 122, 0.3); +} + +.textarea, .input { + box-shadow: inset 0 0.0625em 0.125em rgba(10, 10, 10, 0.05); + max-width: 100%; + width: 100%; +} +[readonly].textarea, [readonly].input { + box-shadow: none; +} +.is-white.textarea, .is-white.input { + border-color: white; +} +.is-white.textarea:focus, .is-white.input:focus, .is-white.is-focused.textarea, .is-white.is-focused.input, .is-white.textarea:active, .is-white.input:active, .is-white.is-active.textarea, .is-white.is-active.input { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); +} +.is-black.textarea, .is-black.input { + border-color: #0a0a0a; +} +.is-black.textarea:focus, .is-black.input:focus, .is-black.is-focused.textarea, .is-black.is-focused.input, .is-black.textarea:active, .is-black.input:active, .is-black.is-active.textarea, .is-black.is-active.input { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); +} +.is-light.textarea, .is-light.input { + border-color: whitesmoke; +} +.is-light.textarea:focus, .is-light.input:focus, .is-light.is-focused.textarea, .is-light.is-focused.input, .is-light.textarea:active, .is-light.input:active, .is-light.is-active.textarea, .is-light.is-active.input { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); +} +.is-dark.textarea, .is-dark.input { + border-color: #363636; +} +.is-dark.textarea:focus, .is-dark.input:focus, .is-dark.is-focused.textarea, .is-dark.is-focused.input, .is-dark.textarea:active, .is-dark.input:active, .is-dark.is-active.textarea, .is-dark.is-active.input { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); +} +.is-primary.textarea, .is-primary.input { + border-color: #00d1b2; +} +.is-primary.textarea:focus, .is-primary.input:focus, .is-primary.is-focused.textarea, .is-primary.is-focused.input, .is-primary.textarea:active, .is-primary.input:active, .is-primary.is-active.textarea, .is-primary.is-active.input { + box-shadow: 0 0 0 0.125em rgba(0, 209, 178, 0.25); +} +.is-link.textarea, .is-link.input { + border-color: #feda5a; +} +.is-link.textarea:focus, .is-link.input:focus, .is-link.is-focused.textarea, .is-link.is-focused.input, .is-link.textarea:active, .is-link.input:active, .is-link.is-active.textarea, .is-link.is-active.input { + box-shadow: 0 0 0 0.125em rgba(254, 218, 90, 0.25); +} +.is-info.textarea, .is-info.input { + border-color: #3298dc; +} +.is-info.textarea:focus, .is-info.input:focus, .is-info.is-focused.textarea, .is-info.is-focused.input, .is-info.textarea:active, .is-info.input:active, .is-info.is-active.textarea, .is-info.is-active.input { + box-shadow: 0 0 0 0.125em rgba(50, 152, 220, 0.25); +} +.is-success.textarea, .is-success.input { + border-color: #48c774; +} +.is-success.textarea:focus, .is-success.input:focus, .is-success.is-focused.textarea, .is-success.is-focused.input, .is-success.textarea:active, .is-success.input:active, .is-success.is-active.textarea, .is-success.is-active.input { + box-shadow: 0 0 0 0.125em rgba(72, 199, 116, 0.25); +} +.is-warning.textarea, .is-warning.input { + border-color: #ffdd57; +} +.is-warning.textarea:focus, .is-warning.input:focus, .is-warning.is-focused.textarea, .is-warning.is-focused.input, .is-warning.textarea:active, .is-warning.input:active, .is-warning.is-active.textarea, .is-warning.is-active.input { + box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); +} +.is-danger.textarea, .is-danger.input { + border-color: #f14668; +} +.is-danger.textarea:focus, .is-danger.input:focus, .is-danger.is-focused.textarea, .is-danger.is-focused.input, .is-danger.textarea:active, .is-danger.input:active, .is-danger.is-active.textarea, .is-danger.is-active.input { + box-shadow: 0 0 0 0.125em rgba(241, 70, 104, 0.25); +} +.is-small.textarea, .is-small.input { + border-radius: 2px; + font-size: 0.75rem; +} +.is-medium.textarea, .is-medium.input { + font-size: 1.25rem; +} +.is-large.textarea, .is-large.input { + font-size: 1.5rem; +} +.is-fullwidth.textarea, .is-fullwidth.input { + display: block; + width: 100%; +} +.is-inline.textarea, .is-inline.input { + display: inline; + width: auto; +} + +.input.is-rounded { + border-radius: 290486px; + padding-left: calc(calc(0.75em - 1px) + 0.375em); + padding-right: calc(calc(0.75em - 1px) + 0.375em); +} +.input.is-static { + background-color: transparent; + border-color: transparent; + box-shadow: none; + padding-left: 0; + padding-right: 0; +} + +.textarea { + display: block; + max-width: 100%; + min-width: 100%; + padding: calc(0.75em - 1px); + resize: vertical; +} +.textarea:not([rows]) { + max-height: 40em; + min-height: 8em; +} +.textarea[rows] { + height: initial; +} +.textarea.has-fixed-size { + resize: none; +} + +.radio, .checkbox { + cursor: pointer; + display: inline-block; + line-height: 1.25; + position: relative; +} +.radio input, .checkbox input { + cursor: pointer; +} +.radio:hover, .checkbox:hover { + color: #363636; +} +[disabled].radio, [disabled].checkbox, fieldset[disabled] .radio, fieldset[disabled] .checkbox, +.radio input[disabled], +.checkbox input[disabled] { + color: #7a7a7a; + cursor: not-allowed; +} + +.radio + .radio { + margin-left: 0.5em; +} + +.select { + display: inline-block; + max-width: 100%; + position: relative; + vertical-align: top; +} +.select:not(.is-multiple) { + height: 2.5em; +} +.select:not(.is-multiple):not(.is-loading)::after { + border-color: #feda5a; + right: 1.125em; + z-index: 4; +} +.select.is-rounded select { + border-radius: 290486px; + padding-left: 1em; +} +.select select { + cursor: pointer; + display: block; + font-size: 1em; + max-width: 100%; + outline: none; +} +.select select::-ms-expand { + display: none; +} +.select select[disabled]:hover, fieldset[disabled] .select select:hover { + border-color: whitesmoke; +} +.select select:not([multiple]) { + padding-right: 2.5em; +} +.select select[multiple] { + height: auto; + padding: 0; +} +.select select[multiple] option { + padding: 0.5em 1em; +} +.select:not(.is-multiple):not(.is-loading):hover::after { + border-color: #363636; +} +.select.is-white:not(:hover)::after { + border-color: white; +} +.select.is-white select { + border-color: white; +} +.select.is-white select:hover, .select.is-white select.is-hovered { + border-color: #f2f2f2; +} +.select.is-white select:focus, .select.is-white select.is-focused, .select.is-white select:active, .select.is-white select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); +} +.select.is-black:not(:hover)::after { + border-color: #0a0a0a; +} +.select.is-black select { + border-color: #0a0a0a; +} +.select.is-black select:hover, .select.is-black select.is-hovered { + border-color: black; +} +.select.is-black select:focus, .select.is-black select.is-focused, .select.is-black select:active, .select.is-black select.is-active { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); +} +.select.is-light:not(:hover)::after { + border-color: whitesmoke; +} +.select.is-light select { + border-color: whitesmoke; +} +.select.is-light select:hover, .select.is-light select.is-hovered { + border-color: #e8e8e8; +} +.select.is-light select:focus, .select.is-light select.is-focused, .select.is-light select:active, .select.is-light select.is-active { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); +} +.select.is-dark:not(:hover)::after { + border-color: #363636; +} +.select.is-dark select { + border-color: #363636; +} +.select.is-dark select:hover, .select.is-dark select.is-hovered { + border-color: #292929; +} +.select.is-dark select:focus, .select.is-dark select.is-focused, .select.is-dark select:active, .select.is-dark select.is-active { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); +} +.select.is-primary:not(:hover)::after { + border-color: #00d1b2; +} +.select.is-primary select { + border-color: #00d1b2; +} +.select.is-primary select:hover, .select.is-primary select.is-hovered { + border-color: #00b89c; +} +.select.is-primary select:focus, .select.is-primary select.is-focused, .select.is-primary select:active, .select.is-primary select.is-active { + box-shadow: 0 0 0 0.125em rgba(0, 209, 178, 0.25); +} +.select.is-link:not(:hover)::after { + border-color: #feda5a; +} +.select.is-link select { + border-color: #feda5a; +} +.select.is-link select:hover, .select.is-link select.is-hovered { + border-color: #fed441; +} +.select.is-link select:focus, .select.is-link select.is-focused, .select.is-link select:active, .select.is-link select.is-active { + box-shadow: 0 0 0 0.125em rgba(254, 218, 90, 0.25); +} +.select.is-info:not(:hover)::after { + border-color: #3298dc; +} +.select.is-info select { + border-color: #3298dc; +} +.select.is-info select:hover, .select.is-info select.is-hovered { + border-color: #238cd1; +} +.select.is-info select:focus, .select.is-info select.is-focused, .select.is-info select:active, .select.is-info select.is-active { + box-shadow: 0 0 0 0.125em rgba(50, 152, 220, 0.25); +} +.select.is-success:not(:hover)::after { + border-color: #48c774; +} +.select.is-success select { + border-color: #48c774; +} +.select.is-success select:hover, .select.is-success select.is-hovered { + border-color: #3abb67; +} +.select.is-success select:focus, .select.is-success select.is-focused, .select.is-success select:active, .select.is-success select.is-active { + box-shadow: 0 0 0 0.125em rgba(72, 199, 116, 0.25); +} +.select.is-warning:not(:hover)::after { + border-color: #ffdd57; +} +.select.is-warning select { + border-color: #ffdd57; +} +.select.is-warning select:hover, .select.is-warning select.is-hovered { + border-color: #ffd83d; +} +.select.is-warning select:focus, .select.is-warning select.is-focused, .select.is-warning select:active, .select.is-warning select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); +} +.select.is-danger:not(:hover)::after { + border-color: #f14668; +} +.select.is-danger select { + border-color: #f14668; +} +.select.is-danger select:hover, .select.is-danger select.is-hovered { + border-color: #ef2e55; +} +.select.is-danger select:focus, .select.is-danger select.is-focused, .select.is-danger select:active, .select.is-danger select.is-active { + box-shadow: 0 0 0 0.125em rgba(241, 70, 104, 0.25); +} +.select.is-small { + border-radius: 2px; + font-size: 0.75rem; +} +.select.is-medium { + font-size: 1.25rem; +} +.select.is-large { + font-size: 1.5rem; +} +.select.is-disabled::after { + border-color: #7a7a7a; +} +.select.is-fullwidth { + width: 100%; +} +.select.is-fullwidth select { + width: 100%; +} +.select.is-loading::after { + margin-top: 0; + position: absolute; + right: 0.625em; + top: 0.625em; + transform: none; +} +.select.is-loading.is-small:after { + font-size: 0.75rem; +} +.select.is-loading.is-medium:after { + font-size: 1.25rem; +} +.select.is-loading.is-large:after { + font-size: 1.5rem; +} + +.file { + align-items: stretch; + display: flex; + justify-content: flex-start; + position: relative; +} +.file.is-white .file-cta { + background-color: white; + border-color: transparent; + color: #0a0a0a; +} +.file.is-white:hover .file-cta, .file.is-white.is-hovered .file-cta { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; +} +.file.is-white:focus .file-cta, .file.is-white.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25); + color: #0a0a0a; +} +.file.is-white:active .file-cta, .file.is-white.is-active .file-cta { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; +} +.file.is-black .file-cta { + background-color: #0a0a0a; + border-color: transparent; + color: white; +} +.file.is-black:hover .file-cta, .file.is-black.is-hovered .file-cta { + background-color: #040404; + border-color: transparent; + color: white; +} +.file.is-black:focus .file-cta, .file.is-black.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25); + color: white; +} +.file.is-black:active .file-cta, .file.is-black.is-active .file-cta { + background-color: black; + border-color: transparent; + color: white; +} +.file.is-light .file-cta { + background-color: whitesmoke; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.file.is-light:hover .file-cta, .file.is-light.is-hovered .file-cta { + background-color: #eeeeee; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.file.is-light:focus .file-cta, .file.is-light.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25); + color: rgba(0, 0, 0, 0.7); +} +.file.is-light:active .file-cta, .file.is-light.is-active .file-cta { + background-color: #e8e8e8; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.file.is-dark .file-cta { + background-color: #363636; + border-color: transparent; + color: #fff; +} +.file.is-dark:hover .file-cta, .file.is-dark.is-hovered .file-cta { + background-color: #2f2f2f; + border-color: transparent; + color: #fff; +} +.file.is-dark:focus .file-cta, .file.is-dark.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25); + color: #fff; +} +.file.is-dark:active .file-cta, .file.is-dark.is-active .file-cta { + background-color: #292929; + border-color: transparent; + color: #fff; +} +.file.is-primary .file-cta { + background-color: #00d1b2; + border-color: transparent; + color: #fff; +} +.file.is-primary:hover .file-cta, .file.is-primary.is-hovered .file-cta { + background-color: #00c4a7; + border-color: transparent; + color: #fff; +} +.file.is-primary:focus .file-cta, .file.is-primary.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(0, 209, 178, 0.25); + color: #fff; +} +.file.is-primary:active .file-cta, .file.is-primary.is-active .file-cta { + background-color: #00b89c; + border-color: transparent; + color: #fff; +} +.file.is-link .file-cta { + background-color: #feda5a; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.file.is-link:hover .file-cta, .file.is-link.is-hovered .file-cta { + background-color: #fed74d; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.file.is-link:focus .file-cta, .file.is-link.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(254, 218, 90, 0.25); + color: rgba(0, 0, 0, 0.7); +} +.file.is-link:active .file-cta, .file.is-link.is-active .file-cta { + background-color: #fed441; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.file.is-info .file-cta { + background-color: #3298dc; + border-color: transparent; + color: #fff; +} +.file.is-info:hover .file-cta, .file.is-info.is-hovered .file-cta { + background-color: #2793da; + border-color: transparent; + color: #fff; +} +.file.is-info:focus .file-cta, .file.is-info.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(50, 152, 220, 0.25); + color: #fff; +} +.file.is-info:active .file-cta, .file.is-info.is-active .file-cta { + background-color: #238cd1; + border-color: transparent; + color: #fff; +} +.file.is-success .file-cta { + background-color: #48c774; + border-color: transparent; + color: #fff; +} +.file.is-success:hover .file-cta, .file.is-success.is-hovered .file-cta { + background-color: #3ec46d; + border-color: transparent; + color: #fff; +} +.file.is-success:focus .file-cta, .file.is-success.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(72, 199, 116, 0.25); + color: #fff; +} +.file.is-success:active .file-cta, .file.is-success.is-active .file-cta { + background-color: #3abb67; + border-color: transparent; + color: #fff; +} +.file.is-warning .file-cta { + background-color: #ffdd57; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.file.is-warning:hover .file-cta, .file.is-warning.is-hovered .file-cta { + background-color: #ffdb4a; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.file.is-warning:focus .file-cta, .file.is-warning.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 221, 87, 0.25); + color: rgba(0, 0, 0, 0.7); +} +.file.is-warning:active .file-cta, .file.is-warning.is-active .file-cta { + background-color: #ffd83d; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +.file.is-danger .file-cta { + background-color: #f14668; + border-color: transparent; + color: #fff; +} +.file.is-danger:hover .file-cta, .file.is-danger.is-hovered .file-cta { + background-color: #f03a5f; + border-color: transparent; + color: #fff; +} +.file.is-danger:focus .file-cta, .file.is-danger.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(241, 70, 104, 0.25); + color: #fff; +} +.file.is-danger:active .file-cta, .file.is-danger.is-active .file-cta { + background-color: #ef2e55; + border-color: transparent; + color: #fff; +} +.file.is-small { + font-size: 0.75rem; +} +.file.is-medium { + font-size: 1.25rem; +} +.file.is-medium .file-icon .fa { + font-size: 21px; +} +.file.is-large { + font-size: 1.5rem; +} +.file.is-large .file-icon .fa { + font-size: 28px; +} +.file.has-name .file-cta { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.file.has-name .file-name { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.file.has-name.is-empty .file-cta { + border-radius: 4px; +} +.file.has-name.is-empty .file-name { + display: none; +} +.file.is-boxed .file-label { + flex-direction: column; +} +.file.is-boxed .file-cta { + flex-direction: column; + height: auto; + padding: 1em 3em; +} +.file.is-boxed .file-name { + border-width: 0 1px 1px; +} +.file.is-boxed .file-icon { + height: 1.5em; + width: 1.5em; +} +.file.is-boxed .file-icon .fa { + font-size: 21px; +} +.file.is-boxed.is-small .file-icon .fa { + font-size: 14px; +} +.file.is-boxed.is-medium .file-icon .fa { + font-size: 28px; +} +.file.is-boxed.is-large .file-icon .fa { + font-size: 35px; +} +.file.is-boxed.has-name .file-cta { + border-radius: 4px 4px 0 0; +} +.file.is-boxed.has-name .file-name { + border-radius: 0 0 4px 4px; + border-width: 0 1px 1px; +} +.file.is-centered { + justify-content: center; +} +.file.is-fullwidth .file-label { + width: 100%; +} +.file.is-fullwidth .file-name { + flex-grow: 1; + max-width: none; +} +.file.is-right { + justify-content: flex-end; +} +.file.is-right .file-cta { + border-radius: 0 4px 4px 0; +} +.file.is-right .file-name { + border-radius: 4px 0 0 4px; + border-width: 1px 0 1px 1px; + order: -1; +} + +.file-label { + align-items: stretch; + display: flex; + cursor: pointer; + justify-content: flex-start; + overflow: hidden; + position: relative; +} +.file-label:hover .file-cta { + background-color: #eeeeee; + color: #363636; +} +.file-label:hover .file-name { + border-color: #d5d5d5; +} +.file-label:active .file-cta { + background-color: #e8e8e8; + color: #363636; +} +.file-label:active .file-name { + border-color: #cfcfcf; +} + +.file-input { + height: 100%; + left: 0; + opacity: 0; + outline: none; + position: absolute; + top: 0; + width: 100%; +} + +.file-cta, +.file-name { + border-color: #dbdbdb; + border-radius: 4px; + font-size: 1em; + padding-left: 1em; + padding-right: 1em; + white-space: nowrap; +} + +.file-cta { + background-color: whitesmoke; + color: #4a4a4a; +} + +.file-name { + border-color: #dbdbdb; + border-style: solid; + border-width: 1px 1px 1px 0; + display: block; + max-width: 16em; + overflow: hidden; + text-align: inherit; + text-overflow: ellipsis; +} + +.file-icon { + align-items: center; + display: flex; + height: 1em; + justify-content: center; + margin-right: 0.5em; + width: 1em; +} +.file-icon .fa { + font-size: 14px; +} + +.label { + color: #363636; + display: block; + font-size: 1rem; + font-weight: 700; +} +.label:not(:last-child) { + margin-bottom: 0.5em; +} +.label.is-small { + font-size: 0.75rem; +} +.label.is-medium { + font-size: 1.25rem; +} +.label.is-large { + font-size: 1.5rem; +} + +.help { + display: block; + font-size: 0.75rem; + margin-top: 0.25rem; +} +.help.is-white { + color: white; +} +.help.is-black { + color: #0a0a0a; +} +.help.is-light { + color: whitesmoke; +} +.help.is-dark { + color: #363636; +} +.help.is-primary { + color: #00d1b2; +} +.help.is-link { + color: #feda5a; +} +.help.is-info { + color: #3298dc; +} +.help.is-success { + color: #48c774; +} +.help.is-warning { + color: #ffdd57; +} +.help.is-danger { + color: #f14668; +} + +.field:not(:last-child) { + margin-bottom: 0.75rem; +} +.field.has-addons { + display: flex; + justify-content: flex-start; +} +.field.has-addons .control:not(:last-child) { + margin-right: -1px; +} +.field.has-addons .control:not(:first-child):not(:last-child) .button, +.field.has-addons .control:not(:first-child):not(:last-child) .input, +.field.has-addons .control:not(:first-child):not(:last-child) .select select { + border-radius: 0; +} +.field.has-addons .control:first-child:not(:only-child) .button, +.field.has-addons .control:first-child:not(:only-child) .input, +.field.has-addons .control:first-child:not(:only-child) .select select { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.field.has-addons .control:last-child:not(:only-child) .button, +.field.has-addons .control:last-child:not(:only-child) .input, +.field.has-addons .control:last-child:not(:only-child) .select select { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.field.has-addons .control .button:not([disabled]):hover, .field.has-addons .control .button:not([disabled]).is-hovered, +.field.has-addons .control .input:not([disabled]):hover, +.field.has-addons .control .input:not([disabled]).is-hovered, +.field.has-addons .control .select select:not([disabled]):hover, +.field.has-addons .control .select select:not([disabled]).is-hovered { + z-index: 2; +} +.field.has-addons .control .button:not([disabled]):focus, .field.has-addons .control .button:not([disabled]).is-focused, .field.has-addons .control .button:not([disabled]):active, .field.has-addons .control .button:not([disabled]).is-active, +.field.has-addons .control .input:not([disabled]):focus, +.field.has-addons .control .input:not([disabled]).is-focused, +.field.has-addons .control .input:not([disabled]):active, +.field.has-addons .control .input:not([disabled]).is-active, +.field.has-addons .control .select select:not([disabled]):focus, +.field.has-addons .control .select select:not([disabled]).is-focused, +.field.has-addons .control .select select:not([disabled]):active, +.field.has-addons .control .select select:not([disabled]).is-active { + z-index: 3; +} +.field.has-addons .control .button:not([disabled]):focus:hover, .field.has-addons .control .button:not([disabled]).is-focused:hover, .field.has-addons .control .button:not([disabled]):active:hover, .field.has-addons .control .button:not([disabled]).is-active:hover, +.field.has-addons .control .input:not([disabled]):focus:hover, +.field.has-addons .control .input:not([disabled]).is-focused:hover, +.field.has-addons .control .input:not([disabled]):active:hover, +.field.has-addons .control .input:not([disabled]).is-active:hover, +.field.has-addons .control .select select:not([disabled]):focus:hover, +.field.has-addons .control .select select:not([disabled]).is-focused:hover, +.field.has-addons .control .select select:not([disabled]):active:hover, +.field.has-addons .control .select select:not([disabled]).is-active:hover { + z-index: 4; +} +.field.has-addons .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; +} +.field.has-addons.has-addons-centered { + justify-content: center; +} +.field.has-addons.has-addons-right { + justify-content: flex-end; +} +.field.has-addons.has-addons-fullwidth .control { + flex-grow: 1; + flex-shrink: 0; +} +.field.is-grouped { + display: flex; + justify-content: flex-start; +} +.field.is-grouped > .control { + flex-shrink: 0; +} +.field.is-grouped > .control:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; +} +.field.is-grouped > .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; +} +.field.is-grouped.is-grouped-centered { + justify-content: center; +} +.field.is-grouped.is-grouped-right { + justify-content: flex-end; +} +.field.is-grouped.is-grouped-multiline { + flex-wrap: wrap; +} +.field.is-grouped.is-grouped-multiline > .control:last-child, .field.is-grouped.is-grouped-multiline > .control:not(:last-child) { + margin-bottom: 0.75rem; +} +.field.is-grouped.is-grouped-multiline:last-child { + margin-bottom: -0.75rem; +} +.field.is-grouped.is-grouped-multiline:not(:last-child) { + margin-bottom: 0; +} +@media screen and (min-width: 769px), print { + .field.is-horizontal { + display: flex; + } +} + +.field-label .label { + font-size: inherit; +} +@media screen and (max-width: 768px) { + .field-label { + margin-bottom: 0.5rem; + } +} +@media screen and (min-width: 769px), print { + .field-label { + flex-basis: 0; + flex-grow: 1; + flex-shrink: 0; + margin-right: 1.5rem; + text-align: right; + } + .field-label.is-small { + font-size: 0.75rem; + padding-top: 0.375em; + } + .field-label.is-normal { + padding-top: 0.375em; + } + .field-label.is-medium { + font-size: 1.25rem; + padding-top: 0.375em; + } + .field-label.is-large { + font-size: 1.5rem; + padding-top: 0.375em; + } +} + +.field-body .field .field { + margin-bottom: 0; +} +@media screen and (min-width: 769px), print { + .field-body { + display: flex; + flex-basis: 0; + flex-grow: 5; + flex-shrink: 1; + } + .field-body .field { + margin-bottom: 0; + } + .field-body > .field { + flex-shrink: 1; + } + .field-body > .field:not(.is-narrow) { + flex-grow: 1; + } + .field-body > .field:not(:last-child) { + margin-right: 0.75rem; + } +} + +.control { + box-sizing: border-box; + clear: both; + font-size: 1rem; + position: relative; + text-align: inherit; +} +.control.has-icons-left .input:focus ~ .icon, +.control.has-icons-left .select:focus ~ .icon, .control.has-icons-right .input:focus ~ .icon, +.control.has-icons-right .select:focus ~ .icon { + color: black; +} +.control.has-icons-left .input.is-small ~ .icon, +.control.has-icons-left .select.is-small ~ .icon, .control.has-icons-right .input.is-small ~ .icon, +.control.has-icons-right .select.is-small ~ .icon { + font-size: 0.75rem; +} +.control.has-icons-left .input.is-medium ~ .icon, +.control.has-icons-left .select.is-medium ~ .icon, .control.has-icons-right .input.is-medium ~ .icon, +.control.has-icons-right .select.is-medium ~ .icon { + font-size: 1.25rem; +} +.control.has-icons-left .input.is-large ~ .icon, +.control.has-icons-left .select.is-large ~ .icon, .control.has-icons-right .input.is-large ~ .icon, +.control.has-icons-right .select.is-large ~ .icon { + font-size: 1.5rem; +} +.control.has-icons-left .icon, .control.has-icons-right .icon { + color: #1d1e22; + height: 2.5em; + pointer-events: none; + position: absolute; + top: 0; + width: 2.5em; + z-index: 4; +} +.control.has-icons-left .input, +.control.has-icons-left .select select { + padding-left: 2.5em; +} +.control.has-icons-left .icon.is-left { + left: 0; +} +.control.has-icons-right .input, +.control.has-icons-right .select select { + padding-right: 2.5em; +} +.control.has-icons-right .icon.is-right { + right: 0; +} +.control.is-loading::after { + position: absolute !important; + right: 0.625em; + top: 0.625em; + z-index: 4; +} +.control.is-loading.is-small:after { + font-size: 0.75rem; +} +.control.is-loading.is-medium:after { + font-size: 1.25rem; +} +.control.is-loading.is-large:after { + font-size: 1.5rem; +} + +/* Bulma Components */ +.breadcrumb { + font-size: 1rem; + white-space: nowrap; +} +.breadcrumb a { + align-items: center; + color: #feda5a; + display: flex; + justify-content: center; + padding: 0 0.75em; +} +.breadcrumb a:hover { + color: white; +} +.breadcrumb li { + align-items: center; + display: flex; +} +.breadcrumb li:first-child a { + padding-left: 0; +} +.breadcrumb li.is-active a { + color: #363636; + cursor: default; + pointer-events: none; +} +.breadcrumb li + li::before { + color: #b5b5b5; + content: "/"; +} +.breadcrumb ul, +.breadcrumb ol { + align-items: flex-start; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.breadcrumb .icon:first-child { + margin-right: 0.5em; +} +.breadcrumb .icon:last-child { + margin-left: 0.5em; +} +.breadcrumb.is-centered ol, +.breadcrumb.is-centered ul { + justify-content: center; +} +.breadcrumb.is-right ol, +.breadcrumb.is-right ul { + justify-content: flex-end; +} +.breadcrumb.is-small { + font-size: 0.75rem; +} +.breadcrumb.is-medium { + font-size: 1.25rem; +} +.breadcrumb.is-large { + font-size: 1.5rem; +} +.breadcrumb.has-arrow-separator li + li::before { + content: "→"; +} +.breadcrumb.has-bullet-separator li + li::before { + content: "•"; +} +.breadcrumb.has-dot-separator li + li::before { + content: "·"; +} +.breadcrumb.has-succeeds-separator li + li::before { + content: "≻"; +} + +.card { + background-color: white; + border-radius: 0.25rem; + box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02); + color: #4a4a4a; + max-width: 100%; + overflow: hidden; + position: relative; +} + +.card-header { + background-color: transparent; + align-items: stretch; + box-shadow: 0 0.125em 0.25em rgba(10, 10, 10, 0.1); + display: flex; +} + +.card-header-title { + align-items: center; + color: white; + display: flex; + flex-grow: 1; + font-weight: 700; + padding: 0.75rem 1rem; +} +.card-header-title.is-centered { + justify-content: center; +} + +.card-header-icon { + align-items: center; + cursor: pointer; + display: flex; + justify-content: center; + padding: 0.75rem 1rem; +} + +.card-image { + display: block; + position: relative; +} + +.card-content { + background-color: transparent; + padding: 1.5rem; +} + +.card-footer { + background-color: transparent; + border-top: 1px solid #ededed; + align-items: stretch; + display: flex; +} + +.card-footer-item { + align-items: center; + display: flex; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 0; + justify-content: center; + padding: 0.75rem; +} +.card-footer-item:not(:last-child) { + border-right: 1px solid #ededed; +} + +.card .media:not(:last-child) { + margin-bottom: 1.5rem; +} + +.dropdown { + display: inline-flex; + position: relative; + vertical-align: top; +} +.dropdown.is-active .dropdown-menu, .dropdown.is-hoverable:hover .dropdown-menu { + display: block; +} +.dropdown.is-right .dropdown-menu { + left: auto; + right: 0; +} +.dropdown.is-up .dropdown-menu { + bottom: 100%; + padding-bottom: 4px; + padding-top: initial; + top: auto; +} + +.dropdown-menu { + display: none; + left: 0; + min-width: 12rem; + padding-top: 4px; + position: absolute; + top: 100%; + z-index: 20; +} + +.dropdown-content { + background-color: white; + border-radius: 4px; + box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02); + padding-bottom: 0.5rem; + padding-top: 0.5rem; +} + +.dropdown-item { + color: #4a4a4a; + display: block; + font-size: 0.875rem; + line-height: 1.5; + padding: 0.375rem 1rem; + position: relative; +} + +a.dropdown-item, +button.dropdown-item { + padding-right: 3rem; + text-align: inherit; + white-space: nowrap; + width: 100%; +} +a.dropdown-item:hover, +button.dropdown-item:hover { + background-color: whitesmoke; + color: #0a0a0a; +} +a.dropdown-item.is-active, +button.dropdown-item.is-active { + background-color: #feda5a; + color: rgba(0, 0, 0, 0.7); +} + +.dropdown-divider { + background-color: #ededed; + border: none; + display: block; + height: 1px; + margin: 0.5rem 0; +} + +.level { + align-items: center; + justify-content: space-between; +} +.level code { + border-radius: 4px; +} +.level img { + display: inline-block; + vertical-align: top; +} +.level.is-mobile { + display: flex; +} +.level.is-mobile .level-left, +.level.is-mobile .level-right { + display: flex; +} +.level.is-mobile .level-left + .level-right { + margin-top: 0; +} +.level.is-mobile .level-item:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; +} +.level.is-mobile .level-item:not(.is-narrow) { + flex-grow: 1; +} +@media screen and (min-width: 769px), print { + .level { + display: flex; + } + .level > .level-item:not(.is-narrow) { + flex-grow: 1; + } +} + +.level-item { + align-items: center; + display: flex; + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; +} +.level-item .title, +.level-item .subtitle { + margin-bottom: 0; +} +@media screen and (max-width: 768px) { + .level-item:not(:last-child) { + margin-bottom: 0.75rem; + } +} + +.level-left, +.level-right { + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; +} +.level-left .level-item.is-flexible, +.level-right .level-item.is-flexible { + flex-grow: 1; +} +@media screen and (min-width: 769px), print { + .level-left .level-item:not(:last-child), +.level-right .level-item:not(:last-child) { + margin-right: 0.75rem; + } +} + +.level-left { + align-items: center; + justify-content: flex-start; +} +@media screen and (max-width: 768px) { + .level-left + .level-right { + margin-top: 1.5rem; + } +} +@media screen and (min-width: 769px), print { + .level-left { + display: flex; + } +} + +.level-right { + align-items: center; + justify-content: flex-end; +} +@media screen and (min-width: 769px), print { + .level-right { + display: flex; + } +} + +.media { + align-items: flex-start; + display: flex; + text-align: inherit; +} +.media .content:not(:last-child) { + margin-bottom: 0.75rem; +} +.media .media { + border-top: 1px solid #feda6a; + display: flex; + padding-top: 0.75rem; +} +.media .media .content:not(:last-child), +.media .media .control:not(:last-child) { + margin-bottom: 0.5rem; +} +.media .media .media { + padding-top: 0.5rem; +} +.media .media .media + .media { + margin-top: 0.5rem; +} +.media + .media { + border-top: 1px solid #feda6a; + margin-top: 1rem; + padding-top: 1rem; +} +.media.is-large + .media { + margin-top: 1.5rem; + padding-top: 1.5rem; +} + +.media-left, +.media-right { + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; +} + +.media-left { + margin-right: 1rem; +} + +.media-right { + margin-left: 1rem; +} + +.media-content { + flex-basis: auto; + flex-grow: 1; + flex-shrink: 1; + text-align: inherit; +} + +@media screen and (max-width: 768px) { + .media-content { + overflow-x: auto; + } +} +.menu { + font-size: 1rem; +} +.menu.is-small { + font-size: 0.75rem; +} +.menu.is-medium { + font-size: 1.25rem; +} +.menu.is-large { + font-size: 1.5rem; +} + +.menu-list { + line-height: 1.25; +} +.menu-list a { + border-radius: 2px; + color: white; + display: block; + padding: 0.5em 0.75em; +} +.menu-list a:hover { + background-color: #feda6a; + color: black; +} +.menu-list a.is-active { + background-color: #feda5a; + color: rgba(0, 0, 0, 0.7); +} +.menu-list li ul { + border-left: 1px solid #dbdbdb; + margin: 0.75em; + padding-left: 0.75em; +} + +.menu-label { + color: #7a7a7a; + font-size: 1em; + letter-spacing: 0.1em; + text-transform: uppercase; +} +.menu-label:not(:first-child) { + margin-top: 1em; +} +.menu-label:not(:last-child) { + margin-bottom: 1em; +} + +.message { + background-color: whitesmoke; + border-radius: 4px; + font-size: 1rem; +} +.message strong { + color: currentColor; +} +.message a:not(.button):not(.tag):not(.dropdown-item) { + color: currentColor; + text-decoration: underline; +} +.message.is-small { + font-size: 0.75rem; +} +.message.is-medium { + font-size: 1.25rem; +} +.message.is-large { + font-size: 1.5rem; +} +.message.is-white { + background-color: white; +} +.message.is-white .message-header { + background-color: white; + color: #0a0a0a; +} +.message.is-white .message-body { + border-color: white; +} +.message.is-black { + background-color: #fafafa; +} +.message.is-black .message-header { + background-color: #0a0a0a; + color: white; +} +.message.is-black .message-body { + border-color: #0a0a0a; +} +.message.is-light { + background-color: #fafafa; +} +.message.is-light .message-header { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); +} +.message.is-light .message-body { + border-color: whitesmoke; +} +.message.is-dark { + background-color: #fafafa; +} +.message.is-dark .message-header { + background-color: #363636; + color: #fff; +} +.message.is-dark .message-body { + border-color: #363636; +} +.message.is-primary { + background-color: #ebfffc; +} +.message.is-primary .message-header { + background-color: #00d1b2; + color: #fff; +} +.message.is-primary .message-body { + border-color: #00d1b2; + color: #00947e; +} +.message.is-link { + background-color: #fffaeb; +} +.message.is-link .message-header { + background-color: #feda5a; + color: rgba(0, 0, 0, 0.7); +} +.message.is-link .message-body { + border-color: #feda5a; + color: #937301; +} +.message.is-info { + background-color: #eef6fc; +} +.message.is-info .message-header { + background-color: #3298dc; + color: #fff; +} +.message.is-info .message-body { + border-color: #3298dc; + color: #1d72aa; +} +.message.is-success { + background-color: #effaf3; +} +.message.is-success .message-header { + background-color: #48c774; + color: #fff; +} +.message.is-success .message-body { + border-color: #48c774; + color: #257942; +} +.message.is-warning { + background-color: #fffbeb; +} +.message.is-warning .message-header { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); +} +.message.is-warning .message-body { + border-color: #ffdd57; + color: #947600; +} +.message.is-danger { + background-color: #feecf0; +} +.message.is-danger .message-header { + background-color: #f14668; + color: #fff; +} +.message.is-danger .message-body { + border-color: #f14668; + color: #cc0f35; +} + +.message-header { + align-items: center; + background-color: #4a4a4a; + border-radius: 4px 4px 0 0; + color: #fff; + display: flex; + font-weight: 700; + justify-content: space-between; + line-height: 1.25; + padding: 0.75em 1em; + position: relative; +} +.message-header .delete { + flex-grow: 0; + flex-shrink: 0; + margin-left: 0.75em; +} +.message-header + .message-body { + border-width: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.message-body { + border-color: #dbdbdb; + border-radius: 4px; + border-style: solid; + border-width: 0 0 0 4px; + color: #4a4a4a; + padding: 1.25em 1.5em; +} +.message-body code, +.message-body pre { + background-color: white; +} +.message-body pre code { + background-color: transparent; +} + +.modal { + align-items: center; + display: none; + flex-direction: column; + justify-content: center; + overflow: hidden; + position: fixed; + z-index: 40; +} +.modal.is-active { + display: flex; +} + +.modal-background { + background-color: rgba(10, 10, 10, 0.86); +} + +.modal-content, +.modal-card { + margin: 0 20px; + max-height: calc(100vh - 160px); + overflow: auto; + position: relative; + width: 100%; +} +@media screen and (min-width: 769px) { + .modal-content, +.modal-card { + margin: 0 auto; + max-height: calc(100vh - 40px); + width: 640px; + } +} + +.modal-close { + background: none; + height: 40px; + position: fixed; + right: 20px; + top: 20px; + width: 40px; +} + +.modal-card { + display: flex; + flex-direction: column; + max-height: calc(100vh - 40px); + overflow: hidden; + -ms-overflow-y: visible; +} + +.modal-card-head, +.modal-card-foot { + align-items: center; + background-color: whitesmoke; + display: flex; + flex-shrink: 0; + justify-content: flex-start; + padding: 20px; + position: relative; +} + +.modal-card-head { + border-bottom: 1px solid #dbdbdb; + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +.modal-card-title { + color: #363636; + flex-grow: 1; + flex-shrink: 0; + font-size: 1.5rem; + line-height: 1; +} + +.modal-card-foot { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-top: 1px solid #dbdbdb; +} +.modal-card-foot .button:not(:last-child) { + margin-right: 0.5em; +} + +.modal-card-body { + -webkit-overflow-scrolling: touch; + background-color: white; + flex-grow: 1; + flex-shrink: 1; + overflow: auto; + padding: 20px; +} + +.navbar { + background-color: #feda6a; + min-height: 3.25rem; + position: relative; + z-index: 30; +} +.navbar.is-white { + background-color: white; + color: #0a0a0a; +} +.navbar.is-white .navbar-brand > .navbar-item, +.navbar.is-white .navbar-brand .navbar-link { + color: #0a0a0a; +} +.navbar.is-white .navbar-brand > a.navbar-item:focus, .navbar.is-white .navbar-brand > a.navbar-item:hover, .navbar.is-white .navbar-brand > a.navbar-item.is-active, +.navbar.is-white .navbar-brand .navbar-link:focus, +.navbar.is-white .navbar-brand .navbar-link:hover, +.navbar.is-white .navbar-brand .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; +} +.navbar.is-white .navbar-brand .navbar-link::after { + border-color: #0a0a0a; +} +.navbar.is-white .navbar-burger { + color: #0a0a0a; +} +@media screen and (min-width: 1024px) { + .navbar.is-white .navbar-start > .navbar-item, +.navbar.is-white .navbar-start .navbar-link, +.navbar.is-white .navbar-end > .navbar-item, +.navbar.is-white .navbar-end .navbar-link { + color: #0a0a0a; + } + .navbar.is-white .navbar-start > a.navbar-item:focus, .navbar.is-white .navbar-start > a.navbar-item:hover, .navbar.is-white .navbar-start > a.navbar-item.is-active, +.navbar.is-white .navbar-start .navbar-link:focus, +.navbar.is-white .navbar-start .navbar-link:hover, +.navbar.is-white .navbar-start .navbar-link.is-active, +.navbar.is-white .navbar-end > a.navbar-item:focus, +.navbar.is-white .navbar-end > a.navbar-item:hover, +.navbar.is-white .navbar-end > a.navbar-item.is-active, +.navbar.is-white .navbar-end .navbar-link:focus, +.navbar.is-white .navbar-end .navbar-link:hover, +.navbar.is-white .navbar-end .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; + } + .navbar.is-white .navbar-start .navbar-link::after, +.navbar.is-white .navbar-end .navbar-link::after { + border-color: #0a0a0a; + } + .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #f2f2f2; + color: #0a0a0a; + } + .navbar.is-white .navbar-dropdown a.navbar-item.is-active { + background-color: white; + color: #0a0a0a; + } +} +.navbar.is-black { + background-color: #0a0a0a; + color: white; +} +.navbar.is-black .navbar-brand > .navbar-item, +.navbar.is-black .navbar-brand .navbar-link { + color: white; +} +.navbar.is-black .navbar-brand > a.navbar-item:focus, .navbar.is-black .navbar-brand > a.navbar-item:hover, .navbar.is-black .navbar-brand > a.navbar-item.is-active, +.navbar.is-black .navbar-brand .navbar-link:focus, +.navbar.is-black .navbar-brand .navbar-link:hover, +.navbar.is-black .navbar-brand .navbar-link.is-active { + background-color: black; + color: white; +} +.navbar.is-black .navbar-brand .navbar-link::after { + border-color: white; +} +.navbar.is-black .navbar-burger { + color: white; +} +@media screen and (min-width: 1024px) { + .navbar.is-black .navbar-start > .navbar-item, +.navbar.is-black .navbar-start .navbar-link, +.navbar.is-black .navbar-end > .navbar-item, +.navbar.is-black .navbar-end .navbar-link { + color: white; + } + .navbar.is-black .navbar-start > a.navbar-item:focus, .navbar.is-black .navbar-start > a.navbar-item:hover, .navbar.is-black .navbar-start > a.navbar-item.is-active, +.navbar.is-black .navbar-start .navbar-link:focus, +.navbar.is-black .navbar-start .navbar-link:hover, +.navbar.is-black .navbar-start .navbar-link.is-active, +.navbar.is-black .navbar-end > a.navbar-item:focus, +.navbar.is-black .navbar-end > a.navbar-item:hover, +.navbar.is-black .navbar-end > a.navbar-item.is-active, +.navbar.is-black .navbar-end .navbar-link:focus, +.navbar.is-black .navbar-end .navbar-link:hover, +.navbar.is-black .navbar-end .navbar-link.is-active { + background-color: black; + color: white; + } + .navbar.is-black .navbar-start .navbar-link::after, +.navbar.is-black .navbar-end .navbar-link::after { + border-color: white; + } + .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link { + background-color: black; + color: white; + } + .navbar.is-black .navbar-dropdown a.navbar-item.is-active { + background-color: #0a0a0a; + color: white; + } +} +.navbar.is-light { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); +} +.navbar.is-light .navbar-brand > .navbar-item, +.navbar.is-light .navbar-brand .navbar-link { + color: rgba(0, 0, 0, 0.7); +} +.navbar.is-light .navbar-brand > a.navbar-item:focus, .navbar.is-light .navbar-brand > a.navbar-item:hover, .navbar.is-light .navbar-brand > a.navbar-item.is-active, +.navbar.is-light .navbar-brand .navbar-link:focus, +.navbar.is-light .navbar-brand .navbar-link:hover, +.navbar.is-light .navbar-brand .navbar-link.is-active { + background-color: #e8e8e8; + color: rgba(0, 0, 0, 0.7); +} +.navbar.is-light .navbar-brand .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); +} +.navbar.is-light .navbar-burger { + color: rgba(0, 0, 0, 0.7); +} +@media screen and (min-width: 1024px) { + .navbar.is-light .navbar-start > .navbar-item, +.navbar.is-light .navbar-start .navbar-link, +.navbar.is-light .navbar-end > .navbar-item, +.navbar.is-light .navbar-end .navbar-link { + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-light .navbar-start > a.navbar-item:focus, .navbar.is-light .navbar-start > a.navbar-item:hover, .navbar.is-light .navbar-start > a.navbar-item.is-active, +.navbar.is-light .navbar-start .navbar-link:focus, +.navbar.is-light .navbar-start .navbar-link:hover, +.navbar.is-light .navbar-start .navbar-link.is-active, +.navbar.is-light .navbar-end > a.navbar-item:focus, +.navbar.is-light .navbar-end > a.navbar-item:hover, +.navbar.is-light .navbar-end > a.navbar-item.is-active, +.navbar.is-light .navbar-end .navbar-link:focus, +.navbar.is-light .navbar-end .navbar-link:hover, +.navbar.is-light .navbar-end .navbar-link.is-active { + background-color: #e8e8e8; + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-light .navbar-start .navbar-link::after, +.navbar.is-light .navbar-end .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); + } + .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #e8e8e8; + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-light .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); + } +} +.navbar.is-dark { + background-color: #363636; + color: #fff; +} +.navbar.is-dark .navbar-brand > .navbar-item, +.navbar.is-dark .navbar-brand .navbar-link { + color: #fff; +} +.navbar.is-dark .navbar-brand > a.navbar-item:focus, .navbar.is-dark .navbar-brand > a.navbar-item:hover, .navbar.is-dark .navbar-brand > a.navbar-item.is-active, +.navbar.is-dark .navbar-brand .navbar-link:focus, +.navbar.is-dark .navbar-brand .navbar-link:hover, +.navbar.is-dark .navbar-brand .navbar-link.is-active { + background-color: #292929; + color: #fff; +} +.navbar.is-dark .navbar-brand .navbar-link::after { + border-color: #fff; +} +.navbar.is-dark .navbar-burger { + color: #fff; +} +@media screen and (min-width: 1024px) { + .navbar.is-dark .navbar-start > .navbar-item, +.navbar.is-dark .navbar-start .navbar-link, +.navbar.is-dark .navbar-end > .navbar-item, +.navbar.is-dark .navbar-end .navbar-link { + color: #fff; + } + .navbar.is-dark .navbar-start > a.navbar-item:focus, .navbar.is-dark .navbar-start > a.navbar-item:hover, .navbar.is-dark .navbar-start > a.navbar-item.is-active, +.navbar.is-dark .navbar-start .navbar-link:focus, +.navbar.is-dark .navbar-start .navbar-link:hover, +.navbar.is-dark .navbar-start .navbar-link.is-active, +.navbar.is-dark .navbar-end > a.navbar-item:focus, +.navbar.is-dark .navbar-end > a.navbar-item:hover, +.navbar.is-dark .navbar-end > a.navbar-item.is-active, +.navbar.is-dark .navbar-end .navbar-link:focus, +.navbar.is-dark .navbar-end .navbar-link:hover, +.navbar.is-dark .navbar-end .navbar-link.is-active { + background-color: #292929; + color: #fff; + } + .navbar.is-dark .navbar-start .navbar-link::after, +.navbar.is-dark .navbar-end .navbar-link::after { + border-color: #fff; + } + .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #292929; + color: #fff; + } + .navbar.is-dark .navbar-dropdown a.navbar-item.is-active { + background-color: #363636; + color: #fff; + } +} +.navbar.is-primary { + background-color: #00d1b2; + color: #fff; +} +.navbar.is-primary .navbar-brand > .navbar-item, +.navbar.is-primary .navbar-brand .navbar-link { + color: #fff; +} +.navbar.is-primary .navbar-brand > a.navbar-item:focus, .navbar.is-primary .navbar-brand > a.navbar-item:hover, .navbar.is-primary .navbar-brand > a.navbar-item.is-active, +.navbar.is-primary .navbar-brand .navbar-link:focus, +.navbar.is-primary .navbar-brand .navbar-link:hover, +.navbar.is-primary .navbar-brand .navbar-link.is-active { + background-color: #00b89c; + color: #fff; +} +.navbar.is-primary .navbar-brand .navbar-link::after { + border-color: #fff; +} +.navbar.is-primary .navbar-burger { + color: #fff; +} +@media screen and (min-width: 1024px) { + .navbar.is-primary .navbar-start > .navbar-item, +.navbar.is-primary .navbar-start .navbar-link, +.navbar.is-primary .navbar-end > .navbar-item, +.navbar.is-primary .navbar-end .navbar-link { + color: #fff; + } + .navbar.is-primary .navbar-start > a.navbar-item:focus, .navbar.is-primary .navbar-start > a.navbar-item:hover, .navbar.is-primary .navbar-start > a.navbar-item.is-active, +.navbar.is-primary .navbar-start .navbar-link:focus, +.navbar.is-primary .navbar-start .navbar-link:hover, +.navbar.is-primary .navbar-start .navbar-link.is-active, +.navbar.is-primary .navbar-end > a.navbar-item:focus, +.navbar.is-primary .navbar-end > a.navbar-item:hover, +.navbar.is-primary .navbar-end > a.navbar-item.is-active, +.navbar.is-primary .navbar-end .navbar-link:focus, +.navbar.is-primary .navbar-end .navbar-link:hover, +.navbar.is-primary .navbar-end .navbar-link.is-active { + background-color: #00b89c; + color: #fff; + } + .navbar.is-primary .navbar-start .navbar-link::after, +.navbar.is-primary .navbar-end .navbar-link::after { + border-color: #fff; + } + .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #00b89c; + color: #fff; + } + .navbar.is-primary .navbar-dropdown a.navbar-item.is-active { + background-color: #00d1b2; + color: #fff; + } +} +.navbar.is-link { + background-color: #feda5a; + color: rgba(0, 0, 0, 0.7); +} +.navbar.is-link .navbar-brand > .navbar-item, +.navbar.is-link .navbar-brand .navbar-link { + color: rgba(0, 0, 0, 0.7); +} +.navbar.is-link .navbar-brand > a.navbar-item:focus, .navbar.is-link .navbar-brand > a.navbar-item:hover, .navbar.is-link .navbar-brand > a.navbar-item.is-active, +.navbar.is-link .navbar-brand .navbar-link:focus, +.navbar.is-link .navbar-brand .navbar-link:hover, +.navbar.is-link .navbar-brand .navbar-link.is-active { + background-color: #fed441; + color: rgba(0, 0, 0, 0.7); +} +.navbar.is-link .navbar-brand .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); +} +.navbar.is-link .navbar-burger { + color: rgba(0, 0, 0, 0.7); +} +@media screen and (min-width: 1024px) { + .navbar.is-link .navbar-start > .navbar-item, +.navbar.is-link .navbar-start .navbar-link, +.navbar.is-link .navbar-end > .navbar-item, +.navbar.is-link .navbar-end .navbar-link { + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-link .navbar-start > a.navbar-item:focus, .navbar.is-link .navbar-start > a.navbar-item:hover, .navbar.is-link .navbar-start > a.navbar-item.is-active, +.navbar.is-link .navbar-start .navbar-link:focus, +.navbar.is-link .navbar-start .navbar-link:hover, +.navbar.is-link .navbar-start .navbar-link.is-active, +.navbar.is-link .navbar-end > a.navbar-item:focus, +.navbar.is-link .navbar-end > a.navbar-item:hover, +.navbar.is-link .navbar-end > a.navbar-item.is-active, +.navbar.is-link .navbar-end .navbar-link:focus, +.navbar.is-link .navbar-end .navbar-link:hover, +.navbar.is-link .navbar-end .navbar-link.is-active { + background-color: #fed441; + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-link .navbar-start .navbar-link::after, +.navbar.is-link .navbar-end .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); + } + .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #fed441; + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-link .navbar-dropdown a.navbar-item.is-active { + background-color: #feda5a; + color: rgba(0, 0, 0, 0.7); + } +} +.navbar.is-info { + background-color: #3298dc; + color: #fff; +} +.navbar.is-info .navbar-brand > .navbar-item, +.navbar.is-info .navbar-brand .navbar-link { + color: #fff; +} +.navbar.is-info .navbar-brand > a.navbar-item:focus, .navbar.is-info .navbar-brand > a.navbar-item:hover, .navbar.is-info .navbar-brand > a.navbar-item.is-active, +.navbar.is-info .navbar-brand .navbar-link:focus, +.navbar.is-info .navbar-brand .navbar-link:hover, +.navbar.is-info .navbar-brand .navbar-link.is-active { + background-color: #238cd1; + color: #fff; +} +.navbar.is-info .navbar-brand .navbar-link::after { + border-color: #fff; +} +.navbar.is-info .navbar-burger { + color: #fff; +} +@media screen and (min-width: 1024px) { + .navbar.is-info .navbar-start > .navbar-item, +.navbar.is-info .navbar-start .navbar-link, +.navbar.is-info .navbar-end > .navbar-item, +.navbar.is-info .navbar-end .navbar-link { + color: #fff; + } + .navbar.is-info .navbar-start > a.navbar-item:focus, .navbar.is-info .navbar-start > a.navbar-item:hover, .navbar.is-info .navbar-start > a.navbar-item.is-active, +.navbar.is-info .navbar-start .navbar-link:focus, +.navbar.is-info .navbar-start .navbar-link:hover, +.navbar.is-info .navbar-start .navbar-link.is-active, +.navbar.is-info .navbar-end > a.navbar-item:focus, +.navbar.is-info .navbar-end > a.navbar-item:hover, +.navbar.is-info .navbar-end > a.navbar-item.is-active, +.navbar.is-info .navbar-end .navbar-link:focus, +.navbar.is-info .navbar-end .navbar-link:hover, +.navbar.is-info .navbar-end .navbar-link.is-active { + background-color: #238cd1; + color: #fff; + } + .navbar.is-info .navbar-start .navbar-link::after, +.navbar.is-info .navbar-end .navbar-link::after { + border-color: #fff; + } + .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #238cd1; + color: #fff; + } + .navbar.is-info .navbar-dropdown a.navbar-item.is-active { + background-color: #3298dc; + color: #fff; + } +} +.navbar.is-success { + background-color: #48c774; + color: #fff; +} +.navbar.is-success .navbar-brand > .navbar-item, +.navbar.is-success .navbar-brand .navbar-link { + color: #fff; +} +.navbar.is-success .navbar-brand > a.navbar-item:focus, .navbar.is-success .navbar-brand > a.navbar-item:hover, .navbar.is-success .navbar-brand > a.navbar-item.is-active, +.navbar.is-success .navbar-brand .navbar-link:focus, +.navbar.is-success .navbar-brand .navbar-link:hover, +.navbar.is-success .navbar-brand .navbar-link.is-active { + background-color: #3abb67; + color: #fff; +} +.navbar.is-success .navbar-brand .navbar-link::after { + border-color: #fff; +} +.navbar.is-success .navbar-burger { + color: #fff; +} +@media screen and (min-width: 1024px) { + .navbar.is-success .navbar-start > .navbar-item, +.navbar.is-success .navbar-start .navbar-link, +.navbar.is-success .navbar-end > .navbar-item, +.navbar.is-success .navbar-end .navbar-link { + color: #fff; + } + .navbar.is-success .navbar-start > a.navbar-item:focus, .navbar.is-success .navbar-start > a.navbar-item:hover, .navbar.is-success .navbar-start > a.navbar-item.is-active, +.navbar.is-success .navbar-start .navbar-link:focus, +.navbar.is-success .navbar-start .navbar-link:hover, +.navbar.is-success .navbar-start .navbar-link.is-active, +.navbar.is-success .navbar-end > a.navbar-item:focus, +.navbar.is-success .navbar-end > a.navbar-item:hover, +.navbar.is-success .navbar-end > a.navbar-item.is-active, +.navbar.is-success .navbar-end .navbar-link:focus, +.navbar.is-success .navbar-end .navbar-link:hover, +.navbar.is-success .navbar-end .navbar-link.is-active { + background-color: #3abb67; + color: #fff; + } + .navbar.is-success .navbar-start .navbar-link::after, +.navbar.is-success .navbar-end .navbar-link::after { + border-color: #fff; + } + .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #3abb67; + color: #fff; + } + .navbar.is-success .navbar-dropdown a.navbar-item.is-active { + background-color: #48c774; + color: #fff; + } +} +.navbar.is-warning { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); +} +.navbar.is-warning .navbar-brand > .navbar-item, +.navbar.is-warning .navbar-brand .navbar-link { + color: rgba(0, 0, 0, 0.7); +} +.navbar.is-warning .navbar-brand > a.navbar-item:focus, .navbar.is-warning .navbar-brand > a.navbar-item:hover, .navbar.is-warning .navbar-brand > a.navbar-item.is-active, +.navbar.is-warning .navbar-brand .navbar-link:focus, +.navbar.is-warning .navbar-brand .navbar-link:hover, +.navbar.is-warning .navbar-brand .navbar-link.is-active { + background-color: #ffd83d; + color: rgba(0, 0, 0, 0.7); +} +.navbar.is-warning .navbar-brand .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); +} +.navbar.is-warning .navbar-burger { + color: rgba(0, 0, 0, 0.7); +} +@media screen and (min-width: 1024px) { + .navbar.is-warning .navbar-start > .navbar-item, +.navbar.is-warning .navbar-start .navbar-link, +.navbar.is-warning .navbar-end > .navbar-item, +.navbar.is-warning .navbar-end .navbar-link { + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-warning .navbar-start > a.navbar-item:focus, .navbar.is-warning .navbar-start > a.navbar-item:hover, .navbar.is-warning .navbar-start > a.navbar-item.is-active, +.navbar.is-warning .navbar-start .navbar-link:focus, +.navbar.is-warning .navbar-start .navbar-link:hover, +.navbar.is-warning .navbar-start .navbar-link.is-active, +.navbar.is-warning .navbar-end > a.navbar-item:focus, +.navbar.is-warning .navbar-end > a.navbar-item:hover, +.navbar.is-warning .navbar-end > a.navbar-item.is-active, +.navbar.is-warning .navbar-end .navbar-link:focus, +.navbar.is-warning .navbar-end .navbar-link:hover, +.navbar.is-warning .navbar-end .navbar-link.is-active { + background-color: #ffd83d; + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-warning .navbar-start .navbar-link::after, +.navbar.is-warning .navbar-end .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); + } + .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #ffd83d; + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-warning .navbar-dropdown a.navbar-item.is-active { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); + } +} +.navbar.is-danger { + background-color: #f14668; + color: #fff; +} +.navbar.is-danger .navbar-brand > .navbar-item, +.navbar.is-danger .navbar-brand .navbar-link { + color: #fff; +} +.navbar.is-danger .navbar-brand > a.navbar-item:focus, .navbar.is-danger .navbar-brand > a.navbar-item:hover, .navbar.is-danger .navbar-brand > a.navbar-item.is-active, +.navbar.is-danger .navbar-brand .navbar-link:focus, +.navbar.is-danger .navbar-brand .navbar-link:hover, +.navbar.is-danger .navbar-brand .navbar-link.is-active { + background-color: #ef2e55; + color: #fff; +} +.navbar.is-danger .navbar-brand .navbar-link::after { + border-color: #fff; +} +.navbar.is-danger .navbar-burger { + color: #fff; +} +@media screen and (min-width: 1024px) { + .navbar.is-danger .navbar-start > .navbar-item, +.navbar.is-danger .navbar-start .navbar-link, +.navbar.is-danger .navbar-end > .navbar-item, +.navbar.is-danger .navbar-end .navbar-link { + color: #fff; + } + .navbar.is-danger .navbar-start > a.navbar-item:focus, .navbar.is-danger .navbar-start > a.navbar-item:hover, .navbar.is-danger .navbar-start > a.navbar-item.is-active, +.navbar.is-danger .navbar-start .navbar-link:focus, +.navbar.is-danger .navbar-start .navbar-link:hover, +.navbar.is-danger .navbar-start .navbar-link.is-active, +.navbar.is-danger .navbar-end > a.navbar-item:focus, +.navbar.is-danger .navbar-end > a.navbar-item:hover, +.navbar.is-danger .navbar-end > a.navbar-item.is-active, +.navbar.is-danger .navbar-end .navbar-link:focus, +.navbar.is-danger .navbar-end .navbar-link:hover, +.navbar.is-danger .navbar-end .navbar-link.is-active { + background-color: #ef2e55; + color: #fff; + } + .navbar.is-danger .navbar-start .navbar-link::after, +.navbar.is-danger .navbar-end .navbar-link::after { + border-color: #fff; + } + .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #ef2e55; + color: #fff; + } + .navbar.is-danger .navbar-dropdown a.navbar-item.is-active { + background-color: #f14668; + color: #fff; + } +} +.navbar > .container { + align-items: stretch; + display: flex; + min-height: 3.25rem; + width: 100%; +} +.navbar.has-shadow { + box-shadow: 0 2px 0 0 whitesmoke; +} +.navbar.is-fixed-bottom, .navbar.is-fixed-top { + left: 0; + position: fixed; + right: 0; + z-index: 30; +} +.navbar.is-fixed-bottom { + bottom: 0; +} +.navbar.is-fixed-bottom.has-shadow { + box-shadow: 0 -2px 0 0 whitesmoke; +} +.navbar.is-fixed-top { + top: 0; +} + +html.has-navbar-fixed-top, +body.has-navbar-fixed-top { + padding-top: 3.25rem; +} +html.has-navbar-fixed-bottom, +body.has-navbar-fixed-bottom { + padding-bottom: 3.25rem; +} + +.navbar-brand, +.navbar-tabs { + align-items: stretch; + display: flex; + flex-shrink: 0; + min-height: 3.25rem; +} + +.navbar-brand a.navbar-item:focus, .navbar-brand a.navbar-item:hover { + background-color: transparent; +} + +.navbar-tabs { + -webkit-overflow-scrolling: touch; + max-width: 100vw; + overflow-x: auto; + overflow-y: hidden; +} + +.navbar-burger { + color: black; + cursor: pointer; + display: block; + height: 3.25rem; + position: relative; + width: 3.25rem; + margin-left: auto; +} +.navbar-burger span { + background-color: currentColor; + display: block; + height: 1px; + left: calc(50% - 8px); + position: absolute; + transform-origin: center; + transition-duration: 86ms; + transition-property: background-color, opacity, transform; + transition-timing-function: ease-out; + width: 16px; +} +.navbar-burger span:nth-child(1) { + top: calc(50% - 6px); +} +.navbar-burger span:nth-child(2) { + top: calc(50% - 1px); +} +.navbar-burger span:nth-child(3) { + top: calc(50% + 4px); +} +.navbar-burger:hover { + background-color: rgba(0, 0, 0, 0.05); +} +.navbar-burger.is-active span:nth-child(1) { + transform: translateY(5px) rotate(45deg); +} +.navbar-burger.is-active span:nth-child(2) { + opacity: 0; +} +.navbar-burger.is-active span:nth-child(3) { + transform: translateY(-5px) rotate(-45deg); +} + +.navbar-menu { + display: none; +} + +.navbar-item, +.navbar-link { + color: black; + display: block; + line-height: 1.5; + padding: 0.5rem 0.75rem; + position: relative; +} +.navbar-item .icon:only-child, +.navbar-link .icon:only-child { + margin-left: -0.25rem; + margin-right: -0.25rem; +} + +a.navbar-item, +.navbar-link { + cursor: pointer; +} +a.navbar-item:focus, a.navbar-item:focus-within, a.navbar-item:hover, a.navbar-item.is-active, +.navbar-link:focus, +.navbar-link:focus-within, +.navbar-link:hover, +.navbar-link.is-active { + background-color: #feda6a; + color: white; +} + +.navbar-item { + flex-grow: 0; + flex-shrink: 0; +} +.navbar-item img { + max-height: 1.75rem; +} +.navbar-item.has-dropdown { + padding: 0; +} +.navbar-item.is-expanded { + flex-grow: 1; + flex-shrink: 1; +} +.navbar-item.is-tab { + border-bottom: 1px solid transparent; + min-height: 3.25rem; + padding-bottom: calc(0.5rem - 1px); +} +.navbar-item.is-tab:focus, .navbar-item.is-tab:hover { + background-color: transparent; + border-bottom-color: #feda5a; +} +.navbar-item.is-tab.is-active { + background-color: transparent; + border-bottom-color: #feda5a; + border-bottom-style: solid; + border-bottom-width: 3px; + color: #feda5a; + padding-bottom: calc(0.5rem - 3px); +} + +.navbar-content { + flex-grow: 1; + flex-shrink: 1; +} + +.navbar-link:not(.is-arrowless) { + padding-right: 2.5em; +} +.navbar-link:not(.is-arrowless)::after { + border-color: #feda5a; + margin-top: -0.375em; + right: 1.125em; +} + +.navbar-dropdown { + font-size: 0.875rem; + padding-bottom: 0.5rem; + padding-top: 0.5rem; +} +.navbar-dropdown .navbar-item { + padding-left: 1.5rem; + padding-right: 1.5rem; +} + +.navbar-divider { + background-color: whitesmoke; + border: none; + display: none; + height: 2px; + margin: 0.5rem 0; +} + +@media screen and (max-width: 1023px) { + .navbar > .container { + display: block; + } + + .navbar-brand .navbar-item, +.navbar-tabs .navbar-item { + align-items: center; + display: flex; + } + + .navbar-link::after { + display: none; + } + + .navbar-menu { + background-color: #feda6a; + box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); + padding: 0.5rem 0; + } + .navbar-menu.is-active { + display: block; + } + + .navbar.is-fixed-bottom-touch, .navbar.is-fixed-top-touch { + left: 0; + position: fixed; + right: 0; + z-index: 30; + } + .navbar.is-fixed-bottom-touch { + bottom: 0; + } + .navbar.is-fixed-bottom-touch.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); + } + .navbar.is-fixed-top-touch { + top: 0; + } + .navbar.is-fixed-top .navbar-menu, .navbar.is-fixed-top-touch .navbar-menu { + -webkit-overflow-scrolling: touch; + max-height: calc(100vh - 3.25rem); + overflow: auto; + } + + html.has-navbar-fixed-top-touch, +body.has-navbar-fixed-top-touch { + padding-top: 3.25rem; + } + html.has-navbar-fixed-bottom-touch, +body.has-navbar-fixed-bottom-touch { + padding-bottom: 3.25rem; + } +} +@media screen and (min-width: 1024px) { + .navbar, +.navbar-menu, +.navbar-start, +.navbar-end { + align-items: stretch; + display: flex; + } + + .navbar { + min-height: 3.25rem; + } + .navbar.is-spaced { + padding: 1rem 2rem; + } + .navbar.is-spaced .navbar-start, +.navbar.is-spaced .navbar-end { + align-items: center; + } + .navbar.is-spaced a.navbar-item, +.navbar.is-spaced .navbar-link { + border-radius: 4px; + } + .navbar.is-transparent a.navbar-item:focus, .navbar.is-transparent a.navbar-item:hover, .navbar.is-transparent a.navbar-item.is-active, +.navbar.is-transparent .navbar-link:focus, +.navbar.is-transparent .navbar-link:hover, +.navbar.is-transparent .navbar-link.is-active { + background-color: transparent !important; + } + .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link { + background-color: transparent !important; + } + .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, .navbar.is-transparent .navbar-dropdown a.navbar-item:hover { + background-color: whitesmoke; + color: #0a0a0a; + } + .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: #feda5a; + } + + .navbar-burger { + display: none; + } + + .navbar-item, +.navbar-link { + align-items: center; + display: flex; + } + + .navbar-item.has-dropdown { + align-items: stretch; + } + .navbar-item.has-dropdown-up .navbar-link::after { + transform: rotate(135deg) translate(0.25em, -0.25em); + } + .navbar-item.has-dropdown-up .navbar-dropdown { + border-bottom: 2px solid #dbdbdb; + border-radius: 6px 6px 0 0; + border-top: none; + bottom: 100%; + box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1); + top: auto; + } + .navbar-item.is-active .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown { + display: block; + } + .navbar.is-spaced .navbar-item.is-active .navbar-dropdown, .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed { + opacity: 1; + pointer-events: auto; + transform: translateY(0); + } + + .navbar-menu { + flex-grow: 1; + flex-shrink: 0; + } + + .navbar-start { + justify-content: flex-start; + margin-right: auto; + } + + .navbar-end { + justify-content: flex-end; + margin-left: auto; + } + + .navbar-dropdown { + background-color: white; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-top: 2px solid #dbdbdb; + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1); + display: none; + font-size: 0.875rem; + left: 0; + min-width: 100%; + position: absolute; + top: 100%; + z-index: 20; + } + .navbar-dropdown .navbar-item { + padding: 0.375rem 1rem; + white-space: nowrap; + } + .navbar-dropdown a.navbar-item { + padding-right: 3rem; + } + .navbar-dropdown a.navbar-item:focus, .navbar-dropdown a.navbar-item:hover { + background-color: whitesmoke; + color: #0a0a0a; + } + .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: #feda5a; + } + .navbar.is-spaced .navbar-dropdown, .navbar-dropdown.is-boxed { + border-radius: 6px; + border-top: none; + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + display: block; + opacity: 0; + pointer-events: none; + top: calc(100% + (-4px)); + transform: translateY(-5px); + transition-duration: 86ms; + transition-property: opacity, transform; + } + .navbar-dropdown.is-right { + left: auto; + right: 0; + } + + .navbar-divider { + display: block; + } + + .navbar > .container .navbar-brand, +.container > .navbar .navbar-brand { + margin-left: -0.75rem; + } + .navbar > .container .navbar-menu, +.container > .navbar .navbar-menu { + margin-right: -0.75rem; + } + + .navbar.is-fixed-bottom-desktop, .navbar.is-fixed-top-desktop { + left: 0; + position: fixed; + right: 0; + z-index: 30; + } + .navbar.is-fixed-bottom-desktop { + bottom: 0; + } + .navbar.is-fixed-bottom-desktop.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); + } + .navbar.is-fixed-top-desktop { + top: 0; + } + + html.has-navbar-fixed-top-desktop, +body.has-navbar-fixed-top-desktop { + padding-top: 3.25rem; + } + html.has-navbar-fixed-bottom-desktop, +body.has-navbar-fixed-bottom-desktop { + padding-bottom: 3.25rem; + } + html.has-spaced-navbar-fixed-top, +body.has-spaced-navbar-fixed-top { + padding-top: 5.25rem; + } + html.has-spaced-navbar-fixed-bottom, +body.has-spaced-navbar-fixed-bottom { + padding-bottom: 5.25rem; + } + + a.navbar-item.is-active, +.navbar-link.is-active { + color: #0a0a0a; + } + a.navbar-item.is-active:not(:focus):not(:hover), +.navbar-link.is-active:not(:focus):not(:hover) { + background-color: transparent; + } + + .navbar-item.has-dropdown:focus .navbar-link, .navbar-item.has-dropdown:hover .navbar-link, .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #feda6a; + } +} +.hero.is-fullheight-with-navbar { + min-height: calc(100vh - 3.25rem); +} + +.pagination { + font-size: 1rem; + margin: -0.25rem; +} +.pagination.is-small { + font-size: 0.75rem; +} +.pagination.is-medium { + font-size: 1.25rem; +} +.pagination.is-large { + font-size: 1.5rem; +} +.pagination.is-rounded .pagination-previous, +.pagination.is-rounded .pagination-next { + padding-left: 1em; + padding-right: 1em; + border-radius: 290486px; +} +.pagination.is-rounded .pagination-link { + border-radius: 290486px; +} + +.pagination, +.pagination-list { + align-items: center; + display: flex; + justify-content: center; + text-align: center; +} + +.pagination-previous, +.pagination-next, +.pagination-link, +.pagination-ellipsis { + font-size: 1em; + justify-content: center; + margin: 0.25rem; + padding-left: 0.5em; + padding-right: 0.5em; + text-align: center; +} + +.pagination-previous, +.pagination-next, +.pagination-link { + border-color: #dbdbdb; + color: #363636; + min-width: 2.5em; +} +.pagination-previous:hover, +.pagination-next:hover, +.pagination-link:hover { + border-color: #b5b5b5; + color: white; +} +.pagination-previous:focus, +.pagination-next:focus, +.pagination-link:focus { + border-color: #3273dc; +} +.pagination-previous:active, +.pagination-next:active, +.pagination-link:active { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); +} +.pagination-previous[disabled], +.pagination-next[disabled], +.pagination-link[disabled] { + background-color: #dbdbdb; + border-color: #dbdbdb; + box-shadow: none; + color: #7a7a7a; + opacity: 0.5; +} + +.pagination-previous, +.pagination-next { + padding-left: 0.75em; + padding-right: 0.75em; + white-space: nowrap; +} + +.pagination-link.is-current { + background-color: #feda5a; + border-color: #feda5a; + color: rgba(0, 0, 0, 0.7); +} + +.pagination-ellipsis { + color: #b5b5b5; + pointer-events: none; +} + +.pagination-list { + flex-wrap: wrap; +} + +@media screen and (max-width: 768px) { + .pagination { + flex-wrap: wrap; + } + + .pagination-previous, +.pagination-next { + flex-grow: 1; + flex-shrink: 1; + } + + .pagination-list li { + flex-grow: 1; + flex-shrink: 1; + } +} +@media screen and (min-width: 769px), print { + .pagination-list { + flex-grow: 1; + flex-shrink: 1; + justify-content: flex-start; + order: 1; + } + + .pagination-previous { + order: 2; + } + + .pagination-next { + order: 3; + } + + .pagination { + justify-content: space-between; + } + .pagination.is-centered .pagination-previous { + order: 1; + } + .pagination.is-centered .pagination-list { + justify-content: center; + order: 2; + } + .pagination.is-centered .pagination-next { + order: 3; + } + .pagination.is-right .pagination-previous { + order: 1; + } + .pagination.is-right .pagination-next { + order: 2; + } + .pagination.is-right .pagination-list { + justify-content: flex-end; + order: 3; + } +} +.panel { + border-radius: 6px; + box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02); + font-size: 1rem; +} +.panel:not(:last-child) { + margin-bottom: 1.5rem; +} +.panel.is-white .panel-heading { + background-color: white; + color: #0a0a0a; +} +.panel.is-white .panel-tabs a.is-active { + border-bottom-color: white; +} +.panel.is-white .panel-block.is-active .panel-icon { + color: white; +} +.panel.is-black .panel-heading { + background-color: #0a0a0a; + color: white; +} +.panel.is-black .panel-tabs a.is-active { + border-bottom-color: #0a0a0a; +} +.panel.is-black .panel-block.is-active .panel-icon { + color: #0a0a0a; +} +.panel.is-light .panel-heading { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); +} +.panel.is-light .panel-tabs a.is-active { + border-bottom-color: whitesmoke; +} +.panel.is-light .panel-block.is-active .panel-icon { + color: whitesmoke; +} +.panel.is-dark .panel-heading { + background-color: #363636; + color: #fff; +} +.panel.is-dark .panel-tabs a.is-active { + border-bottom-color: #363636; +} +.panel.is-dark .panel-block.is-active .panel-icon { + color: #363636; +} +.panel.is-primary .panel-heading { + background-color: #00d1b2; + color: #fff; +} +.panel.is-primary .panel-tabs a.is-active { + border-bottom-color: #00d1b2; +} +.panel.is-primary .panel-block.is-active .panel-icon { + color: #00d1b2; +} +.panel.is-link .panel-heading { + background-color: #feda5a; + color: rgba(0, 0, 0, 0.7); +} +.panel.is-link .panel-tabs a.is-active { + border-bottom-color: #feda5a; +} +.panel.is-link .panel-block.is-active .panel-icon { + color: #feda5a; +} +.panel.is-info .panel-heading { + background-color: #3298dc; + color: #fff; +} +.panel.is-info .panel-tabs a.is-active { + border-bottom-color: #3298dc; +} +.panel.is-info .panel-block.is-active .panel-icon { + color: #3298dc; +} +.panel.is-success .panel-heading { + background-color: #48c774; + color: #fff; +} +.panel.is-success .panel-tabs a.is-active { + border-bottom-color: #48c774; +} +.panel.is-success .panel-block.is-active .panel-icon { + color: #48c774; +} +.panel.is-warning .panel-heading { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); +} +.panel.is-warning .panel-tabs a.is-active { + border-bottom-color: #ffdd57; +} +.panel.is-warning .panel-block.is-active .panel-icon { + color: #ffdd57; +} +.panel.is-danger .panel-heading { + background-color: #f14668; + color: #fff; +} +.panel.is-danger .panel-tabs a.is-active { + border-bottom-color: #f14668; +} +.panel.is-danger .panel-block.is-active .panel-icon { + color: #f14668; +} + +.panel-tabs:not(:last-child), +.panel-block:not(:last-child) { + border-bottom: 1px solid #ededed; +} + +.panel-heading { + background-color: #ededed; + border-radius: 6px 6px 0 0; + color: #363636; + font-size: 1.25em; + font-weight: 700; + line-height: 1.25; + padding: 0.75em 1em; +} + +.panel-tabs { + align-items: flex-end; + display: flex; + font-size: 0.875em; + justify-content: center; +} +.panel-tabs a { + border-bottom: 1px solid #dbdbdb; + margin-bottom: -1px; + padding: 0.5em; +} +.panel-tabs a.is-active { + border-bottom-color: #4a4a4a; + color: #363636; +} + +.panel-list a { + color: #4a4a4a; +} +.panel-list a:hover { + color: #feda5a; +} + +.panel-block { + align-items: center; + color: #363636; + display: flex; + justify-content: flex-start; + padding: 0.5em 0.75em; +} +.panel-block input[type=checkbox] { + margin-right: 0.75em; +} +.panel-block > .control { + flex-grow: 1; + flex-shrink: 1; + width: 100%; +} +.panel-block.is-wrapped { + flex-wrap: wrap; +} +.panel-block.is-active { + border-left-color: #feda5a; + color: #363636; +} +.panel-block.is-active .panel-icon { + color: #feda5a; +} +.panel-block:last-child { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +a.panel-block, +label.panel-block { + cursor: pointer; +} +a.panel-block:hover, +label.panel-block:hover { + background-color: whitesmoke; +} + +.panel-icon { + display: inline-block; + font-size: 14px; + height: 1em; + line-height: 1em; + text-align: center; + vertical-align: top; + width: 1em; + color: #7a7a7a; + margin-right: 0.75em; +} +.panel-icon .fa { + font-size: inherit; + line-height: inherit; +} + +.tabs { + -webkit-overflow-scrolling: touch; + align-items: stretch; + display: flex; + font-size: 1rem; + justify-content: space-between; + overflow: hidden; + overflow-x: auto; + white-space: nowrap; +} +.tabs a { + align-items: center; + border-bottom-color: #dbdbdb; + border-bottom-style: solid; + border-bottom-width: 1px; + color: #4a4a4a; + display: flex; + justify-content: center; + margin-bottom: -1px; + padding: 0.5em 1em; + vertical-align: top; +} +.tabs a:hover { + border-bottom-color: #363636; + color: #363636; +} +.tabs li { + display: block; +} +.tabs li.is-active a { + border-bottom-color: #feda5a; + color: #feda5a; +} +.tabs ul { + align-items: center; + border-bottom-color: #dbdbdb; + border-bottom-style: solid; + border-bottom-width: 1px; + display: flex; + flex-grow: 1; + flex-shrink: 0; + justify-content: flex-start; +} +.tabs ul.is-left { + padding-right: 0.75em; +} +.tabs ul.is-center { + flex: none; + justify-content: center; + padding-left: 0.75em; + padding-right: 0.75em; +} +.tabs ul.is-right { + justify-content: flex-end; + padding-left: 0.75em; +} +.tabs .icon:first-child { + margin-right: 0.5em; +} +.tabs .icon:last-child { + margin-left: 0.5em; +} +.tabs.is-centered ul { + justify-content: center; +} +.tabs.is-right ul { + justify-content: flex-end; +} +.tabs.is-boxed a { + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.tabs.is-boxed a:hover { + background-color: whitesmoke; + border-bottom-color: #dbdbdb; +} +.tabs.is-boxed li.is-active a { + background-color: white; + border-color: #dbdbdb; + border-bottom-color: transparent !important; +} +.tabs.is-fullwidth li { + flex-grow: 1; + flex-shrink: 0; +} +.tabs.is-toggle a { + border-color: #dbdbdb; + border-style: solid; + border-width: 1px; + margin-bottom: 0; + position: relative; +} +.tabs.is-toggle a:hover { + background-color: whitesmoke; + border-color: #b5b5b5; + z-index: 2; +} +.tabs.is-toggle li + li { + margin-left: -1px; +} +.tabs.is-toggle li:first-child a { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.tabs.is-toggle li:last-child a { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.tabs.is-toggle li.is-active a { + background-color: #feda5a; + border-color: #feda5a; + color: rgba(0, 0, 0, 0.7); + z-index: 1; +} +.tabs.is-toggle ul { + border-bottom: none; +} +.tabs.is-toggle.is-toggle-rounded li:first-child a { + border-bottom-left-radius: 290486px; + border-top-left-radius: 290486px; + padding-left: 1.25em; +} +.tabs.is-toggle.is-toggle-rounded li:last-child a { + border-bottom-right-radius: 290486px; + border-top-right-radius: 290486px; + padding-right: 1.25em; +} +.tabs.is-small { + font-size: 0.75rem; +} +.tabs.is-medium { + font-size: 1.25rem; +} +.tabs.is-large { + font-size: 1.5rem; +} + +/* Bulma Grid */ +.column { + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + padding: 0.75rem; +} +.columns.is-mobile > .column.is-narrow { + flex: none; +} +.columns.is-mobile > .column.is-full { + flex: none; + width: 100%; +} +.columns.is-mobile > .column.is-three-quarters { + flex: none; + width: 75%; +} +.columns.is-mobile > .column.is-two-thirds { + flex: none; + width: 66.6666%; +} +.columns.is-mobile > .column.is-half { + flex: none; + width: 50%; +} +.columns.is-mobile > .column.is-one-third { + flex: none; + width: 33.3333%; +} +.columns.is-mobile > .column.is-one-quarter { + flex: none; + width: 25%; +} +.columns.is-mobile > .column.is-one-fifth { + flex: none; + width: 20%; +} +.columns.is-mobile > .column.is-two-fifths { + flex: none; + width: 40%; +} +.columns.is-mobile > .column.is-three-fifths { + flex: none; + width: 60%; +} +.columns.is-mobile > .column.is-four-fifths { + flex: none; + width: 80%; +} +.columns.is-mobile > .column.is-offset-three-quarters { + margin-left: 75%; +} +.columns.is-mobile > .column.is-offset-two-thirds { + margin-left: 66.6666%; +} +.columns.is-mobile > .column.is-offset-half { + margin-left: 50%; +} +.columns.is-mobile > .column.is-offset-one-third { + margin-left: 33.3333%; +} +.columns.is-mobile > .column.is-offset-one-quarter { + margin-left: 25%; +} +.columns.is-mobile > .column.is-offset-one-fifth { + margin-left: 20%; +} +.columns.is-mobile > .column.is-offset-two-fifths { + margin-left: 40%; +} +.columns.is-mobile > .column.is-offset-three-fifths { + margin-left: 60%; +} +.columns.is-mobile > .column.is-offset-four-fifths { + margin-left: 80%; +} +.columns.is-mobile > .column.is-0 { + flex: none; + width: 0%; +} +.columns.is-mobile > .column.is-offset-0 { + margin-left: 0%; +} +.columns.is-mobile > .column.is-1 { + flex: none; + width: 8.3333333333%; +} +.columns.is-mobile > .column.is-offset-1 { + margin-left: 8.3333333333%; +} +.columns.is-mobile > .column.is-2 { + flex: none; + width: 16.6666666667%; +} +.columns.is-mobile > .column.is-offset-2 { + margin-left: 16.6666666667%; +} +.columns.is-mobile > .column.is-3 { + flex: none; + width: 25%; +} +.columns.is-mobile > .column.is-offset-3 { + margin-left: 25%; +} +.columns.is-mobile > .column.is-4 { + flex: none; + width: 33.3333333333%; +} +.columns.is-mobile > .column.is-offset-4 { + margin-left: 33.3333333333%; +} +.columns.is-mobile > .column.is-5 { + flex: none; + width: 41.6666666667%; +} +.columns.is-mobile > .column.is-offset-5 { + margin-left: 41.6666666667%; +} +.columns.is-mobile > .column.is-6 { + flex: none; + width: 50%; +} +.columns.is-mobile > .column.is-offset-6 { + margin-left: 50%; +} +.columns.is-mobile > .column.is-7 { + flex: none; + width: 58.3333333333%; +} +.columns.is-mobile > .column.is-offset-7 { + margin-left: 58.3333333333%; +} +.columns.is-mobile > .column.is-8 { + flex: none; + width: 66.6666666667%; +} +.columns.is-mobile > .column.is-offset-8 { + margin-left: 66.6666666667%; +} +.columns.is-mobile > .column.is-9 { + flex: none; + width: 75%; +} +.columns.is-mobile > .column.is-offset-9 { + margin-left: 75%; +} +.columns.is-mobile > .column.is-10 { + flex: none; + width: 83.3333333333%; +} +.columns.is-mobile > .column.is-offset-10 { + margin-left: 83.3333333333%; +} +.columns.is-mobile > .column.is-11 { + flex: none; + width: 91.6666666667%; +} +.columns.is-mobile > .column.is-offset-11 { + margin-left: 91.6666666667%; +} +.columns.is-mobile > .column.is-12 { + flex: none; + width: 100%; +} +.columns.is-mobile > .column.is-offset-12 { + margin-left: 100%; +} +@media screen and (max-width: 768px) { + .column.is-narrow-mobile { + flex: none; + } + .column.is-full-mobile { + flex: none; + width: 100%; + } + .column.is-three-quarters-mobile { + flex: none; + width: 75%; + } + .column.is-two-thirds-mobile { + flex: none; + width: 66.6666%; + } + .column.is-half-mobile { + flex: none; + width: 50%; + } + .column.is-one-third-mobile { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-mobile { + flex: none; + width: 25%; + } + .column.is-one-fifth-mobile { + flex: none; + width: 20%; + } + .column.is-two-fifths-mobile { + flex: none; + width: 40%; + } + .column.is-three-fifths-mobile { + flex: none; + width: 60%; + } + .column.is-four-fifths-mobile { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-mobile { + margin-left: 75%; + } + .column.is-offset-two-thirds-mobile { + margin-left: 66.6666%; + } + .column.is-offset-half-mobile { + margin-left: 50%; + } + .column.is-offset-one-third-mobile { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-mobile { + margin-left: 25%; + } + .column.is-offset-one-fifth-mobile { + margin-left: 20%; + } + .column.is-offset-two-fifths-mobile { + margin-left: 40%; + } + .column.is-offset-three-fifths-mobile { + margin-left: 60%; + } + .column.is-offset-four-fifths-mobile { + margin-left: 80%; + } + .column.is-0-mobile { + flex: none; + width: 0%; + } + .column.is-offset-0-mobile { + margin-left: 0%; + } + .column.is-1-mobile { + flex: none; + width: 8.3333333333%; + } + .column.is-offset-1-mobile { + margin-left: 8.3333333333%; + } + .column.is-2-mobile { + flex: none; + width: 16.6666666667%; + } + .column.is-offset-2-mobile { + margin-left: 16.6666666667%; + } + .column.is-3-mobile { + flex: none; + width: 25%; + } + .column.is-offset-3-mobile { + margin-left: 25%; + } + .column.is-4-mobile { + flex: none; + width: 33.3333333333%; + } + .column.is-offset-4-mobile { + margin-left: 33.3333333333%; + } + .column.is-5-mobile { + flex: none; + width: 41.6666666667%; + } + .column.is-offset-5-mobile { + margin-left: 41.6666666667%; + } + .column.is-6-mobile { + flex: none; + width: 50%; + } + .column.is-offset-6-mobile { + margin-left: 50%; + } + .column.is-7-mobile { + flex: none; + width: 58.3333333333%; + } + .column.is-offset-7-mobile { + margin-left: 58.3333333333%; + } + .column.is-8-mobile { + flex: none; + width: 66.6666666667%; + } + .column.is-offset-8-mobile { + margin-left: 66.6666666667%; + } + .column.is-9-mobile { + flex: none; + width: 75%; + } + .column.is-offset-9-mobile { + margin-left: 75%; + } + .column.is-10-mobile { + flex: none; + width: 83.3333333333%; + } + .column.is-offset-10-mobile { + margin-left: 83.3333333333%; + } + .column.is-11-mobile { + flex: none; + width: 91.6666666667%; + } + .column.is-offset-11-mobile { + margin-left: 91.6666666667%; + } + .column.is-12-mobile { + flex: none; + width: 100%; + } + .column.is-offset-12-mobile { + margin-left: 100%; + } +} +@media screen and (min-width: 769px), print { + .column.is-narrow, .column.is-narrow-tablet { + flex: none; + } + .column.is-full, .column.is-full-tablet { + flex: none; + width: 100%; + } + .column.is-three-quarters, .column.is-three-quarters-tablet { + flex: none; + width: 75%; + } + .column.is-two-thirds, .column.is-two-thirds-tablet { + flex: none; + width: 66.6666%; + } + .column.is-half, .column.is-half-tablet { + flex: none; + width: 50%; + } + .column.is-one-third, .column.is-one-third-tablet { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter, .column.is-one-quarter-tablet { + flex: none; + width: 25%; + } + .column.is-one-fifth, .column.is-one-fifth-tablet { + flex: none; + width: 20%; + } + .column.is-two-fifths, .column.is-two-fifths-tablet { + flex: none; + width: 40%; + } + .column.is-three-fifths, .column.is-three-fifths-tablet { + flex: none; + width: 60%; + } + .column.is-four-fifths, .column.is-four-fifths-tablet { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters, .column.is-offset-three-quarters-tablet { + margin-left: 75%; + } + .column.is-offset-two-thirds, .column.is-offset-two-thirds-tablet { + margin-left: 66.6666%; + } + .column.is-offset-half, .column.is-offset-half-tablet { + margin-left: 50%; + } + .column.is-offset-one-third, .column.is-offset-one-third-tablet { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter, .column.is-offset-one-quarter-tablet { + margin-left: 25%; + } + .column.is-offset-one-fifth, .column.is-offset-one-fifth-tablet { + margin-left: 20%; + } + .column.is-offset-two-fifths, .column.is-offset-two-fifths-tablet { + margin-left: 40%; + } + .column.is-offset-three-fifths, .column.is-offset-three-fifths-tablet { + margin-left: 60%; + } + .column.is-offset-four-fifths, .column.is-offset-four-fifths-tablet { + margin-left: 80%; + } + .column.is-0, .column.is-0-tablet { + flex: none; + width: 0%; + } + .column.is-offset-0, .column.is-offset-0-tablet { + margin-left: 0%; + } + .column.is-1, .column.is-1-tablet { + flex: none; + width: 8.3333333333%; + } + .column.is-offset-1, .column.is-offset-1-tablet { + margin-left: 8.3333333333%; + } + .column.is-2, .column.is-2-tablet { + flex: none; + width: 16.6666666667%; + } + .column.is-offset-2, .column.is-offset-2-tablet { + margin-left: 16.6666666667%; + } + .column.is-3, .column.is-3-tablet { + flex: none; + width: 25%; + } + .column.is-offset-3, .column.is-offset-3-tablet { + margin-left: 25%; + } + .column.is-4, .column.is-4-tablet { + flex: none; + width: 33.3333333333%; + } + .column.is-offset-4, .column.is-offset-4-tablet { + margin-left: 33.3333333333%; + } + .column.is-5, .column.is-5-tablet { + flex: none; + width: 41.6666666667%; + } + .column.is-offset-5, .column.is-offset-5-tablet { + margin-left: 41.6666666667%; + } + .column.is-6, .column.is-6-tablet { + flex: none; + width: 50%; + } + .column.is-offset-6, .column.is-offset-6-tablet { + margin-left: 50%; + } + .column.is-7, .column.is-7-tablet { + flex: none; + width: 58.3333333333%; + } + .column.is-offset-7, .column.is-offset-7-tablet { + margin-left: 58.3333333333%; + } + .column.is-8, .column.is-8-tablet { + flex: none; + width: 66.6666666667%; + } + .column.is-offset-8, .column.is-offset-8-tablet { + margin-left: 66.6666666667%; + } + .column.is-9, .column.is-9-tablet { + flex: none; + width: 75%; + } + .column.is-offset-9, .column.is-offset-9-tablet { + margin-left: 75%; + } + .column.is-10, .column.is-10-tablet { + flex: none; + width: 83.3333333333%; + } + .column.is-offset-10, .column.is-offset-10-tablet { + margin-left: 83.3333333333%; + } + .column.is-11, .column.is-11-tablet { + flex: none; + width: 91.6666666667%; + } + .column.is-offset-11, .column.is-offset-11-tablet { + margin-left: 91.6666666667%; + } + .column.is-12, .column.is-12-tablet { + flex: none; + width: 100%; + } + .column.is-offset-12, .column.is-offset-12-tablet { + margin-left: 100%; + } +} +@media screen and (max-width: 1023px) { + .column.is-narrow-touch { + flex: none; + } + .column.is-full-touch { + flex: none; + width: 100%; + } + .column.is-three-quarters-touch { + flex: none; + width: 75%; + } + .column.is-two-thirds-touch { + flex: none; + width: 66.6666%; + } + .column.is-half-touch { + flex: none; + width: 50%; + } + .column.is-one-third-touch { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-touch { + flex: none; + width: 25%; + } + .column.is-one-fifth-touch { + flex: none; + width: 20%; + } + .column.is-two-fifths-touch { + flex: none; + width: 40%; + } + .column.is-three-fifths-touch { + flex: none; + width: 60%; + } + .column.is-four-fifths-touch { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-touch { + margin-left: 75%; + } + .column.is-offset-two-thirds-touch { + margin-left: 66.6666%; + } + .column.is-offset-half-touch { + margin-left: 50%; + } + .column.is-offset-one-third-touch { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-touch { + margin-left: 25%; + } + .column.is-offset-one-fifth-touch { + margin-left: 20%; + } + .column.is-offset-two-fifths-touch { + margin-left: 40%; + } + .column.is-offset-three-fifths-touch { + margin-left: 60%; + } + .column.is-offset-four-fifths-touch { + margin-left: 80%; + } + .column.is-0-touch { + flex: none; + width: 0%; + } + .column.is-offset-0-touch { + margin-left: 0%; + } + .column.is-1-touch { + flex: none; + width: 8.3333333333%; + } + .column.is-offset-1-touch { + margin-left: 8.3333333333%; + } + .column.is-2-touch { + flex: none; + width: 16.6666666667%; + } + .column.is-offset-2-touch { + margin-left: 16.6666666667%; + } + .column.is-3-touch { + flex: none; + width: 25%; + } + .column.is-offset-3-touch { + margin-left: 25%; + } + .column.is-4-touch { + flex: none; + width: 33.3333333333%; + } + .column.is-offset-4-touch { + margin-left: 33.3333333333%; + } + .column.is-5-touch { + flex: none; + width: 41.6666666667%; + } + .column.is-offset-5-touch { + margin-left: 41.6666666667%; + } + .column.is-6-touch { + flex: none; + width: 50%; + } + .column.is-offset-6-touch { + margin-left: 50%; + } + .column.is-7-touch { + flex: none; + width: 58.3333333333%; + } + .column.is-offset-7-touch { + margin-left: 58.3333333333%; + } + .column.is-8-touch { + flex: none; + width: 66.6666666667%; + } + .column.is-offset-8-touch { + margin-left: 66.6666666667%; + } + .column.is-9-touch { + flex: none; + width: 75%; + } + .column.is-offset-9-touch { + margin-left: 75%; + } + .column.is-10-touch { + flex: none; + width: 83.3333333333%; + } + .column.is-offset-10-touch { + margin-left: 83.3333333333%; + } + .column.is-11-touch { + flex: none; + width: 91.6666666667%; + } + .column.is-offset-11-touch { + margin-left: 91.6666666667%; + } + .column.is-12-touch { + flex: none; + width: 100%; + } + .column.is-offset-12-touch { + margin-left: 100%; + } +} +@media screen and (min-width: 1024px) { + .column.is-narrow-desktop { + flex: none; + } + .column.is-full-desktop { + flex: none; + width: 100%; + } + .column.is-three-quarters-desktop { + flex: none; + width: 75%; + } + .column.is-two-thirds-desktop { + flex: none; + width: 66.6666%; + } + .column.is-half-desktop { + flex: none; + width: 50%; + } + .column.is-one-third-desktop { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-desktop { + flex: none; + width: 25%; + } + .column.is-one-fifth-desktop { + flex: none; + width: 20%; + } + .column.is-two-fifths-desktop { + flex: none; + width: 40%; + } + .column.is-three-fifths-desktop { + flex: none; + width: 60%; + } + .column.is-four-fifths-desktop { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-desktop { + margin-left: 75%; + } + .column.is-offset-two-thirds-desktop { + margin-left: 66.6666%; + } + .column.is-offset-half-desktop { + margin-left: 50%; + } + .column.is-offset-one-third-desktop { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-desktop { + margin-left: 25%; + } + .column.is-offset-one-fifth-desktop { + margin-left: 20%; + } + .column.is-offset-two-fifths-desktop { + margin-left: 40%; + } + .column.is-offset-three-fifths-desktop { + margin-left: 60%; + } + .column.is-offset-four-fifths-desktop { + margin-left: 80%; + } + .column.is-0-desktop { + flex: none; + width: 0%; + } + .column.is-offset-0-desktop { + margin-left: 0%; + } + .column.is-1-desktop { + flex: none; + width: 8.3333333333%; + } + .column.is-offset-1-desktop { + margin-left: 8.3333333333%; + } + .column.is-2-desktop { + flex: none; + width: 16.6666666667%; + } + .column.is-offset-2-desktop { + margin-left: 16.6666666667%; + } + .column.is-3-desktop { + flex: none; + width: 25%; + } + .column.is-offset-3-desktop { + margin-left: 25%; + } + .column.is-4-desktop { + flex: none; + width: 33.3333333333%; + } + .column.is-offset-4-desktop { + margin-left: 33.3333333333%; + } + .column.is-5-desktop { + flex: none; + width: 41.6666666667%; + } + .column.is-offset-5-desktop { + margin-left: 41.6666666667%; + } + .column.is-6-desktop { + flex: none; + width: 50%; + } + .column.is-offset-6-desktop { + margin-left: 50%; + } + .column.is-7-desktop { + flex: none; + width: 58.3333333333%; + } + .column.is-offset-7-desktop { + margin-left: 58.3333333333%; + } + .column.is-8-desktop { + flex: none; + width: 66.6666666667%; + } + .column.is-offset-8-desktop { + margin-left: 66.6666666667%; + } + .column.is-9-desktop { + flex: none; + width: 75%; + } + .column.is-offset-9-desktop { + margin-left: 75%; + } + .column.is-10-desktop { + flex: none; + width: 83.3333333333%; + } + .column.is-offset-10-desktop { + margin-left: 83.3333333333%; + } + .column.is-11-desktop { + flex: none; + width: 91.6666666667%; + } + .column.is-offset-11-desktop { + margin-left: 91.6666666667%; + } + .column.is-12-desktop { + flex: none; + width: 100%; + } + .column.is-offset-12-desktop { + margin-left: 100%; + } +} +@media screen and (min-width: 1216px) { + .column.is-narrow-widescreen { + flex: none; + } + .column.is-full-widescreen { + flex: none; + width: 100%; + } + .column.is-three-quarters-widescreen { + flex: none; + width: 75%; + } + .column.is-two-thirds-widescreen { + flex: none; + width: 66.6666%; + } + .column.is-half-widescreen { + flex: none; + width: 50%; + } + .column.is-one-third-widescreen { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-widescreen { + flex: none; + width: 25%; + } + .column.is-one-fifth-widescreen { + flex: none; + width: 20%; + } + .column.is-two-fifths-widescreen { + flex: none; + width: 40%; + } + .column.is-three-fifths-widescreen { + flex: none; + width: 60%; + } + .column.is-four-fifths-widescreen { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-widescreen { + margin-left: 75%; + } + .column.is-offset-two-thirds-widescreen { + margin-left: 66.6666%; + } + .column.is-offset-half-widescreen { + margin-left: 50%; + } + .column.is-offset-one-third-widescreen { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-widescreen { + margin-left: 25%; + } + .column.is-offset-one-fifth-widescreen { + margin-left: 20%; + } + .column.is-offset-two-fifths-widescreen { + margin-left: 40%; + } + .column.is-offset-three-fifths-widescreen { + margin-left: 60%; + } + .column.is-offset-four-fifths-widescreen { + margin-left: 80%; + } + .column.is-0-widescreen { + flex: none; + width: 0%; + } + .column.is-offset-0-widescreen { + margin-left: 0%; + } + .column.is-1-widescreen { + flex: none; + width: 8.3333333333%; + } + .column.is-offset-1-widescreen { + margin-left: 8.3333333333%; + } + .column.is-2-widescreen { + flex: none; + width: 16.6666666667%; + } + .column.is-offset-2-widescreen { + margin-left: 16.6666666667%; + } + .column.is-3-widescreen { + flex: none; + width: 25%; + } + .column.is-offset-3-widescreen { + margin-left: 25%; + } + .column.is-4-widescreen { + flex: none; + width: 33.3333333333%; + } + .column.is-offset-4-widescreen { + margin-left: 33.3333333333%; + } + .column.is-5-widescreen { + flex: none; + width: 41.6666666667%; + } + .column.is-offset-5-widescreen { + margin-left: 41.6666666667%; + } + .column.is-6-widescreen { + flex: none; + width: 50%; + } + .column.is-offset-6-widescreen { + margin-left: 50%; + } + .column.is-7-widescreen { + flex: none; + width: 58.3333333333%; + } + .column.is-offset-7-widescreen { + margin-left: 58.3333333333%; + } + .column.is-8-widescreen { + flex: none; + width: 66.6666666667%; + } + .column.is-offset-8-widescreen { + margin-left: 66.6666666667%; + } + .column.is-9-widescreen { + flex: none; + width: 75%; + } + .column.is-offset-9-widescreen { + margin-left: 75%; + } + .column.is-10-widescreen { + flex: none; + width: 83.3333333333%; + } + .column.is-offset-10-widescreen { + margin-left: 83.3333333333%; + } + .column.is-11-widescreen { + flex: none; + width: 91.6666666667%; + } + .column.is-offset-11-widescreen { + margin-left: 91.6666666667%; + } + .column.is-12-widescreen { + flex: none; + width: 100%; + } + .column.is-offset-12-widescreen { + margin-left: 100%; + } +} +@media screen and (min-width: 1408px) { + .column.is-narrow-fullhd { + flex: none; + } + .column.is-full-fullhd { + flex: none; + width: 100%; + } + .column.is-three-quarters-fullhd { + flex: none; + width: 75%; + } + .column.is-two-thirds-fullhd { + flex: none; + width: 66.6666%; + } + .column.is-half-fullhd { + flex: none; + width: 50%; + } + .column.is-one-third-fullhd { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-fullhd { + flex: none; + width: 25%; + } + .column.is-one-fifth-fullhd { + flex: none; + width: 20%; + } + .column.is-two-fifths-fullhd { + flex: none; + width: 40%; + } + .column.is-three-fifths-fullhd { + flex: none; + width: 60%; + } + .column.is-four-fifths-fullhd { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-fullhd { + margin-left: 75%; + } + .column.is-offset-two-thirds-fullhd { + margin-left: 66.6666%; + } + .column.is-offset-half-fullhd { + margin-left: 50%; + } + .column.is-offset-one-third-fullhd { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-fullhd { + margin-left: 25%; + } + .column.is-offset-one-fifth-fullhd { + margin-left: 20%; + } + .column.is-offset-two-fifths-fullhd { + margin-left: 40%; + } + .column.is-offset-three-fifths-fullhd { + margin-left: 60%; + } + .column.is-offset-four-fifths-fullhd { + margin-left: 80%; + } + .column.is-0-fullhd { + flex: none; + width: 0%; + } + .column.is-offset-0-fullhd { + margin-left: 0%; + } + .column.is-1-fullhd { + flex: none; + width: 8.3333333333%; + } + .column.is-offset-1-fullhd { + margin-left: 8.3333333333%; + } + .column.is-2-fullhd { + flex: none; + width: 16.6666666667%; + } + .column.is-offset-2-fullhd { + margin-left: 16.6666666667%; + } + .column.is-3-fullhd { + flex: none; + width: 25%; + } + .column.is-offset-3-fullhd { + margin-left: 25%; + } + .column.is-4-fullhd { + flex: none; + width: 33.3333333333%; + } + .column.is-offset-4-fullhd { + margin-left: 33.3333333333%; + } + .column.is-5-fullhd { + flex: none; + width: 41.6666666667%; + } + .column.is-offset-5-fullhd { + margin-left: 41.6666666667%; + } + .column.is-6-fullhd { + flex: none; + width: 50%; + } + .column.is-offset-6-fullhd { + margin-left: 50%; + } + .column.is-7-fullhd { + flex: none; + width: 58.3333333333%; + } + .column.is-offset-7-fullhd { + margin-left: 58.3333333333%; + } + .column.is-8-fullhd { + flex: none; + width: 66.6666666667%; + } + .column.is-offset-8-fullhd { + margin-left: 66.6666666667%; + } + .column.is-9-fullhd { + flex: none; + width: 75%; + } + .column.is-offset-9-fullhd { + margin-left: 75%; + } + .column.is-10-fullhd { + flex: none; + width: 83.3333333333%; + } + .column.is-offset-10-fullhd { + margin-left: 83.3333333333%; + } + .column.is-11-fullhd { + flex: none; + width: 91.6666666667%; + } + .column.is-offset-11-fullhd { + margin-left: 91.6666666667%; + } + .column.is-12-fullhd { + flex: none; + width: 100%; + } + .column.is-offset-12-fullhd { + margin-left: 100%; + } +} + +.columns { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; +} +.columns:last-child { + margin-bottom: -0.75rem; +} +.columns:not(:last-child) { + margin-bottom: calc(1.5rem - 0.75rem); +} +.columns.is-centered { + justify-content: center; +} +.columns.is-gapless { + margin-left: 0; + margin-right: 0; + margin-top: 0; +} +.columns.is-gapless > .column { + margin: 0; + padding: 0 !important; +} +.columns.is-gapless:not(:last-child) { + margin-bottom: 1.5rem; +} +.columns.is-gapless:last-child { + margin-bottom: 0; +} +.columns.is-mobile { + display: flex; +} +.columns.is-multiline { + flex-wrap: wrap; +} +.columns.is-vcentered { + align-items: center; +} +@media screen and (min-width: 769px), print { + .columns:not(.is-desktop) { + display: flex; + } +} +@media screen and (min-width: 1024px) { + .columns.is-desktop { + display: flex; + } +} + +.columns.is-variable { + --columnGap: 0.75rem; + margin-left: calc(-1 * var(--columnGap)); + margin-right: calc(-1 * var(--columnGap)); +} +.columns.is-variable .column { + padding-left: var(--columnGap); + padding-right: var(--columnGap); +} +.columns.is-variable.is-0 { + --columnGap: 0rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-0-mobile { + --columnGap: 0rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-0-tablet { + --columnGap: 0rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-0-tablet-only { + --columnGap: 0rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-0-touch { + --columnGap: 0rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-0-desktop { + --columnGap: 0rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-0-desktop-only { + --columnGap: 0rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-0-widescreen { + --columnGap: 0rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-0-widescreen-only { + --columnGap: 0rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-0-fullhd { + --columnGap: 0rem; + } +} +.columns.is-variable.is-1 { + --columnGap: 0.25rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-1-mobile { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-1-tablet { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-1-tablet-only { + --columnGap: 0.25rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-1-touch { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-1-desktop { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-1-desktop-only { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-1-widescreen { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-1-widescreen-only { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-1-fullhd { + --columnGap: 0.25rem; + } +} +.columns.is-variable.is-2 { + --columnGap: 0.5rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-2-mobile { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-2-tablet { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-2-tablet-only { + --columnGap: 0.5rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-2-touch { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-2-desktop { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-2-desktop-only { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-2-widescreen { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-2-widescreen-only { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-2-fullhd { + --columnGap: 0.5rem; + } +} +.columns.is-variable.is-3 { + --columnGap: 0.75rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-3-mobile { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-3-tablet { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-3-tablet-only { + --columnGap: 0.75rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-3-touch { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-3-desktop { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-3-desktop-only { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-3-widescreen { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-3-widescreen-only { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-3-fullhd { + --columnGap: 0.75rem; + } +} +.columns.is-variable.is-4 { + --columnGap: 1rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-4-mobile { + --columnGap: 1rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-4-tablet { + --columnGap: 1rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-4-tablet-only { + --columnGap: 1rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-4-touch { + --columnGap: 1rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-4-desktop { + --columnGap: 1rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-4-desktop-only { + --columnGap: 1rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-4-widescreen { + --columnGap: 1rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-4-widescreen-only { + --columnGap: 1rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-4-fullhd { + --columnGap: 1rem; + } +} +.columns.is-variable.is-5 { + --columnGap: 1.25rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-5-mobile { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-5-tablet { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-5-tablet-only { + --columnGap: 1.25rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-5-touch { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-5-desktop { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-5-desktop-only { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-5-widescreen { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-5-widescreen-only { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-5-fullhd { + --columnGap: 1.25rem; + } +} +.columns.is-variable.is-6 { + --columnGap: 1.5rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-6-mobile { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-6-tablet { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-6-tablet-only { + --columnGap: 1.5rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-6-touch { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-6-desktop { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-6-desktop-only { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-6-widescreen { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-6-widescreen-only { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-6-fullhd { + --columnGap: 1.5rem; + } +} +.columns.is-variable.is-7 { + --columnGap: 1.75rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-7-mobile { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-7-tablet { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-7-tablet-only { + --columnGap: 1.75rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-7-touch { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-7-desktop { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-7-desktop-only { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-7-widescreen { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-7-widescreen-only { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-7-fullhd { + --columnGap: 1.75rem; + } +} +.columns.is-variable.is-8 { + --columnGap: 2rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-8-mobile { + --columnGap: 2rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-8-tablet { + --columnGap: 2rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-8-tablet-only { + --columnGap: 2rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-8-touch { + --columnGap: 2rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-8-desktop { + --columnGap: 2rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-8-desktop-only { + --columnGap: 2rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-8-widescreen { + --columnGap: 2rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-8-widescreen-only { + --columnGap: 2rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-8-fullhd { + --columnGap: 2rem; + } +} + +.tile { + align-items: stretch; + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + min-height: min-content; +} +.tile.is-ancestor { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; +} +.tile.is-ancestor:last-child { + margin-bottom: -0.75rem; +} +.tile.is-ancestor:not(:last-child) { + margin-bottom: 0.75rem; +} +.tile.is-child { + margin: 0 !important; +} +.tile.is-parent { + padding: 0.75rem; +} +.tile.is-vertical { + flex-direction: column; +} +.tile.is-vertical > .tile.is-child:not(:last-child) { + margin-bottom: 1.5rem !important; +} +@media screen and (min-width: 769px), print { + .tile:not(.is-child) { + display: flex; + } + .tile.is-1 { + flex: none; + width: 8.3333333333%; + } + .tile.is-2 { + flex: none; + width: 16.6666666667%; + } + .tile.is-3 { + flex: none; + width: 25%; + } + .tile.is-4 { + flex: none; + width: 33.3333333333%; + } + .tile.is-5 { + flex: none; + width: 41.6666666667%; + } + .tile.is-6 { + flex: none; + width: 50%; + } + .tile.is-7 { + flex: none; + width: 58.3333333333%; + } + .tile.is-8 { + flex: none; + width: 66.6666666667%; + } + .tile.is-9 { + flex: none; + width: 75%; + } + .tile.is-10 { + flex: none; + width: 83.3333333333%; + } + .tile.is-11 { + flex: none; + width: 91.6666666667%; + } + .tile.is-12 { + flex: none; + width: 100%; + } +} + +/* Bulma Helpers */ +.has-text-white { + color: white !important; +} + +a.has-text-white:hover, a.has-text-white:focus { + color: #e6e6e6 !important; +} + +.has-background-white { + background-color: white !important; +} + +.has-text-black { + color: #0a0a0a !important; +} + +a.has-text-black:hover, a.has-text-black:focus { + color: black !important; +} + +.has-background-black { + background-color: #0a0a0a !important; +} + +.has-text-light { + color: whitesmoke !important; +} + +a.has-text-light:hover, a.has-text-light:focus { + color: #dbdbdb !important; +} + +.has-background-light { + background-color: whitesmoke !important; +} + +.has-text-dark { + color: #363636 !important; +} + +a.has-text-dark:hover, a.has-text-dark:focus { + color: #1c1c1c !important; +} + +.has-background-dark { + background-color: #363636 !important; +} + +.has-text-primary { + color: #00d1b2 !important; +} + +a.has-text-primary:hover, a.has-text-primary:focus { + color: #009e86 !important; +} + +.has-background-primary { + background-color: #00d1b2 !important; +} + +.has-text-primary-light { + color: #ebfffc !important; +} + +a.has-text-primary-light:hover, a.has-text-primary-light:focus { + color: #b8fff4 !important; +} + +.has-background-primary-light { + background-color: #ebfffc !important; +} + +.has-text-primary-dark { + color: #00947e !important; +} + +a.has-text-primary-dark:hover, a.has-text-primary-dark:focus { + color: #00c7a9 !important; +} + +.has-background-primary-dark { + background-color: #00947e !important; +} + +.has-text-link { + color: #feda5a !important; +} + +a.has-text-link:hover, a.has-text-link:focus { + color: #fecf27 !important; +} + +.has-background-link { + background-color: #feda5a !important; +} + +.has-text-link-light { + color: #fffaeb !important; +} + +a.has-text-link-light:hover, a.has-text-link-light:focus { + color: #ffefb8 !important; +} + +.has-background-link-light { + background-color: #fffaeb !important; +} + +.has-text-link-dark { + color: #937301 !important; +} + +a.has-text-link-dark:hover, a.has-text-link-dark:focus { + color: #c69b01 !important; +} + +.has-background-link-dark { + background-color: #937301 !important; +} + +.has-text-info { + color: #3298dc !important; +} + +a.has-text-info:hover, a.has-text-info:focus { + color: #207dbc !important; +} + +.has-background-info { + background-color: #3298dc !important; +} + +.has-text-info-light { + color: #eef6fc !important; +} + +a.has-text-info-light:hover, a.has-text-info-light:focus { + color: #c2e0f5 !important; +} + +.has-background-info-light { + background-color: #eef6fc !important; +} + +.has-text-info-dark { + color: #1d72aa !important; +} + +a.has-text-info-dark:hover, a.has-text-info-dark:focus { + color: #248fd6 !important; +} + +.has-background-info-dark { + background-color: #1d72aa !important; +} + +.has-text-success { + color: #48c774 !important; +} + +a.has-text-success:hover, a.has-text-success:focus { + color: #34a85c !important; +} + +.has-background-success { + background-color: #48c774 !important; +} + +.has-text-success-light { + color: #effaf3 !important; +} + +a.has-text-success-light:hover, a.has-text-success-light:focus { + color: #c8eed6 !important; +} + +.has-background-success-light { + background-color: #effaf3 !important; +} + +.has-text-success-dark { + color: #257942 !important; +} + +a.has-text-success-dark:hover, a.has-text-success-dark:focus { + color: #31a058 !important; +} + +.has-background-success-dark { + background-color: #257942 !important; +} + +.has-text-warning { + color: #ffdd57 !important; +} + +a.has-text-warning:hover, a.has-text-warning:focus { + color: #ffd324 !important; +} + +.has-background-warning { + background-color: #ffdd57 !important; +} + +.has-text-warning-light { + color: #fffbeb !important; +} + +a.has-text-warning-light:hover, a.has-text-warning-light:focus { + color: #fff1b8 !important; +} + +.has-background-warning-light { + background-color: #fffbeb !important; +} + +.has-text-warning-dark { + color: #947600 !important; +} + +a.has-text-warning-dark:hover, a.has-text-warning-dark:focus { + color: #c79f00 !important; +} + +.has-background-warning-dark { + background-color: #947600 !important; +} + +.has-text-danger { + color: #f14668 !important; +} + +a.has-text-danger:hover, a.has-text-danger:focus { + color: #ee1742 !important; +} + +.has-background-danger { + background-color: #f14668 !important; +} + +.has-text-danger-light { + color: #feecf0 !important; +} + +a.has-text-danger-light:hover, a.has-text-danger-light:focus { + color: #fabdc9 !important; +} + +.has-background-danger-light { + background-color: #feecf0 !important; +} + +.has-text-danger-dark { + color: #cc0f35 !important; +} + +a.has-text-danger-dark:hover, a.has-text-danger-dark:focus { + color: #ee2049 !important; +} + +.has-background-danger-dark { + background-color: #cc0f35 !important; +} + +.has-text-black-bis { + color: #121212 !important; +} + +.has-background-black-bis { + background-color: #121212 !important; +} + +.has-text-black-ter { + color: #242424 !important; +} + +.has-background-black-ter { + background-color: #242424 !important; +} + +.has-text-grey-darker { + color: #363636 !important; +} + +.has-background-grey-darker { + background-color: #363636 !important; +} + +.has-text-grey-dark { + color: #4a4a4a !important; +} + +.has-background-grey-dark { + background-color: #4a4a4a !important; +} + +.has-text-grey { + color: #7a7a7a !important; +} + +.has-background-grey { + background-color: #7a7a7a !important; +} + +.has-text-grey-light { + color: #b5b5b5 !important; +} + +.has-background-grey-light { + background-color: #b5b5b5 !important; +} + +.has-text-grey-lighter { + color: #dbdbdb !important; +} + +.has-background-grey-lighter { + background-color: #dbdbdb !important; +} + +.has-text-white-ter { + color: whitesmoke !important; +} + +.has-background-white-ter { + background-color: whitesmoke !important; +} + +.has-text-white-bis { + color: #fafafa !important; +} + +.has-background-white-bis { + background-color: #fafafa !important; +} + +.is-flex-direction-row { + flex-direction: row !important; +} + +.is-flex-direction-row-reverse { + flex-direction: row-reverse !important; +} + +.is-flex-direction-column { + flex-direction: column !important; +} + +.is-flex-direction-column-reverse { + flex-direction: column-reverse !important; +} + +.is-flex-wrap-nowrap { + flex-wrap: nowrap !important; +} + +.is-flex-wrap-wrap { + flex-wrap: wrap !important; +} + +.is-flex-wrap-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.is-justify-content-flex-start { + justify-content: flex-start !important; +} + +.is-justify-content-flex-end { + justify-content: flex-end !important; +} + +.is-justify-content-center { + justify-content: center !important; +} + +.is-justify-content-space-between { + justify-content: space-between !important; +} + +.is-justify-content-space-around { + justify-content: space-around !important; +} + +.is-justify-content-space-evenly { + justify-content: space-evenly !important; +} + +.is-justify-content-start { + justify-content: start !important; +} + +.is-justify-content-end { + justify-content: end !important; +} + +.is-justify-content-left { + justify-content: left !important; +} + +.is-justify-content-right { + justify-content: right !important; +} + +.is-align-content-flex-start { + align-content: flex-start !important; +} + +.is-align-content-flex-end { + align-content: flex-end !important; +} + +.is-align-content-center { + align-content: center !important; +} + +.is-align-content-space-between { + align-content: space-between !important; +} + +.is-align-content-space-around { + align-content: space-around !important; +} + +.is-align-content-space-evenly { + align-content: space-evenly !important; +} + +.is-align-content-stretch { + align-content: stretch !important; +} + +.is-align-content-start { + align-content: start !important; +} + +.is-align-content-end { + align-content: end !important; +} + +.is-align-content-baseline { + align-content: baseline !important; +} + +.is-align-items-stretch { + align-items: stretch !important; +} + +.is-align-items-flex-start { + align-items: flex-start !important; +} + +.is-align-items-flex-end { + align-items: flex-end !important; +} + +.is-align-items-center { + align-items: center !important; +} + +.is-align-items-baseline { + align-items: baseline !important; +} + +.is-align-items-start { + align-items: start !important; +} + +.is-align-items-end { + align-items: end !important; +} + +.is-align-items-self-start { + align-items: self-start !important; +} + +.is-align-items-self-end { + align-items: self-end !important; +} + +.is-align-self-auto { + align-self: auto !important; +} + +.is-align-self-flex-start { + align-self: flex-start !important; +} + +.is-align-self-flex-end { + align-self: flex-end !important; +} + +.is-align-self-center { + align-self: center !important; +} + +.is-align-self-baseline { + align-self: baseline !important; +} + +.is-align-self-stretch { + align-self: stretch !important; +} + +.is-flex-grow-0 { + flex-grow: 0 !important; +} + +.is-flex-grow-1 { + flex-grow: 1 !important; +} + +.is-flex-grow-2 { + flex-grow: 2 !important; +} + +.is-flex-grow-3 { + flex-grow: 3 !important; +} + +.is-flex-grow-4 { + flex-grow: 4 !important; +} + +.is-flex-grow-5 { + flex-grow: 5 !important; +} + +.is-flex-shrink-0 { + flex-shrink: 0 !important; +} + +.is-flex-shrink-1 { + flex-shrink: 1 !important; +} + +.is-flex-shrink-2 { + flex-shrink: 2 !important; +} + +.is-flex-shrink-3 { + flex-shrink: 3 !important; +} + +.is-flex-shrink-4 { + flex-shrink: 4 !important; +} + +.is-flex-shrink-5 { + flex-shrink: 5 !important; +} + +.is-clearfix::after { + clear: both; + content: " "; + display: table; +} + +.is-pulled-left { + float: left !important; +} + +.is-pulled-right { + float: right !important; +} + +.is-radiusless { + border-radius: 0 !important; +} + +.is-shadowless { + box-shadow: none !important; +} + +.is-clickable { + cursor: pointer !important; +} + +.is-clipped { + overflow: hidden !important; +} + +.is-relative { + position: relative !important; +} + +.is-marginless { + margin: 0 !important; +} + +.is-paddingless { + padding: 0 !important; +} + +.m-0 { + margin: 0 !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mr-0 { + margin-right: 0 !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.ml-0 { + margin-left: 0 !important; +} + +.mx-0 { + margin-left: 0 !important; + margin-right: 0 !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mr-1 { + margin-right: 0.25rem !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.ml-1 { + margin-left: 0.25rem !important; +} + +.mx-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mr-2 { + margin-right: 0.5rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.ml-2 { + margin-left: 0.5rem !important; +} + +.mx-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.m-3 { + margin: 0.75rem !important; +} + +.mt-3 { + margin-top: 0.75rem !important; +} + +.mr-3 { + margin-right: 0.75rem !important; +} + +.mb-3 { + margin-bottom: 0.75rem !important; +} + +.ml-3 { + margin-left: 0.75rem !important; +} + +.mx-3 { + margin-left: 0.75rem !important; + margin-right: 0.75rem !important; +} + +.my-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; +} + +.m-4 { + margin: 1rem !important; +} + +.mt-4 { + margin-top: 1rem !important; +} + +.mr-4 { + margin-right: 1rem !important; +} + +.mb-4 { + margin-bottom: 1rem !important; +} + +.ml-4 { + margin-left: 1rem !important; +} + +.mx-4 { + margin-left: 1rem !important; + margin-right: 1rem !important; +} + +.my-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.m-5 { + margin: 1.5rem !important; +} + +.mt-5 { + margin-top: 1.5rem !important; +} + +.mr-5 { + margin-right: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 1.5rem !important; +} + +.ml-5 { + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; +} + +.my-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.m-6 { + margin: 3rem !important; +} + +.mt-6 { + margin-top: 3rem !important; +} + +.mr-6 { + margin-right: 3rem !important; +} + +.mb-6 { + margin-bottom: 3rem !important; +} + +.ml-6 { + margin-left: 3rem !important; +} + +.mx-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; +} + +.my-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.p-0 { + padding: 0 !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pr-0 { + padding-right: 0 !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pl-0 { + padding-left: 0 !important; +} + +.px-0 { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pr-1 { + padding-right: 0.25rem !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pl-1 { + padding-left: 0.25rem !important; +} + +.px-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pr-2 { + padding-right: 0.5rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pl-2 { + padding-left: 0.5rem !important; +} + +.px-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.p-3 { + padding: 0.75rem !important; +} + +.pt-3 { + padding-top: 0.75rem !important; +} + +.pr-3 { + padding-right: 0.75rem !important; +} + +.pb-3 { + padding-bottom: 0.75rem !important; +} + +.pl-3 { + padding-left: 0.75rem !important; +} + +.px-3 { + padding-left: 0.75rem !important; + padding-right: 0.75rem !important; +} + +.py-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; +} + +.p-4 { + padding: 1rem !important; +} + +.pt-4 { + padding-top: 1rem !important; +} + +.pr-4 { + padding-right: 1rem !important; +} + +.pb-4 { + padding-bottom: 1rem !important; +} + +.pl-4 { + padding-left: 1rem !important; +} + +.px-4 { + padding-left: 1rem !important; + padding-right: 1rem !important; +} + +.py-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.p-5 { + padding: 1.5rem !important; +} + +.pt-5 { + padding-top: 1.5rem !important; +} + +.pr-5 { + padding-right: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 1.5rem !important; +} + +.pl-5 { + padding-left: 1.5rem !important; +} + +.px-5 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; +} + +.py-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.p-6 { + padding: 3rem !important; +} + +.pt-6 { + padding-top: 3rem !important; +} + +.pr-6 { + padding-right: 3rem !important; +} + +.pb-6 { + padding-bottom: 3rem !important; +} + +.pl-6 { + padding-left: 3rem !important; +} + +.px-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; +} + +.py-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.is-size-1 { + font-size: 3rem !important; +} + +.is-size-2 { + font-size: 2.5rem !important; +} + +.is-size-3 { + font-size: 2rem !important; +} + +.is-size-4 { + font-size: 1.5rem !important; +} + +.is-size-5 { + font-size: 1.25rem !important; +} + +.is-size-6 { + font-size: 1rem !important; +} + +.is-size-7 { + font-size: 0.75rem !important; +} + +@media screen and (max-width: 768px) { + .is-size-1-mobile { + font-size: 3rem !important; + } + + .is-size-2-mobile { + font-size: 2.5rem !important; + } + + .is-size-3-mobile { + font-size: 2rem !important; + } + + .is-size-4-mobile { + font-size: 1.5rem !important; + } + + .is-size-5-mobile { + font-size: 1.25rem !important; + } + + .is-size-6-mobile { + font-size: 1rem !important; + } + + .is-size-7-mobile { + font-size: 0.75rem !important; + } +} +@media screen and (min-width: 769px), print { + .is-size-1-tablet { + font-size: 3rem !important; + } + + .is-size-2-tablet { + font-size: 2.5rem !important; + } + + .is-size-3-tablet { + font-size: 2rem !important; + } + + .is-size-4-tablet { + font-size: 1.5rem !important; + } + + .is-size-5-tablet { + font-size: 1.25rem !important; + } + + .is-size-6-tablet { + font-size: 1rem !important; + } + + .is-size-7-tablet { + font-size: 0.75rem !important; + } +} +@media screen and (max-width: 1023px) { + .is-size-1-touch { + font-size: 3rem !important; + } + + .is-size-2-touch { + font-size: 2.5rem !important; + } + + .is-size-3-touch { + font-size: 2rem !important; + } + + .is-size-4-touch { + font-size: 1.5rem !important; + } + + .is-size-5-touch { + font-size: 1.25rem !important; + } + + .is-size-6-touch { + font-size: 1rem !important; + } + + .is-size-7-touch { + font-size: 0.75rem !important; + } +} +@media screen and (min-width: 1024px) { + .is-size-1-desktop { + font-size: 3rem !important; + } + + .is-size-2-desktop { + font-size: 2.5rem !important; + } + + .is-size-3-desktop { + font-size: 2rem !important; + } + + .is-size-4-desktop { + font-size: 1.5rem !important; + } + + .is-size-5-desktop { + font-size: 1.25rem !important; + } + + .is-size-6-desktop { + font-size: 1rem !important; + } + + .is-size-7-desktop { + font-size: 0.75rem !important; + } +} +@media screen and (min-width: 1216px) { + .is-size-1-widescreen { + font-size: 3rem !important; + } + + .is-size-2-widescreen { + font-size: 2.5rem !important; + } + + .is-size-3-widescreen { + font-size: 2rem !important; + } + + .is-size-4-widescreen { + font-size: 1.5rem !important; + } + + .is-size-5-widescreen { + font-size: 1.25rem !important; + } + + .is-size-6-widescreen { + font-size: 1rem !important; + } + + .is-size-7-widescreen { + font-size: 0.75rem !important; + } +} +@media screen and (min-width: 1408px) { + .is-size-1-fullhd { + font-size: 3rem !important; + } + + .is-size-2-fullhd { + font-size: 2.5rem !important; + } + + .is-size-3-fullhd { + font-size: 2rem !important; + } + + .is-size-4-fullhd { + font-size: 1.5rem !important; + } + + .is-size-5-fullhd { + font-size: 1.25rem !important; + } + + .is-size-6-fullhd { + font-size: 1rem !important; + } + + .is-size-7-fullhd { + font-size: 0.75rem !important; + } +} +.has-text-centered { + text-align: center !important; +} + +.has-text-justified { + text-align: justify !important; +} + +.has-text-left { + text-align: left !important; +} + +.has-text-right { + text-align: right !important; +} + +@media screen and (max-width: 768px) { + .has-text-centered-mobile { + text-align: center !important; + } +} +@media screen and (min-width: 769px), print { + .has-text-centered-tablet { + text-align: center !important; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .has-text-centered-tablet-only { + text-align: center !important; + } +} +@media screen and (max-width: 1023px) { + .has-text-centered-touch { + text-align: center !important; + } +} +@media screen and (min-width: 1024px) { + .has-text-centered-desktop { + text-align: center !important; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .has-text-centered-desktop-only { + text-align: center !important; + } +} +@media screen and (min-width: 1216px) { + .has-text-centered-widescreen { + text-align: center !important; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-centered-widescreen-only { + text-align: center !important; + } +} +@media screen and (min-width: 1408px) { + .has-text-centered-fullhd { + text-align: center !important; + } +} +@media screen and (max-width: 768px) { + .has-text-justified-mobile { + text-align: justify !important; + } +} +@media screen and (min-width: 769px), print { + .has-text-justified-tablet { + text-align: justify !important; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .has-text-justified-tablet-only { + text-align: justify !important; + } +} +@media screen and (max-width: 1023px) { + .has-text-justified-touch { + text-align: justify !important; + } +} +@media screen and (min-width: 1024px) { + .has-text-justified-desktop { + text-align: justify !important; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .has-text-justified-desktop-only { + text-align: justify !important; + } +} +@media screen and (min-width: 1216px) { + .has-text-justified-widescreen { + text-align: justify !important; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-justified-widescreen-only { + text-align: justify !important; + } +} +@media screen and (min-width: 1408px) { + .has-text-justified-fullhd { + text-align: justify !important; + } +} +@media screen and (max-width: 768px) { + .has-text-left-mobile { + text-align: left !important; + } +} +@media screen and (min-width: 769px), print { + .has-text-left-tablet { + text-align: left !important; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .has-text-left-tablet-only { + text-align: left !important; + } +} +@media screen and (max-width: 1023px) { + .has-text-left-touch { + text-align: left !important; + } +} +@media screen and (min-width: 1024px) { + .has-text-left-desktop { + text-align: left !important; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .has-text-left-desktop-only { + text-align: left !important; + } +} +@media screen and (min-width: 1216px) { + .has-text-left-widescreen { + text-align: left !important; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-left-widescreen-only { + text-align: left !important; + } +} +@media screen and (min-width: 1408px) { + .has-text-left-fullhd { + text-align: left !important; + } +} +@media screen and (max-width: 768px) { + .has-text-right-mobile { + text-align: right !important; + } +} +@media screen and (min-width: 769px), print { + .has-text-right-tablet { + text-align: right !important; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .has-text-right-tablet-only { + text-align: right !important; + } +} +@media screen and (max-width: 1023px) { + .has-text-right-touch { + text-align: right !important; + } +} +@media screen and (min-width: 1024px) { + .has-text-right-desktop { + text-align: right !important; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .has-text-right-desktop-only { + text-align: right !important; + } +} +@media screen and (min-width: 1216px) { + .has-text-right-widescreen { + text-align: right !important; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-right-widescreen-only { + text-align: right !important; + } +} +@media screen and (min-width: 1408px) { + .has-text-right-fullhd { + text-align: right !important; + } +} +.is-capitalized { + text-transform: capitalize !important; +} + +.is-lowercase { + text-transform: lowercase !important; +} + +.is-uppercase { + text-transform: uppercase !important; +} + +.is-italic { + font-style: italic !important; +} + +.has-text-weight-light { + font-weight: 300 !important; +} + +.has-text-weight-normal { + font-weight: 400 !important; +} + +.has-text-weight-medium { + font-weight: 500 !important; +} + +.has-text-weight-semibold { + font-weight: 600 !important; +} + +.has-text-weight-bold { + font-weight: 700 !important; +} + +.is-family-primary { + font-family: "Open Sans", sans-serif !important; +} + +.is-family-secondary { + font-family: "Open Sans", sans-serif !important; +} + +.is-family-sans-serif { + font-family: "Open Sans", sans-serif !important; +} + +.is-family-monospace { + font-family: monospace !important; +} + +.is-family-code { + font-family: "Fira Code", monospace !important; +} + +.is-block { + display: block !important; +} + +@media screen and (max-width: 768px) { + .is-block-mobile { + display: block !important; + } +} +@media screen and (min-width: 769px), print { + .is-block-tablet { + display: block !important; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-block-tablet-only { + display: block !important; + } +} +@media screen and (max-width: 1023px) { + .is-block-touch { + display: block !important; + } +} +@media screen and (min-width: 1024px) { + .is-block-desktop { + display: block !important; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-block-desktop-only { + display: block !important; + } +} +@media screen and (min-width: 1216px) { + .is-block-widescreen { + display: block !important; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-block-widescreen-only { + display: block !important; + } +} +@media screen and (min-width: 1408px) { + .is-block-fullhd { + display: block !important; + } +} +.is-flex { + display: flex !important; +} + +@media screen and (max-width: 768px) { + .is-flex-mobile { + display: flex !important; + } +} +@media screen and (min-width: 769px), print { + .is-flex-tablet { + display: flex !important; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-flex-tablet-only { + display: flex !important; + } +} +@media screen and (max-width: 1023px) { + .is-flex-touch { + display: flex !important; + } +} +@media screen and (min-width: 1024px) { + .is-flex-desktop { + display: flex !important; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-flex-desktop-only { + display: flex !important; + } +} +@media screen and (min-width: 1216px) { + .is-flex-widescreen { + display: flex !important; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-flex-widescreen-only { + display: flex !important; + } +} +@media screen and (min-width: 1408px) { + .is-flex-fullhd { + display: flex !important; + } +} +.is-inline { + display: inline !important; +} + +@media screen and (max-width: 768px) { + .is-inline-mobile { + display: inline !important; + } +} +@media screen and (min-width: 769px), print { + .is-inline-tablet { + display: inline !important; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-inline-tablet-only { + display: inline !important; + } +} +@media screen and (max-width: 1023px) { + .is-inline-touch { + display: inline !important; + } +} +@media screen and (min-width: 1024px) { + .is-inline-desktop { + display: inline !important; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-inline-desktop-only { + display: inline !important; + } +} +@media screen and (min-width: 1216px) { + .is-inline-widescreen { + display: inline !important; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-widescreen-only { + display: inline !important; + } +} +@media screen and (min-width: 1408px) { + .is-inline-fullhd { + display: inline !important; + } +} +.is-inline-block { + display: inline-block !important; +} + +@media screen and (max-width: 768px) { + .is-inline-block-mobile { + display: inline-block !important; + } +} +@media screen and (min-width: 769px), print { + .is-inline-block-tablet { + display: inline-block !important; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-inline-block-tablet-only { + display: inline-block !important; + } +} +@media screen and (max-width: 1023px) { + .is-inline-block-touch { + display: inline-block !important; + } +} +@media screen and (min-width: 1024px) { + .is-inline-block-desktop { + display: inline-block !important; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-inline-block-desktop-only { + display: inline-block !important; + } +} +@media screen and (min-width: 1216px) { + .is-inline-block-widescreen { + display: inline-block !important; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-block-widescreen-only { + display: inline-block !important; + } +} +@media screen and (min-width: 1408px) { + .is-inline-block-fullhd { + display: inline-block !important; + } +} +.is-inline-flex { + display: inline-flex !important; +} + +@media screen and (max-width: 768px) { + .is-inline-flex-mobile { + display: inline-flex !important; + } +} +@media screen and (min-width: 769px), print { + .is-inline-flex-tablet { + display: inline-flex !important; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-inline-flex-tablet-only { + display: inline-flex !important; + } +} +@media screen and (max-width: 1023px) { + .is-inline-flex-touch { + display: inline-flex !important; + } +} +@media screen and (min-width: 1024px) { + .is-inline-flex-desktop { + display: inline-flex !important; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-inline-flex-desktop-only { + display: inline-flex !important; + } +} +@media screen and (min-width: 1216px) { + .is-inline-flex-widescreen { + display: inline-flex !important; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-flex-widescreen-only { + display: inline-flex !important; + } +} +@media screen and (min-width: 1408px) { + .is-inline-flex-fullhd { + display: inline-flex !important; + } +} +.is-hidden { + display: none !important; +} + +.is-sr-only { + border: none !important; + clip: rect(0, 0, 0, 0) !important; + height: 0.01em !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + white-space: nowrap !important; + width: 0.01em !important; +} + +@media screen and (max-width: 768px) { + .is-hidden-mobile { + display: none !important; + } +} +@media screen and (min-width: 769px), print { + .is-hidden-tablet { + display: none !important; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-hidden-tablet-only { + display: none !important; + } +} +@media screen and (max-width: 1023px) { + .is-hidden-touch { + display: none !important; + } +} +@media screen and (min-width: 1024px) { + .is-hidden-desktop { + display: none !important; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-hidden-desktop-only { + display: none !important; + } +} +@media screen and (min-width: 1216px) { + .is-hidden-widescreen { + display: none !important; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-hidden-widescreen-only { + display: none !important; + } +} +@media screen and (min-width: 1408px) { + .is-hidden-fullhd { + display: none !important; + } +} +.is-invisible { + visibility: hidden !important; +} + +@media screen and (max-width: 768px) { + .is-invisible-mobile { + visibility: hidden !important; + } +} +@media screen and (min-width: 769px), print { + .is-invisible-tablet { + visibility: hidden !important; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-invisible-tablet-only { + visibility: hidden !important; + } +} +@media screen and (max-width: 1023px) { + .is-invisible-touch { + visibility: hidden !important; + } +} +@media screen and (min-width: 1024px) { + .is-invisible-desktop { + visibility: hidden !important; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-invisible-desktop-only { + visibility: hidden !important; + } +} +@media screen and (min-width: 1216px) { + .is-invisible-widescreen { + visibility: hidden !important; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-invisible-widescreen-only { + visibility: hidden !important; + } +} +@media screen and (min-width: 1408px) { + .is-invisible-fullhd { + visibility: hidden !important; + } +} +/* Bulma Layout */ +.hero { + align-items: stretch; + display: flex; + flex-direction: column; + justify-content: space-between; +} +.hero .navbar { + background: none; +} +.hero .tabs ul { + border-bottom: none; +} +.hero.is-white { + background-color: white; + color: #0a0a0a; +} +.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-white strong { + color: inherit; +} +.hero.is-white .title { + color: #0a0a0a; +} +.hero.is-white .subtitle { + color: rgba(10, 10, 10, 0.9); +} +.hero.is-white .subtitle a:not(.button), +.hero.is-white .subtitle strong { + color: #0a0a0a; +} +@media screen and (max-width: 1023px) { + .hero.is-white .navbar-menu { + background-color: white; + } +} +.hero.is-white .navbar-item, +.hero.is-white .navbar-link { + color: rgba(10, 10, 10, 0.7); +} +.hero.is-white a.navbar-item:hover, .hero.is-white a.navbar-item.is-active, +.hero.is-white .navbar-link:hover, +.hero.is-white .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; +} +.hero.is-white .tabs a { + color: #0a0a0a; + opacity: 0.9; +} +.hero.is-white .tabs a:hover { + opacity: 1; +} +.hero.is-white .tabs li.is-active a { + opacity: 1; +} +.hero.is-white .tabs.is-boxed a, .hero.is-white .tabs.is-toggle a { + color: #0a0a0a; +} +.hero.is-white .tabs.is-boxed a:hover, .hero.is-white .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} +.hero.is-white .tabs.is-boxed li.is-active a, .hero.is-white .tabs.is-boxed li.is-active a:hover, .hero.is-white .tabs.is-toggle li.is-active a, .hero.is-white .tabs.is-toggle li.is-active a:hover { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; +} +.hero.is-white.is-bold { + background-image: linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%); +} +@media screen and (max-width: 768px) { + .hero.is-white.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%); + } +} +.hero.is-black { + background-color: #0a0a0a; + color: white; +} +.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-black strong { + color: inherit; +} +.hero.is-black .title { + color: white; +} +.hero.is-black .subtitle { + color: rgba(255, 255, 255, 0.9); +} +.hero.is-black .subtitle a:not(.button), +.hero.is-black .subtitle strong { + color: white; +} +@media screen and (max-width: 1023px) { + .hero.is-black .navbar-menu { + background-color: #0a0a0a; + } +} +.hero.is-black .navbar-item, +.hero.is-black .navbar-link { + color: rgba(255, 255, 255, 0.7); +} +.hero.is-black a.navbar-item:hover, .hero.is-black a.navbar-item.is-active, +.hero.is-black .navbar-link:hover, +.hero.is-black .navbar-link.is-active { + background-color: black; + color: white; +} +.hero.is-black .tabs a { + color: white; + opacity: 0.9; +} +.hero.is-black .tabs a:hover { + opacity: 1; +} +.hero.is-black .tabs li.is-active a { + opacity: 1; +} +.hero.is-black .tabs.is-boxed a, .hero.is-black .tabs.is-toggle a { + color: white; +} +.hero.is-black .tabs.is-boxed a:hover, .hero.is-black .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} +.hero.is-black .tabs.is-boxed li.is-active a, .hero.is-black .tabs.is-boxed li.is-active a:hover, .hero.is-black .tabs.is-toggle li.is-active a, .hero.is-black .tabs.is-toggle li.is-active a:hover { + background-color: white; + border-color: white; + color: #0a0a0a; +} +.hero.is-black.is-bold { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); +} +@media screen and (max-width: 768px) { + .hero.is-black.is-bold .navbar-menu { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); + } +} +.hero.is-light { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); +} +.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-light strong { + color: inherit; +} +.hero.is-light .title { + color: rgba(0, 0, 0, 0.7); +} +.hero.is-light .subtitle { + color: rgba(0, 0, 0, 0.9); +} +.hero.is-light .subtitle a:not(.button), +.hero.is-light .subtitle strong { + color: rgba(0, 0, 0, 0.7); +} +@media screen and (max-width: 1023px) { + .hero.is-light .navbar-menu { + background-color: whitesmoke; + } +} +.hero.is-light .navbar-item, +.hero.is-light .navbar-link { + color: rgba(0, 0, 0, 0.7); +} +.hero.is-light a.navbar-item:hover, .hero.is-light a.navbar-item.is-active, +.hero.is-light .navbar-link:hover, +.hero.is-light .navbar-link.is-active { + background-color: #e8e8e8; + color: rgba(0, 0, 0, 0.7); +} +.hero.is-light .tabs a { + color: rgba(0, 0, 0, 0.7); + opacity: 0.9; +} +.hero.is-light .tabs a:hover { + opacity: 1; +} +.hero.is-light .tabs li.is-active a { + opacity: 1; +} +.hero.is-light .tabs.is-boxed a, .hero.is-light .tabs.is-toggle a { + color: rgba(0, 0, 0, 0.7); +} +.hero.is-light .tabs.is-boxed a:hover, .hero.is-light .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} +.hero.is-light .tabs.is-boxed li.is-active a, .hero.is-light .tabs.is-boxed li.is-active a:hover, .hero.is-light .tabs.is-toggle li.is-active a, .hero.is-light .tabs.is-toggle li.is-active a:hover { + background-color: rgba(0, 0, 0, 0.7); + border-color: rgba(0, 0, 0, 0.7); + color: whitesmoke; +} +.hero.is-light.is-bold { + background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); +} +@media screen and (max-width: 768px) { + .hero.is-light.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); + } +} +.hero.is-dark { + background-color: #363636; + color: #fff; +} +.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-dark strong { + color: inherit; +} +.hero.is-dark .title { + color: #fff; +} +.hero.is-dark .subtitle { + color: rgba(255, 255, 255, 0.9); +} +.hero.is-dark .subtitle a:not(.button), +.hero.is-dark .subtitle strong { + color: #fff; +} +@media screen and (max-width: 1023px) { + .hero.is-dark .navbar-menu { + background-color: #363636; + } +} +.hero.is-dark .navbar-item, +.hero.is-dark .navbar-link { + color: rgba(255, 255, 255, 0.7); +} +.hero.is-dark a.navbar-item:hover, .hero.is-dark a.navbar-item.is-active, +.hero.is-dark .navbar-link:hover, +.hero.is-dark .navbar-link.is-active { + background-color: #292929; + color: #fff; +} +.hero.is-dark .tabs a { + color: #fff; + opacity: 0.9; +} +.hero.is-dark .tabs a:hover { + opacity: 1; +} +.hero.is-dark .tabs li.is-active a { + opacity: 1; +} +.hero.is-dark .tabs.is-boxed a, .hero.is-dark .tabs.is-toggle a { + color: #fff; +} +.hero.is-dark .tabs.is-boxed a:hover, .hero.is-dark .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} +.hero.is-dark .tabs.is-boxed li.is-active a, .hero.is-dark .tabs.is-boxed li.is-active a:hover, .hero.is-dark .tabs.is-toggle li.is-active a, .hero.is-dark .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #363636; +} +.hero.is-dark.is-bold { + background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); +} +@media screen and (max-width: 768px) { + .hero.is-dark.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); + } +} +.hero.is-primary { + background-color: #00d1b2; + color: #fff; +} +.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-primary strong { + color: inherit; +} +.hero.is-primary .title { + color: #fff; +} +.hero.is-primary .subtitle { + color: rgba(255, 255, 255, 0.9); +} +.hero.is-primary .subtitle a:not(.button), +.hero.is-primary .subtitle strong { + color: #fff; +} +@media screen and (max-width: 1023px) { + .hero.is-primary .navbar-menu { + background-color: #00d1b2; + } +} +.hero.is-primary .navbar-item, +.hero.is-primary .navbar-link { + color: rgba(255, 255, 255, 0.7); +} +.hero.is-primary a.navbar-item:hover, .hero.is-primary a.navbar-item.is-active, +.hero.is-primary .navbar-link:hover, +.hero.is-primary .navbar-link.is-active { + background-color: #00b89c; + color: #fff; +} +.hero.is-primary .tabs a { + color: #fff; + opacity: 0.9; +} +.hero.is-primary .tabs a:hover { + opacity: 1; +} +.hero.is-primary .tabs li.is-active a { + opacity: 1; +} +.hero.is-primary .tabs.is-boxed a, .hero.is-primary .tabs.is-toggle a { + color: #fff; +} +.hero.is-primary .tabs.is-boxed a:hover, .hero.is-primary .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} +.hero.is-primary .tabs.is-boxed li.is-active a, .hero.is-primary .tabs.is-boxed li.is-active a:hover, .hero.is-primary .tabs.is-toggle li.is-active a, .hero.is-primary .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #00d1b2; +} +.hero.is-primary.is-bold { + background-image: linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%); +} +@media screen and (max-width: 768px) { + .hero.is-primary.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%); + } +} +.hero.is-link { + background-color: #feda5a; + color: rgba(0, 0, 0, 0.7); +} +.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-link strong { + color: inherit; +} +.hero.is-link .title { + color: rgba(0, 0, 0, 0.7); +} +.hero.is-link .subtitle { + color: rgba(0, 0, 0, 0.9); +} +.hero.is-link .subtitle a:not(.button), +.hero.is-link .subtitle strong { + color: rgba(0, 0, 0, 0.7); +} +@media screen and (max-width: 1023px) { + .hero.is-link .navbar-menu { + background-color: #feda5a; + } +} +.hero.is-link .navbar-item, +.hero.is-link .navbar-link { + color: rgba(0, 0, 0, 0.7); +} +.hero.is-link a.navbar-item:hover, .hero.is-link a.navbar-item.is-active, +.hero.is-link .navbar-link:hover, +.hero.is-link .navbar-link.is-active { + background-color: #fed441; + color: rgba(0, 0, 0, 0.7); +} +.hero.is-link .tabs a { + color: rgba(0, 0, 0, 0.7); + opacity: 0.9; +} +.hero.is-link .tabs a:hover { + opacity: 1; +} +.hero.is-link .tabs li.is-active a { + opacity: 1; +} +.hero.is-link .tabs.is-boxed a, .hero.is-link .tabs.is-toggle a { + color: rgba(0, 0, 0, 0.7); +} +.hero.is-link .tabs.is-boxed a:hover, .hero.is-link .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} +.hero.is-link .tabs.is-boxed li.is-active a, .hero.is-link .tabs.is-boxed li.is-active a:hover, .hero.is-link .tabs.is-toggle li.is-active a, .hero.is-link .tabs.is-toggle li.is-active a:hover { + background-color: rgba(0, 0, 0, 0.7); + border-color: rgba(0, 0, 0, 0.7); + color: #feda5a; +} +.hero.is-link.is-bold { + background-image: linear-gradient(141deg, #ffab26 0%, #feda5a 71%, #fff873 100%); +} +@media screen and (max-width: 768px) { + .hero.is-link.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #ffab26 0%, #feda5a 71%, #fff873 100%); + } +} +.hero.is-info { + background-color: #3298dc; + color: #fff; +} +.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-info strong { + color: inherit; +} +.hero.is-info .title { + color: #fff; +} +.hero.is-info .subtitle { + color: rgba(255, 255, 255, 0.9); +} +.hero.is-info .subtitle a:not(.button), +.hero.is-info .subtitle strong { + color: #fff; +} +@media screen and (max-width: 1023px) { + .hero.is-info .navbar-menu { + background-color: #3298dc; + } +} +.hero.is-info .navbar-item, +.hero.is-info .navbar-link { + color: rgba(255, 255, 255, 0.7); +} +.hero.is-info a.navbar-item:hover, .hero.is-info a.navbar-item.is-active, +.hero.is-info .navbar-link:hover, +.hero.is-info .navbar-link.is-active { + background-color: #238cd1; + color: #fff; +} +.hero.is-info .tabs a { + color: #fff; + opacity: 0.9; +} +.hero.is-info .tabs a:hover { + opacity: 1; +} +.hero.is-info .tabs li.is-active a { + opacity: 1; +} +.hero.is-info .tabs.is-boxed a, .hero.is-info .tabs.is-toggle a { + color: #fff; +} +.hero.is-info .tabs.is-boxed a:hover, .hero.is-info .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} +.hero.is-info .tabs.is-boxed li.is-active a, .hero.is-info .tabs.is-boxed li.is-active a:hover, .hero.is-info .tabs.is-toggle li.is-active a, .hero.is-info .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #3298dc; +} +.hero.is-info.is-bold { + background-image: linear-gradient(141deg, #159dc6 0%, #3298dc 71%, #4389e5 100%); +} +@media screen and (max-width: 768px) { + .hero.is-info.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #159dc6 0%, #3298dc 71%, #4389e5 100%); + } +} +.hero.is-success { + background-color: #48c774; + color: #fff; +} +.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-success strong { + color: inherit; +} +.hero.is-success .title { + color: #fff; +} +.hero.is-success .subtitle { + color: rgba(255, 255, 255, 0.9); +} +.hero.is-success .subtitle a:not(.button), +.hero.is-success .subtitle strong { + color: #fff; +} +@media screen and (max-width: 1023px) { + .hero.is-success .navbar-menu { + background-color: #48c774; + } +} +.hero.is-success .navbar-item, +.hero.is-success .navbar-link { + color: rgba(255, 255, 255, 0.7); +} +.hero.is-success a.navbar-item:hover, .hero.is-success a.navbar-item.is-active, +.hero.is-success .navbar-link:hover, +.hero.is-success .navbar-link.is-active { + background-color: #3abb67; + color: #fff; +} +.hero.is-success .tabs a { + color: #fff; + opacity: 0.9; +} +.hero.is-success .tabs a:hover { + opacity: 1; +} +.hero.is-success .tabs li.is-active a { + opacity: 1; +} +.hero.is-success .tabs.is-boxed a, .hero.is-success .tabs.is-toggle a { + color: #fff; +} +.hero.is-success .tabs.is-boxed a:hover, .hero.is-success .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} +.hero.is-success .tabs.is-boxed li.is-active a, .hero.is-success .tabs.is-boxed li.is-active a:hover, .hero.is-success .tabs.is-toggle li.is-active a, .hero.is-success .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #48c774; +} +.hero.is-success.is-bold { + background-image: linear-gradient(141deg, #29b342 0%, #48c774 71%, #56d296 100%); +} +@media screen and (max-width: 768px) { + .hero.is-success.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #29b342 0%, #48c774 71%, #56d296 100%); + } +} +.hero.is-warning { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); +} +.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-warning strong { + color: inherit; +} +.hero.is-warning .title { + color: rgba(0, 0, 0, 0.7); +} +.hero.is-warning .subtitle { + color: rgba(0, 0, 0, 0.9); +} +.hero.is-warning .subtitle a:not(.button), +.hero.is-warning .subtitle strong { + color: rgba(0, 0, 0, 0.7); +} +@media screen and (max-width: 1023px) { + .hero.is-warning .navbar-menu { + background-color: #ffdd57; + } +} +.hero.is-warning .navbar-item, +.hero.is-warning .navbar-link { + color: rgba(0, 0, 0, 0.7); +} +.hero.is-warning a.navbar-item:hover, .hero.is-warning a.navbar-item.is-active, +.hero.is-warning .navbar-link:hover, +.hero.is-warning .navbar-link.is-active { + background-color: #ffd83d; + color: rgba(0, 0, 0, 0.7); +} +.hero.is-warning .tabs a { + color: rgba(0, 0, 0, 0.7); + opacity: 0.9; +} +.hero.is-warning .tabs a:hover { + opacity: 1; +} +.hero.is-warning .tabs li.is-active a { + opacity: 1; +} +.hero.is-warning .tabs.is-boxed a, .hero.is-warning .tabs.is-toggle a { + color: rgba(0, 0, 0, 0.7); +} +.hero.is-warning .tabs.is-boxed a:hover, .hero.is-warning .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} +.hero.is-warning .tabs.is-boxed li.is-active a, .hero.is-warning .tabs.is-boxed li.is-active a:hover, .hero.is-warning .tabs.is-toggle li.is-active a, .hero.is-warning .tabs.is-toggle li.is-active a:hover { + background-color: rgba(0, 0, 0, 0.7); + border-color: rgba(0, 0, 0, 0.7); + color: #ffdd57; +} +.hero.is-warning.is-bold { + background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%); +} +@media screen and (max-width: 768px) { + .hero.is-warning.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%); + } +} +.hero.is-danger { + background-color: #f14668; + color: #fff; +} +.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-danger strong { + color: inherit; +} +.hero.is-danger .title { + color: #fff; +} +.hero.is-danger .subtitle { + color: rgba(255, 255, 255, 0.9); +} +.hero.is-danger .subtitle a:not(.button), +.hero.is-danger .subtitle strong { + color: #fff; +} +@media screen and (max-width: 1023px) { + .hero.is-danger .navbar-menu { + background-color: #f14668; + } +} +.hero.is-danger .navbar-item, +.hero.is-danger .navbar-link { + color: rgba(255, 255, 255, 0.7); +} +.hero.is-danger a.navbar-item:hover, .hero.is-danger a.navbar-item.is-active, +.hero.is-danger .navbar-link:hover, +.hero.is-danger .navbar-link.is-active { + background-color: #ef2e55; + color: #fff; +} +.hero.is-danger .tabs a { + color: #fff; + opacity: 0.9; +} +.hero.is-danger .tabs a:hover { + opacity: 1; +} +.hero.is-danger .tabs li.is-active a { + opacity: 1; +} +.hero.is-danger .tabs.is-boxed a, .hero.is-danger .tabs.is-toggle a { + color: #fff; +} +.hero.is-danger .tabs.is-boxed a:hover, .hero.is-danger .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} +.hero.is-danger .tabs.is-boxed li.is-active a, .hero.is-danger .tabs.is-boxed li.is-active a:hover, .hero.is-danger .tabs.is-toggle li.is-active a, .hero.is-danger .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #f14668; +} +.hero.is-danger.is-bold { + background-image: linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%); +} +@media screen and (max-width: 768px) { + .hero.is-danger.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%); + } +} +.hero.is-small .hero-body { + padding: 1.5rem; +} +@media screen and (min-width: 769px), print { + .hero.is-medium .hero-body { + padding: 9rem 1.5rem; + } +} +@media screen and (min-width: 769px), print { + .hero.is-large .hero-body { + padding: 18rem 1.5rem; + } +} +.hero.is-halfheight .hero-body, .hero.is-fullheight .hero-body, .hero.is-fullheight-with-navbar .hero-body { + align-items: center; + display: flex; +} +.hero.is-halfheight .hero-body > .container, .hero.is-fullheight .hero-body > .container, .hero.is-fullheight-with-navbar .hero-body > .container { + flex-grow: 1; + flex-shrink: 1; +} +.hero.is-halfheight { + min-height: 50vh; +} +.hero.is-fullheight { + min-height: 100vh; +} + +.hero-video { + overflow: hidden; +} +.hero-video video { + left: 50%; + min-height: 100%; + min-width: 100%; + position: absolute; + top: 50%; + transform: translate3d(-50%, -50%, 0); +} +.hero-video.is-transparent { + opacity: 0.3; +} +@media screen and (max-width: 768px) { + .hero-video { + display: none; + } +} + +.hero-buttons { + margin-top: 1.5rem; +} +@media screen and (max-width: 768px) { + .hero-buttons .button { + display: flex; + } + .hero-buttons .button:not(:last-child) { + margin-bottom: 0.75rem; + } +} +@media screen and (min-width: 769px), print { + .hero-buttons { + display: flex; + justify-content: center; + } + .hero-buttons .button:not(:last-child) { + margin-right: 1.5rem; + } +} + +.hero-head, +.hero-foot { + flex-grow: 0; + flex-shrink: 0; +} + +.hero-body { + flex-grow: 1; + flex-shrink: 0; + padding: 3rem 1.5rem; +} + +.section { + padding: 3rem 1.5rem; +} +@media screen and (min-width: 1024px) { + .section.is-medium { + padding: 9rem 1.5rem; + } + .section.is-large { + padding: 10rem 1.5rem; + } +} + +.footer { + background-color: #393f4d; + padding: 3rem 1.5rem 6rem; + color: true; +} + +/* open-sans-regular - latin */ +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Open Sans Regular"), local("OpenSans-Regular"), url("/static/css/open-sans-v18-latin-regular.woff2") format("woff2"); + /* Chrome 26+, Opera 23+, Firefox 39+ */ +} +canvas { + width: 100%; + height: auto; +} + +.bg-yayellow { + background-color: #feda6a; +} + +.bg-deepmatte { + background-color: #393f4d; +} + +.bg-darkslate { + background-color: #1d1e22; +} + +.brdr-yayellow { + border: 2px solid #feda6a; +} + +.bg-compliment { + background-color: #384667; +} + +.fg-yellow { + color: #feda6a; +} diff --git a/static/css/open-sans-v18-latin-700.woff2 b/static/css/open-sans-v18-latin-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3a38286c672d781462fb22dc0b27393c8972ad13 GIT binary patch literal 15056 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

DrmI)kIo{*_s#lK(ecpK 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 G)iVGMQo=a^ literal 0 HcmV?d00001 diff --git a/static/css/open-sans-v18-latin-italic.woff2 b/static/css/open-sans-v18-latin-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..10031c02259c75aaa8e09662239eeb53ad385f9b GIT binary patch literal 13780 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 literal 0 HcmV?d00001 diff --git a/static/css/open-sans-v18-latin-regular.woff2 b/static/css/open-sans-v18-latin-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e9f58b775ec05aedecb58eaa34d0fd2a8d5d1aae GIT binary patch literal 14380 zcmV+{IMc^>Pew8T0RR9105~iF5dZ)H0BW2705{420RR9100000000000000000000 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

+
+ {% block main %} + {% endblock %} +
+ + + + diff --git a/templates/dashboard.html b/templates/dashboard.html new file mode 100644 index 0000000..e59021a --- /dev/null +++ b/templates/dashboard.html @@ -0,0 +1,63 @@ +{% extends "base.html" %} +{% block main %} +
+

Overview

+
+
+

Last 7 days

+ +
+
+ +
+ + +{% endblock %} + + diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..a7d2a5d --- /dev/null +++ b/templates/login.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + labertasche Dashboard + + +
+ +
+
+

Labertasche Login

+
+
+
+ + + + +
+
+
+
+ + + + +
+
+ +
+
+
+
+
+ + + diff --git a/templates/manage-comments.html b/templates/manage-comments.html new file mode 100644 index 0000000..7d0ae54 --- /dev/null +++ b/templates/manage-comments.html @@ -0,0 +1,78 @@ +{% extends "base.html" %} +{% block main %} +
+

Manage Comments

+
+
+
+
+ +
+
+
+
+
+ {% if spam_comments is defined %} + {% for comment in spam_comments %} + + {% endfor %} + {% endif %} +
+
+ +{% endblock %} diff --git a/templates/manage_mail_addresses.html b/templates/manage_mail_addresses.html new file mode 100644 index 0000000..16eaaf7 --- /dev/null +++ b/templates/manage_mail_addresses.html @@ -0,0 +1,63 @@ +{% extends "base.html" %} +{% block main %} +
+

Manage mail addresses

+
+
+ + + + +
+
+
+ + + + + + + + + + {% for each in addresses %} + + + + + + {% endfor %} + +
AddressStatus
{{each.email}} +

+ {% if each.is_blocked %} + + + + {% else %} + + + + {% endif %} +

+
+

+ + + +

+
+
+
+{% endblock %} diff --git a/templates/review-spam.html b/templates/review-spam.html new file mode 100644 index 0000000..a9230bd --- /dev/null +++ b/templates/review-spam.html @@ -0,0 +1,78 @@ +{% extends "base.html" %} +{% block main %} +
+

Review Spam

+
+
+
+
+ +
+
+
+
+
+ {% if spam_comments is defined %} + {% for comment in spam_comments %} + + {% endfor %} + {% endif %} +
+
+ +{% endblock %}