diff --git a/.gitignore b/.gitignore index f588feb5..d835b8cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -# IDE & System Related Files # .buildpath .project .settings @@ -20,4 +19,5 @@ sites/**/theme/node_modules sites/**/theme/css/*.map # Sites -sites/** \ No newline at end of file +sites/* +!sites/dashboard \ No newline at end of file diff --git a/README.md b/README.md index 674a52da..eca35288 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

Joomlatools Server

- Cloud Native development environment for Joomla + Cloud Native dev environment for Joomla

@@ -17,9 +17,9 @@ Welcome to the Joomlatools Server codebase, our home-grown **cloud native develo ### What is Joomlatools Server? -Joomlatools Server is Docker container that is specially tailored for developing websites with Joomla CMS and [Joomlatools Pages](https://github.com/joomlatools/joomlatools-pages) and is supported on macOS, Linux, and Windows (via WSL2). +Joomlatools Server is Docker container that is specially tailored for developing websites with Joomla CMS, Wordpress and [Joomlatools Pages](https://github.com/joomlatools/joomlatools-pages) and is supported on macOS, Linux, and Windows (via WSL2). -It offers support for both Joomla 3 and 4 and can be used as a local/remote development environment. You can run it locally using Docker Desktop, or remotely using Gitpod. +It offers support for both Joomla 3 a& 4, Wordpress 5 & 6 and Joomlatools Pages and can be used as a local/remote development environment. You can run it locally using Docker Desktop, or remotely using Gitpod. ## Getting started diff --git a/config/phpmyadmin/config.inc.php b/config/phpmyadmin/config.inc.php new file mode 100644 index 00000000..0ff86edb --- /dev/null +++ b/config/phpmyadmin/config.inc.php @@ -0,0 +1,28 @@ +. + */ + +declare(strict_types=1); + +// Logo link back to Dashboard +$cfg['NavigationLogoLink'] = 'http://localhost'; + +// Theme +$cfg['ThemeDefault'] = 'bootstrap'; + +// Theme selector on front page +$cfg['ThemeManager'] = false; + +// Disable recent tables button +$cfg['NumRecentTables'] = '0'; + +// Disable favourite tables button +$cfg['NumFavoriteTables'] = '0'; + +// Disable the server select box +$cfg['NavigationDisplayServers'] = false; \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 410ad6b6..e4f0d311 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,15 +32,32 @@ services: - .env labels: - "traefik.enable=true" + # Routers - - "traefik.http.routers.joomlatools-server-tunnel.rule=HostRegexp(`{name:(.*)}.trycloudflare.com`)" - - "traefik.http.routers.joomlatools-server-tunnel.entrypoints=web" + - "traefik.http.routers.dashboard-http.rule=Host(`localhost`)" + - "traefik.http.routers.dashboard-http.entrypoints=web" + - "traefik.http.routers.dashboard-http.service=dashboard" + + - "traefik.http.routers.dashboard-https.rule=Host(`localhost`)" + - "traefik.http.routers.dashboard-https.entrypoints=websecure" + - "traefik.http.routers.dashboard-https.service=dashboard" + - "traefik.http.routers.dashboard-https.tls=true" + - "traefik.http.routers.joomlatools-server-http.rule=HostRegexp(`{name:(.*)}.test`)" - "traefik.http.routers.joomlatools-server-http.entrypoints=web" + - "traefik.http.routers.joomlatools-server-http.service=joomlatools-server" + + - "traefik.http.routers.joomlatools-server-tunnel.rule=HostRegexp(`{name:(.*)}.trycloudflare.com`)" + - "traefik.http.routers.joomlatools-server-tunnel.entrypoints=web" + - "traefik.http.routers.joomlatools-server-tunnel.service=joomlatools-server" + - "traefik.http.routers.joomlatools-server-https.rule=HostRegexp(`{name:(.*)}.test`)" - "traefik.http.routers.joomlatools-server-https.entrypoints=websecure" + - "traefik.http.routers.joomlatools-server-https.service=joomlatools-server" - "traefik.http.routers.joomlatools-server-https.tls=true" + # Services + - "traefik.http.services.dashboard.loadbalancer.server.port=8008" - "traefik.http.services.joomlatools-server.loadbalancer.server.port=80" volumes: - ./sites/:/var/www/sites @@ -166,6 +183,10 @@ services: restart: unless-stopped depends_on: - joomlatools-server + volumes: + - type: bind + source: ./config/phpmyadmin/config.inc.php + target: /etc/phpmyadmin/config.user.inc.php environment: - PMA_HOST=joomlatools-server - PMA_VERBOSE=joomlatools-server diff --git a/sites/dashboard/config.php b/sites/dashboard/config.php new file mode 100644 index 00000000..8e199e66 --- /dev/null +++ b/sites/dashboard/config.php @@ -0,0 +1,17 @@ + include __DIR__.'/redirects.php', + + 'extension_config' => + [ + + ], + + + // Page + 'page' => [ + 'visible' => true, + ] +]; diff --git a/sites/dashboard/config/apache/server.conf b/sites/dashboard/config/apache/server.conf new file mode 100644 index 00000000..af4f07a8 --- /dev/null +++ b/sites/dashboard/config/apache/server.conf @@ -0,0 +1,10 @@ +Listen 8008 + + + + use vhost + use site + + DocumentRoot ${APP_ROOT}/sites/dashboard + + \ No newline at end of file diff --git a/sites/dashboard/data/sites.json b/sites/dashboard/data/sites.json new file mode 100644 index 00000000..b3aee163 --- /dev/null +++ b/sites/dashboard/data/sites.json @@ -0,0 +1,81 @@ +[ + { + "url": "#", + "img": "pages_thumbnail.png", + "name": "www.example.com", + "desc": "", + "platform_name": "Pages", + "platform_version": "0.24", + "platform_bg_color": "jtblue-200", + "platform_text_color": "jtblue-600" + }, + { + "url": "#", + "img": "pages_thumbnail.png", + "name": "pagestest", + "desc": "", + "platform_name": "Pages", + "platform_version": "0.23", + "platform_bg_color": "jtblue-200", + "platform_text_color": "jtblue-600" + }, + { + "url": "#", + "img": "j3_template_preview.png", + "name": "joomla3test", + "desc": "Joomla! - the dynamic portal engine and content management system", + "platform_name": "Joomla 3", + "platform_version": "3.10.99", + "platform_bg_color": "red-200", + "platform_text_color": "red-600" + }, + { + "url": "#", + "img": "j3_template_preview.png", + "name": "joomla3test2", + "desc": "Joomla! - the dynamic portal engine and content management system", + "platform_name": "Joomla 3", + "platform_version": "3.10.15", + "platform_bg_color": "red-200", + "platform_text_color": "red-600" + }, + { + "url": "#", + "img": "j4_template_preview.png", + "name": "joomla4test", + "platform_name": "Joomla 4", + "desc": "Joomla! - the dynamic portal engine and content management system", + "platform_bg_color": "green-200", + "platform_text_color": "green-600" + }, + { + "url": "#", + "img": "j4_template_preview.png", + "name": "joomla4test2", + "platform_name": "Joomla 4", + "desc": "Joomla! - the dynamic portal engine and content management system", + "platform_version": "4.0.15", + "platform_bg_color": "green-200", + "platform_text_color": "green-600" + }, + { + "url": "#", + "img": "wp_screenshot.png", + "name": "wptest", + "desc": "wordpress – Just another WordPress site", + "platform_name": "WordPress 5", + "platform_version": "5.93", + "platform_bg_color": "yellow-200", + "platform_text_color": "yellow-600" + }, + { + "url": "#", + "img": "wp_screenshot.png", + "name": "wptest2", + "desc": "wordpress – Just another WordPress site", + "platform_name": "WordPress 6", + "platform_version": "6.01", + "platform_bg_color": "purple-200", + "platform_text_color": "purple-600" + } +] \ No newline at end of file diff --git a/sites/dashboard/images/.gitkeep b/sites/dashboard/images/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/sites/dashboard/images/.gitkeep @@ -0,0 +1 @@ + diff --git a/sites/dashboard/images/app-logos/PHP-OPcache.jpg b/sites/dashboard/images/app-logos/PHP-OPcache.jpg new file mode 100644 index 00000000..33091e1f Binary files /dev/null and b/sites/dashboard/images/app-logos/PHP-OPcache.jpg differ diff --git a/sites/dashboard/images/app-logos/PhpMyAdmin_logo.jpg b/sites/dashboard/images/app-logos/PhpMyAdmin_logo.jpg new file mode 100644 index 00000000..1a411d72 Binary files /dev/null and b/sites/dashboard/images/app-logos/PhpMyAdmin_logo.jpg differ diff --git a/sites/dashboard/images/app-logos/Xdebug_Logo.jpg b/sites/dashboard/images/app-logos/Xdebug_Logo.jpg new file mode 100644 index 00000000..14cd0113 Binary files /dev/null and b/sites/dashboard/images/app-logos/Xdebug_Logo.jpg differ diff --git a/sites/dashboard/images/app-logos/dozzle.jpg b/sites/dashboard/images/app-logos/dozzle.jpg new file mode 100644 index 00000000..244e406e Binary files /dev/null and b/sites/dashboard/images/app-logos/dozzle.jpg differ diff --git a/sites/dashboard/images/app-logos/mailhog.jpg b/sites/dashboard/images/app-logos/mailhog.jpg new file mode 100644 index 00000000..daf6b71c Binary files /dev/null and b/sites/dashboard/images/app-logos/mailhog.jpg differ diff --git a/sites/dashboard/images/app-logos/php-apc.jpg b/sites/dashboard/images/app-logos/php-apc.jpg new file mode 100644 index 00000000..7595b448 Binary files /dev/null and b/sites/dashboard/images/app-logos/php-apc.jpg differ diff --git a/sites/dashboard/images/app-logos/php-fpm.jpg b/sites/dashboard/images/app-logos/php-fpm.jpg new file mode 100644 index 00000000..fbc8a17e Binary files /dev/null and b/sites/dashboard/images/app-logos/php-fpm.jpg differ diff --git a/sites/dashboard/images/app-logos/php-info.jpg b/sites/dashboard/images/app-logos/php-info.jpg new file mode 100644 index 00000000..3ad92a0f Binary files /dev/null and b/sites/dashboard/images/app-logos/php-info.jpg differ diff --git a/sites/dashboard/images/app-logos/traefik-proxy-logo.jpg b/sites/dashboard/images/app-logos/traefik-proxy-logo.jpg new file mode 100644 index 00000000..e72c6dda Binary files /dev/null and b/sites/dashboard/images/app-logos/traefik-proxy-logo.jpg differ diff --git a/sites/dashboard/images/j3_template_preview.png b/sites/dashboard/images/j3_template_preview.png new file mode 100644 index 00000000..1594d9dc Binary files /dev/null and b/sites/dashboard/images/j3_template_preview.png differ diff --git a/sites/dashboard/images/j3_template_thumbnail.png b/sites/dashboard/images/j3_template_thumbnail.png new file mode 100644 index 00000000..90156a52 Binary files /dev/null and b/sites/dashboard/images/j3_template_thumbnail.png differ diff --git a/sites/dashboard/images/j4_template_preview.png b/sites/dashboard/images/j4_template_preview.png new file mode 100644 index 00000000..a83ca412 Binary files /dev/null and b/sites/dashboard/images/j4_template_preview.png differ diff --git a/sites/dashboard/images/j4_template_thumbnail.png b/sites/dashboard/images/j4_template_thumbnail.png new file mode 100644 index 00000000..e237919e Binary files /dev/null and b/sites/dashboard/images/j4_template_thumbnail.png differ diff --git a/sites/dashboard/images/joomlatools_logo_black.png b/sites/dashboard/images/joomlatools_logo_black.png new file mode 100644 index 00000000..c201077c Binary files /dev/null and b/sites/dashboard/images/joomlatools_logo_black.png differ diff --git a/sites/dashboard/images/pages_thumbnail.png b/sites/dashboard/images/pages_thumbnail.png new file mode 100644 index 00000000..f9e1f78c Binary files /dev/null and b/sites/dashboard/images/pages_thumbnail.png differ diff --git a/sites/dashboard/images/wp_screenshot.png b/sites/dashboard/images/wp_screenshot.png new file mode 100644 index 00000000..9e8710cd Binary files /dev/null and b/sites/dashboard/images/wp_screenshot.png differ diff --git a/sites/dashboard/index.php b/sites/dashboard/index.php new file mode 100755 index 00000000..2b0f50f4 --- /dev/null +++ b/sites/dashboard/index.php @@ -0,0 +1,6 @@ + +

+

Sites running on this server

+ +
+ + +
+
+
Site
+
Platform
+
Actions
+
+
+ +
+ + + +
platform_name ?>
+ +
+ +
+
+ + + + + View site +
+
+ + + + Edit site +
+
+ + + + Delete site +
+
+ + + + Download remote site +
+
+ + + + + Deploy to fly.io +
+
+ +
+
+ +
+ diff --git a/sites/dashboard/pages/php/.order.yaml b/sites/dashboard/pages/php/.order.yaml new file mode 100644 index 00000000..22c875a4 --- /dev/null +++ b/sites/dashboard/pages/php/.order.yaml @@ -0,0 +1,6 @@ +- index.html.php +- php-xdebug.html.php +- php-apc.html.php +- php-fpm.html.php +- php-opcache.html.php +- php-info.html.php diff --git a/sites/dashboard/pages/php/index.html.php b/sites/dashboard/pages/php/index.html.php new file mode 100644 index 00000000..21b62dc7 --- /dev/null +++ b/sites/dashboard/pages/php/index.html.php @@ -0,0 +1,124 @@ +--- +@layout: + path: /default + + +name: PHP +title: Joomlatools Server PHP Information and Tools +--- + +
+
+

PHP tools and information

+
+
+ +
+ + + +
\ No newline at end of file diff --git a/sites/dashboard/pages/php/php-apc.html.php b/sites/dashboard/pages/php/php-apc.html.php new file mode 100644 index 00000000..28f3a80d --- /dev/null +++ b/sites/dashboard/pages/php/php-apc.html.php @@ -0,0 +1,13 @@ +--- +@layout: + path: /default + +name: Cache +title: Joomlatools Server APC +summary: PHP-APC for Joomlatools Server +visible: true +--- + +
+ +
\ No newline at end of file diff --git a/sites/dashboard/pages/php/php-fpm.html.php b/sites/dashboard/pages/php/php-fpm.html.php new file mode 100644 index 00000000..2e0be5b1 --- /dev/null +++ b/sites/dashboard/pages/php/php-fpm.html.php @@ -0,0 +1,13 @@ +--- +@layout: + path: /default + +name: FastCGI +title: Joomlatools Server FPM +summary: PHP-FPM for Joomlatools Server +visible: true +--- + +
+ +
\ No newline at end of file diff --git a/sites/dashboard/pages/php/php-info.html.php b/sites/dashboard/pages/php/php-info.html.php new file mode 100644 index 00000000..6ce88a19 --- /dev/null +++ b/sites/dashboard/pages/php/php-info.html.php @@ -0,0 +1,15 @@ +--- +@layout: + path: /default + pageclass: embedded + + +name: Information +title: Joomlatools Server PHP Info +summary: PHP-PHP Info for Joomlatools Server +visible: true +--- + +
+ +
\ No newline at end of file diff --git a/sites/dashboard/pages/php/php-opcache.html.php b/sites/dashboard/pages/php/php-opcache.html.php new file mode 100644 index 00000000..cd07064a --- /dev/null +++ b/sites/dashboard/pages/php/php-opcache.html.php @@ -0,0 +1,14 @@ +--- +@layout: + path: /default + + +name: Performance +title: Joomlatools Server Opcache +summary: PHP-Opcache for Joomlatools Server +visible: true +--- + +
+ +
\ No newline at end of file diff --git a/sites/dashboard/pages/php/php-xdebug.html.php b/sites/dashboard/pages/php/php-xdebug.html.php new file mode 100644 index 00000000..05833b11 --- /dev/null +++ b/sites/dashboard/pages/php/php-xdebug.html.php @@ -0,0 +1,32 @@ +--- +@layout: + path: /default + pageclass: embedded + + +name: Debugging and profiling +title: Joomlatools Server Xdebug +summary: PHP-Xdebug for Joomlatools Server +visible: true +--- +
+ + + + + + + + + + + +
\ No newline at end of file diff --git a/sites/dashboard/pages/phpmyadmin.html.php b/sites/dashboard/pages/phpmyadmin.html.php new file mode 100644 index 00000000..37bbbf09 --- /dev/null +++ b/sites/dashboard/pages/phpmyadmin.html.php @@ -0,0 +1,11 @@ +--- +@layout: + path: /default + +redirect: http://phpmyadmin.localhost + +name: Databases +title: Joomlatools Server PhpMyAdmin +summary: PhpMyAdmin for managing Joomlatools Server +visible: true +--- \ No newline at end of file diff --git a/sites/dashboard/pages/system/.order.yaml b/sites/dashboard/pages/system/.order.yaml new file mode 100644 index 00000000..79c75168 --- /dev/null +++ b/sites/dashboard/pages/system/.order.yaml @@ -0,0 +1,3 @@ +- index.html.php +- dozzle.html.php +- traefik.html.php diff --git a/sites/dashboard/pages/system/dozzle.html.php b/sites/dashboard/pages/system/dozzle.html.php new file mode 100644 index 00000000..3f69a044 --- /dev/null +++ b/sites/dashboard/pages/system/dozzle.html.php @@ -0,0 +1,13 @@ +--- +@layout: + path: /default + +name: Logs +title: Joomlatools Server Dozzle +summary: Dozzle for Joomlatools Server +visible: true +--- + +
+ +
\ No newline at end of file diff --git a/sites/dashboard/pages/system/index.html.php b/sites/dashboard/pages/system/index.html.php new file mode 100644 index 00000000..8b80136d --- /dev/null +++ b/sites/dashboard/pages/system/index.html.php @@ -0,0 +1,57 @@ +--- +@layout: + path: /default + + +name: System +title: Joomlatools Server System Information +--- + +
+
+

System information tools

+ +
+
+ +
+ + + +
\ No newline at end of file diff --git a/sites/dashboard/pages/system/traefik.html.php b/sites/dashboard/pages/system/traefik.html.php new file mode 100644 index 00000000..4b11fe13 --- /dev/null +++ b/sites/dashboard/pages/system/traefik.html.php @@ -0,0 +1,13 @@ +--- +@layout: + path: /default + +name: Proxy +title: Joomlatools Server Traefik +summary: Traefik for Joomlatools Server +visible: true +--- + +
+ +
\ No newline at end of file diff --git a/sites/dashboard/pages/tools/.order.yaml b/sites/dashboard/pages/tools/.order.yaml new file mode 100644 index 00000000..7bf4852d --- /dev/null +++ b/sites/dashboard/pages/tools/.order.yaml @@ -0,0 +1,2 @@ +- index.html.php +- mailhog.html.php diff --git a/sites/dashboard/pages/tools/index.html.php b/sites/dashboard/pages/tools/index.html.php new file mode 100644 index 00000000..e98702e8 --- /dev/null +++ b/sites/dashboard/pages/tools/index.html.php @@ -0,0 +1,40 @@ +--- +@layout: + path: /default + + +name: Tools +title: Joomlatools Server Tools +--- + +
+
+

Server tools

+ +
+
+ +
+ + + +
\ No newline at end of file diff --git a/sites/dashboard/pages/tools/mailhog.html.php b/sites/dashboard/pages/tools/mailhog.html.php new file mode 100644 index 00000000..3b8d79d9 --- /dev/null +++ b/sites/dashboard/pages/tools/mailhog.html.php @@ -0,0 +1,13 @@ +--- +@layout: + path: /default + +name: Email testing +title: Joomlatools Server Mailhog +summary: Mailhog for managing Joomlatools Server +visible: true +--- + +
+ +
\ No newline at end of file diff --git a/sites/dashboard/redirects.php b/sites/dashboard/redirects.php new file mode 100644 index 00000000..56615dd3 --- /dev/null +++ b/sites/dashboard/redirects.php @@ -0,0 +1,4 @@ + '/[:path]?', +]; diff --git a/sites/dashboard/templates/layouts/default.html.php b/sites/dashboard/templates/layouts/default.html.php new file mode 100644 index 00000000..d3d84b02 --- /dev/null +++ b/sites/dashboard/templates/layouts/default.html.php @@ -0,0 +1,63 @@ +--- +@layout: /index +@process: + prefetch: .navigation +--- + +
+ + + + + + +
+ + +
+

+ 1, + 'display_time' => 0, + 'icon_size' => '6', + 'icon_colour' => 'white', + 'direction' => 'h', + ]); + ?> +

+ +
+ + + + + + +
+
\ No newline at end of file diff --git a/sites/dashboard/templates/layouts/index.html.php b/sites/dashboard/templates/layouts/index.html.php new file mode 100644 index 00000000..c516165f --- /dev/null +++ b/sites/dashboard/templates/layouts/index.html.php @@ -0,0 +1,18 @@ +--- +@layout: template://pages/document.html +--- + + + + + + + + + + + + + \ No newline at end of file diff --git a/sites/dashboard/templates/partials/javascript/calc_height.html.php b/sites/dashboard/templates/partials/javascript/calc_height.html.php new file mode 100644 index 00000000..ea7ec18e --- /dev/null +++ b/sites/dashboard/templates/partials/javascript/calc_height.html.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/sites/dashboard/templates/partials/logos/joomlatools.html.php b/sites/dashboard/templates/partials/logos/joomlatools.html.php new file mode 100644 index 00000000..bc27e63f --- /dev/null +++ b/sites/dashboard/templates/partials/logos/joomlatools.html.php @@ -0,0 +1,48 @@ +--- +icon_size: 10 +icon_colour: +jt_black: var(--jt-black) +jt_blue: var(--jt-blue) +text_colour: +direction: +--- + + + + + + + + + + + joomlatools server + + + +Loaded in s + + \ No newline at end of file diff --git a/sites/dashboard/templates/partials/navigation/mainmenu.html.php b/sites/dashboard/templates/partials/navigation/mainmenu.html.php new file mode 100644 index 00000000..d4591a66 --- /dev/null +++ b/sites/dashboard/templates/partials/navigation/mainmenu.html.php @@ -0,0 +1,71 @@ + $path ?? '/', 'level' => 3, 'recurse' => 'true', 'filter' => ['visible' => 'neq:false']]) ?> + \ No newline at end of file diff --git a/sites/dashboard/theme/css/fonts.css b/sites/dashboard/theme/css/fonts.css new file mode 100644 index 00000000..55abc516 --- /dev/null +++ b/sites/dashboard/theme/css/fonts.css @@ -0,0 +1,30 @@ +/** + * @license + * MyFonts Webfont Build ID 3961211, 2020-10-15T18:13:17-0400 + * + * The fonts listed in this notice are subject to the End User License + * Agreement(s) entered into by the website owner. All other parties are + * explicitly restricted from using the Licensed Webfonts(s). + * + * You may obtain a valid license at the URLs below. + * + * Webfont: VAGRoundedTL-Regular by Tilde + * URL: https://www.myfonts.com/fonts/tilde/vag-rounded/regular/ + * Copyright: Copyright 1990-2007 Bitstream Inc. All rights reserved. Modification for European languages. Copyright 1995-2007 Tilde, SIA. + * + * + * + * © 2020 MyFonts Inc +*/ + + +/* @import must be at top of file, otherwise CSS will not work */ +@import url("//hello.myfonts.net/count/3c717b"); + +@font-face { + font-family: 'VAGRoundedTL-Regular'; + font-display: swap; + src: local(''), + url('../fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff2') format('woff2'), + url('../fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff') format('woff'); +} diff --git a/sites/dashboard/theme/css/input.css b/sites/dashboard/theme/css/input.css new file mode 100644 index 00000000..0453ef6f --- /dev/null +++ b/sites/dashboard/theme/css/input.css @@ -0,0 +1,213 @@ +/* tailwind */ +@tailwind base; +@tailwind components; +@tailwind utilities; + +/* custom */ +@layer base { + + :root { + /* Joomlatools logo colour override used /partials/logo/joomaltools.html.php */ + --jt-blue:#00adef; + --jt-black:#000000; + } + /* add tailwind classes to pagination select list so it's pretty */ + select.k-form-control { + @apply block appearance-none w-full bg-white border border-gray-100 hover:border-gray-200 px-4 py-2 pr-8 rounded shadow leading-tight focus:outline-none; + } + /* Pagination */ + .k-pagination__pages { + padding-top: 8px; + margin: 0; + padding: 0; + list-style: none; + border: none; + background: transparent; + display: flex; + justify-content: center; + } + @media screen and (min-width: 560px) { + .k-pagination__pages { + padding-top: 12px; + } + } + @media screen and (min-width: 1024px) { + .k-pagination__pages { + padding-top: 16px; + } + } + .k-pagination__pages li { + margin: 0 4px; + } + .k-pagination__pages li a, .k-pagination__pages li span { + display: block; + min-width: 40px; + min-height: 40px; + text-align: center; + } + .k-pagination__pages li a { + position: relative; + overflow: hidden; + text-decoration: none; + border-radius: 50%; + background: #f1f1f1; + color: #333; + line-height: 40px; + transition: background 200ms cubic-bezier(0.195, 0.4, 0.45, 0.785) 0ms; + } + .k-pagination__pages li a:after { + content: ""; + background: rgba(255, 255, 255, 0.3); + display: block; + position: absolute; + border-radius: 50%; + padding-top: 240%; + padding-left: 240%; + margin-top: -120%; + margin-left: -120%; + opacity: 0; + transition: all 1s; + } + .k-pagination__pages li a:active:after { + padding-top: 0; + padding-left: 0; + margin-top: 0; + margin-left: 0; + opacity: 1; + transition: 0s; + } + .k-pagination__pages li a[href]:hover, .k-pagination__pages li a[href]:focus { + background: #ddd; + } + .k-pagination__pages li span { + line-height: 40px; + } + .k-pagination__pages li span.active { + line-height: 40px; + background: #0089d6; + color: white; + border-radius: 50%; + } + .k-pagination__pages [aria-label="Next page"], + .k-pagination__pages [aria-label="Previous page"] { + position: relative; + } + .k-pagination__pages [aria-label="Next page"]:before, + .k-pagination__pages [aria-label="Previous page"]:before { + content: " "; + background: url("../assets/icons/custom/arrow.svg") 0px 5px no-repeat; + background-size: contain; + display: inline-block; + height: 24px; + width: 24px; + transform: scale(0.85); + opacity: 0.2; + transition: all 0.3s ease; + } + .k-pagination__pages [aria-label="Next page"]:hover:before, + .k-pagination__pages [aria-label="Previous page"]:hover:before { + transform: scale(1); + opacity: 0.8; + } + .k-pagination__pages [aria-label="Next page"] span, + .k-pagination__pages [aria-label="Previous page"] span { + display: none; + } + .k-pagination__pages [aria-label="Previous page"] { + position: relative; + } + .k-pagination__pages [aria-label="Previous page"]:before { + background-position: 0 -5px; + transform: scale(0.85) rotate(180deg); + } + .k-pagination__pages [aria-label="Previous page"]:hover:before { + transform: scale(1) rotate(180deg); + } + + /* smooth scroll */ + html { + background: white; + scroll-behavior: smooth; + } + @media screen and (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + } + /* tooltips */ + .tooltip { + @apply invisible absolute; + } + + .has-tooltip:hover .tooltip { + @apply visible whitespace-nowrap z-50; + } + + .embedded a:link, + .embedded a:hover, + .embedded a:visited { + background-color: inherit; + color: inherit; + text-decoration: inherit; + } + .embedded a.is-active { + @apply text-gray-100; + } + + /* 'md': '768px' */ + @media (min-width: 768px) { + #sites { + grid-template-columns: 20% 20% 20% 40%; + grid-template-areas: "a b b b" + "a c c c" + "a d d ." + "a e e f" + } + } + + /* 'lg': '1024px' */ + @media (min-width: 1024px) { + #sites { + grid-template-columns: 30% 30% 40%; + grid-template-areas: "a a a" + "b b b" + "c c c" + "d d ." + "e e f" + } + } + + #sites > div:nth-child(1) { + grid-area: a; + } + + #sites > div:nth-child(2) { + grid-area: b; + } + + #sites > div:nth-child(3) { + grid-area: c; + } + + #sites > div:nth-child(4) { + /*background-color: red;*/ + grid-area: d; + } + + #sites > div:nth-child(5) { + grid-area: e; + } + + #sites > div:nth-child(6) { + grid-area: f; + } + +} + +@layer components { + +} + +@layer utilities { + +} \ No newline at end of file diff --git a/sites/dashboard/theme/css/output.css b/sites/dashboard/theme/css/output.css new file mode 100644 index 00000000..3f6e934c --- /dev/null +++ b/sites/dashboard/theme/css/output.css @@ -0,0 +1,1602 @@ +/* tailwind */ + +/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */ + +/* +Document +======== +*/ + +/** +Use a better box model (opinionated). +*/ + +*, +*::before, +*::after { + box-sizing: border-box; +} + +/** +Use a more readable tab size (opinionated). +*/ + +:root { + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; +} + +/** +1. Correct the line height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +*/ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* +Sections +======== +*/ + +/** +Remove the margin in all browsers. +*/ + +body { + margin: 0; +} + +/** +Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3) +*/ + +body { + font-family: + system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, + 'Segoe UI', + Roboto, + Helvetica, + Arial, + sans-serif, + 'Apple Color Emoji', + 'Segoe UI Emoji'; +} + +/* +Grouping content +================ +*/ + +/** +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +*/ + +hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ +} + +/* +Text-level semantics +==================== +*/ + +/** +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/** +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/** +1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3) +2. Correct the odd 'em' font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: + ui-monospace, + SFMono-Regular, + Consolas, + 'Liberation Mono', + Menlo, + monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/** +Prevent 'sub' and 'sup' elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +Tabular data +============ +*/ + +/** +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +*/ + +table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ +} + +/* +Forms +===== +*/ + +/** +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** +Remove the inheritance of text transform in Edge and Firefox. +1. Remove the inheritance of text transform in Firefox. +*/ + +button, +select { /* 1 */ + text-transform: none; +} + +/** +Correct the inability to style clickable types in iOS and Safari. +*/ + +button, +[type='button'] { + -webkit-appearance: button; +} + +/** +Remove the inner border and padding in Firefox. +*/ + +/** +Restore the focus styles unset by the previous rule. +*/ + +/** +Remove the additional ':invalid' styles in Firefox. +See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737 +*/ + +/** +Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers. +*/ + +legend { + padding: 0; +} + +/** +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/** +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +/** +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +/** +Remove the inner padding in Chrome and Safari on macOS. +*/ + +/** +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to 'inherit' in Safari. +*/ + +/* +Interactive +=========== +*/ + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/** + * Manually forked from SUIT CSS Base: https://github.com/suitcss/base + * A thin layer on top of normalize.css that provides a starting point more + * suitable for web applications. + */ + +/** + * Removes the default spacing and border for appropriate elements. + */ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +button { + background-color: transparent; + background-image: none; +} + +/** + * Work around a Firefox/IE bug where the transparent `button` background + * results in a loss of the default `button` focus styles. + */ + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +fieldset { + margin: 0; + padding: 0; +} + +ol, +ul { + list-style: none; + margin: 0; + padding: 0; +} + +/** + * Tailwind custom reset styles + */ + +/** + * 1. Use the user's configured `sans` font-family (with Tailwind's default + * sans-serif font stack as a fallback) as a sane default. + * 2. Use Tailwind's default "normal" line-height so the user isn't forced + * to override it to ensure consistency even when using the default theme. + */ + +html { + font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 1 */ + line-height: 1.5; /* 2 */ +} + +/** + * Inherit font-family and line-height from `html` so users can set them as + * a class directly on the `html` element. + */ + +body { + font-family: inherit; + line-height: inherit; +} + +/** + * 1. Prevent padding and border from affecting element width. + * + * We used to set this in the html element and inherit from + * the parent element for everything else. This caused issues + * in shadow-dom-enhanced elements like
where the content + * is wrapped by a div with box-sizing set to `content-box`. + * + * https://github.com/mozdevs/cssremedy/issues/4 + * + * + * 2. Allow adding a border to an element by just adding a border-width. + * + * By default, the way the browser specifies that an element should have no + * border is by setting it's border-style to `none` in the user-agent + * stylesheet. + * + * In order to easily add borders to elements by just setting the `border-width` + * property, we change the default border-style for all elements to `solid`, and + * use border-width to hide them instead. This way our `border` utilities only + * need to set the `border-width` property instead of the entire `border` + * shorthand, making our border utilities much more straightforward to compose. + * + * https://github.com/tailwindcss/tailwindcss/pull/116 + */ + +*, +::before, +::after { + box-sizing: border-box; /* 1 */ + border-width: 0; /* 2 */ + border-style: solid; /* 2 */ + border-color: #e5e7eb; /* 2 */ +} + +/* + * Ensure horizontal rules are visible by default + */ + +hr { + border-top-width: 1px; +} + +/** + * Undo the `border-style: none` reset that Normalize applies to images so that + * our `border-{width}` utilities have the expected effect. + * + * The Normalize reset is unnecessary for us since we default the border-width + * to 0 on all elements. + * + * https://github.com/tailwindcss/tailwindcss/issues/362 + */ + +img { + border-style: solid; +} + +textarea { + resize: vertical; +} + +input::-moz-placeholder, textarea::-moz-placeholder { + color: #9ca3af; +} + +input:-ms-input-placeholder, textarea:-ms-input-placeholder { + color: #9ca3af; +} + +input::placeholder, +textarea::placeholder { + color: #9ca3af; +} + +button, +[role="button"] { + cursor: pointer; +} + +table { + border-collapse: collapse; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/** + * Reset links to optimize for opt-in styling instead of + * opt-out. + */ + +a { + color: inherit; + text-decoration: inherit; +} + +/** + * Reset form element properties that are easy to forget to + * style explicitly so you don't inadvertently introduce + * styles that deviate from your design system. These styles + * supplement a partial reset that is already applied by + * normalize.css. + */ + +button, +input, +optgroup, +select, +textarea { + padding: 0; + line-height: inherit; + color: inherit; +} + +/** + * Use the configured 'mono' font family for elements that + * are expected to be rendered with a monospace font, falling + * back to the system monospace stack if there is no configured + * 'mono' font family. + */ + +pre, +code, +kbd, +samp { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +/** + * Make replaced elements `display: block` by default as that's + * the behavior you want almost all of the time. Inspired by + * CSS Remedy, with `svg` added as well. + * + * https://github.com/mozdevs/cssremedy/issues/14 + */ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; + vertical-align: middle; +} + +/** + * Constrain images and videos to the parent width and preserve + * their instrinsic aspect ratio. + * + * https://github.com/mozdevs/cssremedy/issues/14 + */ + +img, +video { + max-width: 100%; + height: auto; +} + +:root { + /* Joomlatools logo colour override used /partials/logo/joomaltools.html.php */ + --jt-blue:#00adef; + --jt-black:#000000; +} + +/* add tailwind classes to pagination select list so it's pretty */ + +/* Pagination */ + +/* smooth scroll */ + +html { + background: white; + scroll-behavior: smooth; +} + +@media screen and (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } +} + +/* tooltips */ + +.tooltip { + position: absolute; + visibility: hidden; +} + +.has-tooltip:hover .tooltip { + visibility: visible; + white-space: nowrap; + z-index: 50; +} + +.embedded a:link, + .embedded a:hover, + .embedded a:visited { + background-color: inherit; + color: inherit; + text-decoration: inherit; +} + +.embedded a.is-active { + --tw-text-opacity: 1; + color: rgba(243, 244, 246, var(--tw-text-opacity)); +} + +/* 'md': '768px' */ + +@media (min-width: 768px) { + #sites { + grid-template-columns: 20% 20% 20% 40%; + grid-template-areas: "a b b b" + "a c c c" + "a d d ." + "a e e f" + } +} + +/* 'lg': '1024px' */ + +@media (min-width: 1024px) { + #sites { + grid-template-columns: 30% 30% 40%; + grid-template-areas: "a a a" + "b b b" + "c c c" + "d d ." + "e e f" + } +} + +#sites > div:nth-child(1) { + grid-area: a; +} + +#sites > div:nth-child(2) { + grid-area: b; +} + +#sites > div:nth-child(3) { + grid-area: c; +} + +#sites > div:nth-child(4) { + /*background-color: red;*/ + grid-area: d; +} + +#sites > div:nth-child(5) { + grid-area: e; +} + +#sites > div:nth-child(6) { + grid-area: f; +} + +.container { + width: 100%; +} + +@media (min-width: 640px) { + .container { + max-width: 640px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 768px; + } +} + +@media (min-width: 1024px) { + .container { + max-width: 1024px; + } +} + +@media (min-width: 1280px) { + .container { + max-width: 1280px; + } +} + +@media (min-width: 1536px) { + .container { + max-width: 1536px; + } +} + +.space-y-1 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); +} + +.space-x-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1rem * var(--tw-space-x-reverse)); + margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); +} + +.bg-white { + --tw-bg-opacity: 1; + background-color: rgba(255, 255, 255, var(--tw-bg-opacity)); +} + +.bg-gray-100 { + --tw-bg-opacity: 1; + background-color: rgba(243, 244, 246, var(--tw-bg-opacity)); +} + +.bg-gray-200 { + --tw-bg-opacity: 1; + background-color: rgba(229, 231, 235, var(--tw-bg-opacity)); +} + +.bg-gray-800 { + --tw-bg-opacity: 1; + background-color: rgba(31, 41, 55, var(--tw-bg-opacity)); +} + +.bg-red-100 { + --tw-bg-opacity: 1; + background-color: rgba(254, 226, 226, var(--tw-bg-opacity)); +} + +.bg-red-200 { + --tw-bg-opacity: 1; + background-color: rgba(254, 202, 202, var(--tw-bg-opacity)); +} + +.bg-yellow-200 { + --tw-bg-opacity: 1; + background-color: rgba(253, 230, 138, var(--tw-bg-opacity)); +} + +.bg-green-200 { + --tw-bg-opacity: 1; + background-color: rgba(167, 243, 208, var(--tw-bg-opacity)); +} + +.bg-purple-200 { + --tw-bg-opacity: 1; + background-color: rgba(221, 214, 254, var(--tw-bg-opacity)); +} + +.bg-jtblue-200 { + --tw-bg-opacity: 1; + background-color: rgba(177, 238, 246, var(--tw-bg-opacity)); +} + +.bg-jtblue-600 { + --tw-bg-opacity: 1; + background-color: rgba(15, 123, 213, var(--tw-bg-opacity)); +} + +.hover\:bg-gray-100:hover { + --tw-bg-opacity: 1; + background-color: rgba(243, 244, 246, var(--tw-bg-opacity)); +} + +.hover\:bg-gray-800:hover { + --tw-bg-opacity: 1; + background-color: rgba(31, 41, 55, var(--tw-bg-opacity)); +} + +.hover\:bg-jtblue-700:hover { + --tw-bg-opacity: 1; + background-color: rgba(19, 98, 176, var(--tw-bg-opacity)); +} + +.focus\:bg-jtblue-700:focus { + --tw-bg-opacity: 1; + background-color: rgba(19, 98, 176, var(--tw-bg-opacity)); +} + +.bg-gradient-to-tr { + background-image: linear-gradient(to top right, var(--tw-gradient-stops)); +} + +.bg-gradient-to-b { + background-image: linear-gradient(to bottom, var(--tw-gradient-stops)); +} + +.from-indigo-700 { + --tw-gradient-from: #4338ca; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgba(67, 56, 202, 0)); +} + +.via-indigo-800 { + --tw-gradient-stops: var(--tw-gradient-from), #3730a3, var(--tw-gradient-to, rgba(55, 48, 163, 0)); +} + +.to-indigo-900 { + --tw-gradient-to: #312e81; +} + +.border-gray-200 { + --tw-border-opacity: 1; + border-color: rgba(229, 231, 235, var(--tw-border-opacity)); +} + +.border-gray-300 { + --tw-border-opacity: 1; + border-color: rgba(209, 213, 219, var(--tw-border-opacity)); +} + +.rounded { + border-radius: 0.25rem; +} + +.rounded-lg { + border-radius: 0.5rem; +} + +.rounded-full { + border-radius: 9999px; +} + +.border { + border-width: 1px; +} + +.border-b { + border-bottom-width: 1px; +} + +.cursor-pointer { + cursor: pointer; +} + +.block { + display: block; +} + +.inline { + display: inline; +} + +.flex { + display: flex; +} + +.inline-flex { + display: inline-flex; +} + +.table { + display: table; +} + +.grid { + display: grid; +} + +.hidden { + display: none; +} + +.flex-row { + flex-direction: row; +} + +.flex-col { + flex-direction: column; +} + +.place-items-center { + align-items: center; + justify-items: center; + place-items: center; +} + +.place-self-center { + align-self: center; + justify-self: center; + place-self: center; +} + +.items-center { + align-items: center; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.flex-1 { + flex: 1 1 0%; +} + +.font-jt { + font-family: VAGRoundedTL-Regular, "Arial Rounded", sans-serif; +} + +.font-medium { + font-weight: 500; +} + +.font-semibold { + font-weight: 600; +} + +.font-bold { + font-weight: 700; +} + +.h-4 { + height: 1rem; +} + +.h-5 { + height: 1.25rem; +} + +.h-6 { + height: 1.5rem; +} + +.h-20 { + height: 5rem; +} + +.h-40 { + height: 10rem; +} + +.h-full { + height: 100%; +} + +.h-screen { + height: 100vh; +} + +.text-xs { + font-size: 0.75rem; + line-height: 1rem; +} + +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} + +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.text-2xl { + font-size: 1.5rem; + line-height: 2rem; +} + +.leading-tight { + line-height: 1.25; +} + +.leading-normal { + line-height: 1.5; +} + +.my-8 { + margin-top: 2rem; + margin-bottom: 2rem; +} + +.mx-auto { + margin-left: auto; + margin-right: auto; +} + +.mt-2 { + margin-top: 0.5rem; +} + +.mr-2 { + margin-right: 0.5rem; +} + +.mt-3 { + margin-top: 0.75rem; +} + +.mr-3 { + margin-right: 0.75rem; +} + +.mt-4 { + margin-top: 1rem; +} + +.mb-4 { + margin-bottom: 1rem; +} + +.mb-8 { + margin-bottom: 2rem; +} + +.-ml-8 { + margin-left: -2rem; +} + +.-mt-12 { + margin-top: -3rem; +} + +.-ml-24 { + margin-left: -6rem; +} + +.-ml-28 { + margin-left: -7rem; +} + +.max-h-screen { + max-height: 100vh; +} + +.max-w-7xl { + max-width: 80rem; +} + +.min-h-screen { + min-height: 100vh; +} + +.object-cover { + -o-object-fit: cover; + object-fit: cover; +} + +.object-top { + -o-object-position: top; + object-position: top; +} + +.focus\:outline-none:focus { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.overflow-hidden { + overflow: hidden; +} + +.overflow-x-hidden { + overflow-x: hidden; +} + +.overflow-x-scroll { + overflow-x: scroll; +} + +.overflow-y-scroll { + overflow-y: scroll; +} + +.p-1 { + padding: 0.25rem; +} + +.p-2 { + padding: 0.5rem; +} + +.p-4 { + padding: 1rem; +} + +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} + +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +} + +.py-3 { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.px-3 { + padding-left: 0.75rem; + padding-right: 0.75rem; +} + +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} + +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + +.py-5 { + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} + +.px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; +} + +.px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; +} + +.py-2\.5 { + padding-top: 0.625rem; + padding-bottom: 0.625rem; +} + +.pl-0 { + padding-left: 0px; +} + +.pt-2 { + padding-top: 0.5rem; +} + +.pr-2 { + padding-right: 0.5rem; +} + +.pb-6 { + padding-bottom: 1.5rem; +} + +.pb-8 { + padding-bottom: 2rem; +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +* { + --tw-shadow: 0 0 rgba(0,0,0,0); +} + +.shadow { + --tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); + box-shadow: 0 0 rgba(0,0,0,0), 0 0 rgba(0,0,0,0), var(--tw-shadow); + box-shadow: var(--tw-ring-offset-shadow, 0 0 rgba(0,0,0,0)), var(--tw-ring-shadow, 0 0 rgba(0,0,0,0)), var(--tw-shadow); +} + +.shadow-md { + --tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); + box-shadow: 0 0 rgba(0,0,0,0), 0 0 rgba(0,0,0,0), var(--tw-shadow); + box-shadow: var(--tw-ring-offset-shadow, 0 0 rgba(0,0,0,0)), var(--tw-ring-shadow, 0 0 rgba(0,0,0,0)), var(--tw-shadow); +} + +.shadow-lg { + --tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 rgba(0,0,0,0), 0 0 rgba(0,0,0,0), var(--tw-shadow); + box-shadow: var(--tw-ring-offset-shadow, 0 0 rgba(0,0,0,0)), var(--tw-ring-shadow, 0 0 rgba(0,0,0,0)), var(--tw-shadow); +} + +.hover\:shadow-lg:hover { + --tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 rgba(0,0,0,0), 0 0 rgba(0,0,0,0), var(--tw-shadow); + box-shadow: var(--tw-ring-offset-shadow, 0 0 rgba(0,0,0,0)), var(--tw-ring-shadow, 0 0 rgba(0,0,0,0)), var(--tw-shadow); +} + +.focus\:shadow-lg:focus { + --tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 rgba(0,0,0,0), 0 0 rgba(0,0,0,0), var(--tw-shadow); + box-shadow: var(--tw-ring-offset-shadow, 0 0 rgba(0,0,0,0)), var(--tw-ring-shadow, 0 0 rgba(0,0,0,0)), var(--tw-shadow); +} + +* { + --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgba(59, 130, 246, 0.5); + --tw-ring-offset-shadow: 0 0 rgba(0,0,0,0); + --tw-ring-shadow: 0 0 rgba(0,0,0,0); +} + +.focus\:ring-0:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), 0 0 rgba(0,0,0,0); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0,0,0,0)); +} + +.fill-current { + fill: currentColor; +} + +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} + +.text-white { + --tw-text-opacity: 1; + color: rgba(255, 255, 255, var(--tw-text-opacity)); +} + +.text-gray-100 { + --tw-text-opacity: 1; + color: rgba(243, 244, 246, var(--tw-text-opacity)); +} + +.text-gray-400 { + --tw-text-opacity: 1; + color: rgba(156, 163, 175, var(--tw-text-opacity)); +} + +.text-gray-500 { + --tw-text-opacity: 1; + color: rgba(107, 114, 128, var(--tw-text-opacity)); +} + +.text-gray-600 { + --tw-text-opacity: 1; + color: rgba(75, 85, 99, var(--tw-text-opacity)); +} + +.text-red-600 { + --tw-text-opacity: 1; + color: rgba(220, 38, 38, var(--tw-text-opacity)); +} + +.text-red-700 { + --tw-text-opacity: 1; + color: rgba(185, 28, 28, var(--tw-text-opacity)); +} + +.text-yellow-600 { + --tw-text-opacity: 1; + color: rgba(217, 119, 6, var(--tw-text-opacity)); +} + +.text-green-600 { + --tw-text-opacity: 1; + color: rgba(5, 150, 105, var(--tw-text-opacity)); +} + +.text-purple-600 { + --tw-text-opacity: 1; + color: rgba(124, 58, 237, var(--tw-text-opacity)); +} + +.text-jtblue-600 { + --tw-text-opacity: 1; + color: rgba(15, 123, 213, var(--tw-text-opacity)); +} + +.hover\:text-gray-100:hover { + --tw-text-opacity: 1; + color: rgba(243, 244, 246, var(--tw-text-opacity)); +} + +.hover\:text-purple-500:hover { + --tw-text-opacity: 1; + color: rgba(139, 92, 246, var(--tw-text-opacity)); +} + +.uppercase { + text-transform: uppercase; +} + +.hover\:underline:hover { + text-decoration: underline; +} + +.antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.visible { + visibility: visible; +} + +.whitespace-nowrap { + white-space: nowrap; +} + +.w-4 { + width: 1rem; +} + +.w-5 { + width: 1.25rem; +} + +.w-6 { + width: 1.5rem; +} + +.w-20 { + width: 5rem; +} + +.w-40 { + width: 10rem; +} + +.w-64 { + width: 16rem; +} + +.w-3\/12 { + width: 25%; +} + +.w-4\/12 { + width: 33.333333%; +} + +.w-5\/12 { + width: 41.666667%; +} + +.w-full { + width: 100%; +} + +.z-50 { + z-index: 50; +} + +.gap-4 { + grid-gap: 1rem; + gap: 1rem; +} + +.grid-cols-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); +} + +.transform { + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.hover\:scale-105:hover { + --tw-scale-x: 1.05; + --tw-scale-y: 1.05; +} + +.hover\:scale-110:hover { + --tw-scale-x: 1.1; + --tw-scale-y: 1.1; +} + +.-translate-x-full { + --tw-translate-x: -100%; +} + +.transition-all { + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.transition { + transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.transition-colors { + transition-property: background-color, border-color, color, fill, stroke; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.ease-in-out { + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + +.duration-150 { + transition-duration: 150ms; +} + +.duration-300 { + transition-duration: 300ms; +} + +.duration-500 { + transition-duration: 500ms; +} + +@-webkit-keyframes spin { + to { + transform: rotate(360deg); + } +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +@-webkit-keyframes ping { + 75%, 100% { + transform: scale(2); + opacity: 0; + } +} + +@keyframes ping { + 75%, 100% { + transform: scale(2); + opacity: 0; + } +} + +@-webkit-keyframes pulse { + 50% { + opacity: .5; + } +} + +@keyframes pulse { + 50% { + opacity: .5; + } +} + +@-webkit-keyframes bounce { + 0%, 100% { + transform: translateY(-25%); + -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1); + animation-timing-function: cubic-bezier(0.8,0,1,1); + } + + 50% { + transform: none; + -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1); + animation-timing-function: cubic-bezier(0,0,0.2,1); + } +} + +@keyframes bounce { + 0%, 100% { + transform: translateY(-25%); + -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1); + animation-timing-function: cubic-bezier(0.8,0,1,1); + } + + 50% { + transform: none; + -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1); + animation-timing-function: cubic-bezier(0,0,0.2,1); + } +} + +/* custom */ + +@media (min-width: 640px) { + .sm\:grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} + +@media (min-width: 768px) { + .md\:bg-transparent { + background-color: transparent; + } + + .md\:bg-white { + --tw-bg-opacity: 1; + background-color: rgba(255, 255, 255, var(--tw-bg-opacity)); + } + + .md\:hover\:bg-white:hover { + --tw-bg-opacity: 1; + background-color: rgba(255, 255, 255, var(--tw-bg-opacity)); + } + + .md\:rounded-none { + border-radius: 0px; + } + + .md\:rounded-lg { + border-radius: 0.5rem; + } + + .md\:border-none { + border-style: none; + } + + .md\:block { + display: block; + } + + .md\:flex { + display: flex; + } + + .md\:grid { + display: grid; + } + + .md\:hidden { + display: none; + } + + .md\:text-sm { + font-size: 0.875rem; + line-height: 1.25rem; + } + + .md\:text-2xl { + font-size: 1.5rem; + line-height: 2rem; + } + + .md\:m-4 { + margin: 1rem; + } + + .md\:relative { + position: relative; + } + + .md\:shadow { + --tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); + box-shadow: 0 0 rgba(0,0,0,0), 0 0 rgba(0,0,0,0), var(--tw-shadow); + box-shadow: var(--tw-ring-offset-shadow, 0 0 rgba(0,0,0,0)), var(--tw-ring-shadow, 0 0 rgba(0,0,0,0)), var(--tw-shadow); + } + + .md\:shadow-none { + --tw-shadow: 0 0 rgba(0,0,0,0); + box-shadow: 0 0 rgba(0,0,0,0), 0 0 rgba(0,0,0,0), var(--tw-shadow); + box-shadow: var(--tw-ring-offset-shadow, 0 0 rgba(0,0,0,0)), var(--tw-ring-shadow, 0 0 rgba(0,0,0,0)), var(--tw-shadow); + } + + .md\:text-left { + text-align: left; + } + + .md\:w-full { + width: 100%; + } + + .md\:gap-8 { + grid-gap: 2rem; + gap: 2rem; + } + + .md\:hover\:scale-105:hover { + --tw-scale-x: 1.05; + --tw-scale-y: 1.05; + } + + .md\:translate-x-0 { + --tw-translate-x: 0px; + } +} + +@media (min-width: 1024px) { + .lg\:rounded-b-none { + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; + } + + .lg\:rounded-t-lg { + border-top-left-radius: 0.5rem; + border-top-right-radius: 0.5rem; + } + + .lg\:place-self-start { + align-self: start; + justify-self: start; + place-self: start; + } + + .lg\:h-40 { + height: 10rem; + } + + .lg\:w-full { + width: 100%; + } + + .lg\:grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .lg\:grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } +} + +@media (min-width: 1280px) { + .xl\:grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } +} + +@media (min-width: 1536px) { + .\32xl\:grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } +} +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0LmNzcyIsIjxubyBzb3VyY2U+Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWE7O0FBQ2IsOEZBQWM7O0FBQWQ7OztDQUFjOztBQUFkOztDQUFjOztBQUFkOzs7RUFBQSxzQkFBYztBQUFBOztBQUFkOztDQUFjOztBQUFkO0VBQUEsZ0JBQWM7RUFBZCxjQUFjO0tBQWQsV0FBYztBQUFBOztBQUFkOzs7Q0FBYzs7QUFBZDtFQUFBLGlCQUFjLEVBQWQsTUFBYztFQUFkLDhCQUFjLEVBQWQsTUFBYztBQUFBOztBQUFkOzs7Q0FBYzs7QUFBZDs7Q0FBYzs7QUFBZDtFQUFBLFNBQWM7QUFBQTs7QUFBZDs7Q0FBYzs7QUFBZDtFQUFBOzs7Ozs7OztrQkFBYztBQUFBOztBQUFkOzs7Q0FBYzs7QUFBZDs7O0NBQWM7O0FBQWQ7RUFBQSxTQUFjLEVBQWQsTUFBYztFQUFkLGNBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7OztDQUFjOztBQUFkOztDQUFjOztBQUFkO0VBQUEseUNBQWM7VUFBZCxpQ0FBYztBQUFBOztBQUFkOztDQUFjOztBQUFkOztFQUFBLG1CQUFjO0FBQUE7O0FBQWQ7OztDQUFjOztBQUFkOzs7O0VBQUE7Ozs7OztXQUFjLEVBQWQsTUFBYztFQUFkLGNBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7RUFBQSxjQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7O0VBQUEsY0FBYztFQUFkLGNBQWM7RUFBZCxrQkFBYztFQUFkLHdCQUFjO0FBQUE7O0FBQWQ7RUFBQSxlQUFjO0FBQUE7O0FBQWQ7RUFBQSxXQUFjO0FBQUE7O0FBQWQ7OztDQUFjOztBQUFkOzs7Q0FBYzs7QUFBZDtFQUFBLGNBQWMsRUFBZCxNQUFjO0VBQWQscUJBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7OztDQUFjOztBQUFkOzs7Q0FBYzs7QUFBZDs7Ozs7RUFBQSxvQkFBYyxFQUFkLE1BQWM7RUFBZCxlQUFjLEVBQWQsTUFBYztFQUFkLGlCQUFjLEVBQWQsTUFBYztFQUFkLFNBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7OztDQUFjOztBQUFkO1NBQUEsTUFBYztFQUFkLG9CQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7O0VBQUEsMEJBQWM7QUFBQTs7QUFBZDs7Q0FBYzs7QUFBZDs7Q0FBYzs7QUFBZDs7O0NBQWM7O0FBQWQ7O0NBQWM7O0FBQWQ7RUFBQSxVQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7RUFBQSx3QkFBYztBQUFBOztBQUFkOztDQUFjOztBQUFkOzs7Q0FBYzs7QUFBZDs7Q0FBYzs7QUFBZDs7O0NBQWM7O0FBQWQ7OztDQUFjOztBQUFkOztDQUFjOztBQUFkO0VBQUEsa0JBQWM7QUFBQTs7QUFBZDs7OztFQUFjOztBQUFkOztFQUFjOztBQUFkOzs7Ozs7Ozs7Ozs7O0VBQUEsU0FBYztBQUFBOztBQUFkO0VBQUEsNkJBQWM7RUFBZCxzQkFBYztBQUFBOztBQUFkOzs7RUFBYzs7QUFBZDtFQUFBLG1CQUFjO0VBQWQsMENBQWM7QUFBQTs7QUFBZDtFQUFBLFNBQWM7RUFBZCxVQUFjO0FBQUE7O0FBQWQ7O0VBQUEsZ0JBQWM7RUFBZCxTQUFjO0VBQWQsVUFBYztBQUFBOztBQUFkOztFQUFjOztBQUFkOzs7OztFQUFjOztBQUFkO0VBQUEsd1JBQWMsRUFBZCxNQUFjO0VBQWQsZ0JBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7OztFQUFjOztBQUFkO0VBQUEsb0JBQWM7RUFBZCxvQkFBYztBQUFBOztBQUFkOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBYzs7QUFBZDs7O0VBQUEsc0JBQWMsRUFBZCxNQUFjO0VBQWQsZUFBYyxFQUFkLE1BQWM7RUFBZCxtQkFBYyxFQUFkLE1BQWM7RUFBZCxxQkFBYyxFQUFkLE1BQWM7QUFBQTs7QUFBZDs7RUFBYzs7QUFBZDtFQUFBLHFCQUFjO0FBQUE7O0FBQWQ7Ozs7Ozs7O0VBQWM7O0FBQWQ7RUFBQSxtQkFBYztBQUFBOztBQUFkO0VBQUEsZ0JBQWM7QUFBQTs7QUFBZDtFQUFBLGNBQWM7QUFBQTs7QUFBZDtFQUFBLGNBQWM7QUFBQTs7QUFBZDs7RUFBQSxjQUFjO0FBQUE7O0FBQWQ7O0VBQUEsZUFBYztBQUFBOztBQUFkO0VBQUEseUJBQWM7QUFBQTs7QUFBZDs7Ozs7O0VBQUEsa0JBQWM7RUFBZCxvQkFBYztBQUFBOztBQUFkOzs7RUFBYzs7QUFBZDtFQUFBLGNBQWM7RUFBZCx3QkFBYztBQUFBOztBQUFkOzs7Ozs7RUFBYzs7QUFBZDs7Ozs7RUFBQSxVQUFjO0VBQWQsb0JBQWM7RUFBZCxjQUFjO0FBQUE7O0FBQWQ7Ozs7O0VBQWM7O0FBQWQ7Ozs7RUFBQSwrR0FBYztBQUFBOztBQUFkOzs7Ozs7RUFBYzs7QUFBZDs7Ozs7Ozs7RUFBQSxjQUFjO0VBQWQsc0JBQWM7QUFBQTs7QUFBZDs7Ozs7RUFBYzs7QUFBZDs7RUFBQSxlQUFjO0VBQWQsWUFBYztBQUFBOztBQU9iO0VBQ0MsOEVBQThFO0VBQzlFLGlCQUFpQjtFQUNqQixrQkFBa0I7QUFDbkI7O0FBQ0Esa0VBQWtFOztBQUlsRSxlQUFlOztBQTZHZixrQkFBa0I7O0FBQ2xCO0VBQ0UsaUJBQWlCO0VBQ2pCLHVCQUF1QjtBQUN6Qjs7QUFDQTtFQUNFO0lBQ0UscUJBQXFCO0VBQ3ZCO0FBQ0Y7O0FBQ0EsYUFBYTs7QUFDYjtFQXRJRCxrQkFBbUI7RUFBbkIsa0JBQW1CO0FBd0lsQjs7QUFFQTtFQTFJRCxtQkFBbUI7RUFBbkIsbUJBQW1CO0VBQW5CLFdBQW1CO0FBNElsQjs7QUFFQTs7O0VBR0MseUJBQXlCO0VBQ3RCLGNBQWM7RUFDZCx3QkFBd0I7QUFDNUI7O0FBQ0E7RUFySkQsb0JBQW1CO0VBQW5CLGtEQUFtQjtBQXVKbEI7O0FBRUEsa0JBQWtCOztBQUNsQjtFQUNDO0lBQ0Msc0NBQXNDO0lBQ3RDOzs7O0VBSUQ7QUFDRDs7QUFFQSxtQkFBbUI7O0FBQ25CO0VBQ0M7SUFDQyxrQ0FBa0M7SUFDbEM7Ozs7O0VBS0Q7QUFDRDs7QUFFQTtFQUNDLFlBQVk7QUFDYjs7QUFFQTtFQUNDLFlBQVk7QUFDYjs7QUFFQTtFQUNDLFlBQVk7QUFDYjs7QUFFQTtFQUNDLHlCQUF5QjtFQUN6QixZQUFZO0FBQ2I7O0FBRUE7RUFDQyxZQUFZO0FBQ2I7O0FBRUE7RUFDQyxZQUFZO0FBQ2I7O0FBeE1EO0VBQUE7QUFBb0I7O0FBQXBCO0VBQUE7SUFBQTtFQUFvQjtBQUFBOztBQUFwQjtFQUFBO0lBQUE7RUFBb0I7QUFBQTs7QUFBcEI7RUFBQTtJQUFBO0VBQW9CO0FBQUE7O0FBQXBCO0VBQUE7SUFBQTtFQUFvQjtBQUFBOztBQUFwQjtFQUFBO0lBQUE7RUFBb0I7QUFBQTs7QUFDcEI7RUFBQSx1QkFBbUI7RUFBbkIsK0RBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQixvREFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUEsMkJBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBLHNCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxzQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUEsbUJBQW1CO0VBQW5CLHFCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkIsb0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxtQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGlCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQSxnQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsaUJBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBLG9CQUFtQjtLQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSx1QkFBbUI7S0FBbkI7QUFBbUI7O0FBQW5CO0VBQUEsOEJBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxtQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxxQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsaUJBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEscUJBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxxQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUEsNEVBQW1CO0VBQW5CLGtFQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxrRkFBbUI7RUFBbkIsa0VBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLG9GQUFtQjtFQUFuQixrRUFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsb0ZBQW1CO0VBQW5CLGtFQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxvRkFBbUI7RUFBbkIsa0VBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLDRDQUFtQjtFQUFuQiwyQkFBbUI7RUFBbkIsNEJBQW1CO0VBQW5CLHdDQUFtQjtFQUFuQiwwQ0FBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsMkdBQW1CO0VBQW5CLHlHQUFtQjtFQUFuQixrRkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBLG1DQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQSxjQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQSxtQkFBbUI7RUFBbkIsbUJBQW1CO0VBQW5CLGNBQW1CO0VBQW5CLGNBQW1CO0VBQW5CLGNBQW1CO0VBQW5CLGVBQW1CO0VBQW5CLGVBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxpQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUEsd0JBQW1CO0VBQW5CLHdEQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSx3R0FBbUI7RUFBbkIsd0RBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLHdFQUFtQjtFQUFuQix3REFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7SUFBQTtFQUFtQjtBQUFBOztBQUFuQjtFQUFBO0lBQUE7RUFBbUI7QUFBQTs7QUFBbkI7RUFBQTtJQUFBLG1CQUFtQjtJQUFuQjtFQUFtQjtBQUFBOztBQUFuQjtFQUFBO0lBQUEsbUJBQW1CO0lBQW5CO0VBQW1CO0FBQUE7O0FBQW5CO0VBQUE7SUFBQTtFQUFtQjtBQUFBOztBQUFuQjtFQUFBO0lBQUE7RUFBbUI7QUFBQTs7QUFBbkI7RUFBQTtJQUFBLDJCQUFtQjtJQUFuQiwwREFBbUI7WUFBbkI7RUFBbUI7O0VBQW5CO0lBQUEsZUFBbUI7SUFBbkIsMERBQW1CO1lBQW5CO0VBQW1CO0FBQUE7O0FBQW5CO0VBQUE7SUFBQSwyQkFBbUI7SUFBbkIsMERBQW1CO1lBQW5CO0VBQW1COztFQUFuQjtJQUFBLGVBQW1CO0lBQW5CLDBEQUFtQjtZQUFuQjtFQUFtQjtBQUFBOztBQUVuQixXQUFXOztBQ0xYO0VER0E7SUFBQTtFQUFtQjtDQ0huQjs7QUFBQTtFREdBO0lBQUE7RUFBbUI7O0VBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0VBQW1COztFQUFuQjtJQUFBLGtCQUFtQjtJQUFuQjtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQSxtQkFBbUI7SUFBbkI7RUFBbUI7O0VBQW5CO0lBQUEsaUJBQW1CO0lBQW5CO0VBQW1COztFQUFuQjtJQUFBO0VBQW1COztFQUFuQjtJQUFBO0VBQW1COztFQUFuQjtJQUFBLDRFQUFtQjtJQUFuQixrRUFBbUI7SUFBbkI7RUFBbUI7O0VBQW5CO0lBQUEsOEJBQW1CO0lBQW5CLGtFQUFtQjtJQUFuQjtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQSxjQUFtQjtJQUFuQjtFQUFtQjs7RUFBbkI7SUFBQSxrQkFBbUI7SUFBbkI7RUFBbUI7O0VBQW5CO0lBQUE7RUFBbUI7Q0NIbkI7O0FBQUE7RURHQTtJQUFBLCtCQUFtQjtJQUFuQjtFQUFtQjs7RUFBbkI7SUFBQSw4QkFBbUI7SUFBbkI7RUFBbUI7O0VBQW5CO0lBQUEsaUJBQW1CO0lBQW5CLG1CQUFtQjtJQUFuQjtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjtDQ0huQjs7QUFBQTtFREdBO0lBQUE7RUFBbUI7Q0NIbkI7O0FBQUE7RURHQTtJQUFBO0VBQW1CO0NDSG5CIiwiZmlsZSI6Im91dHB1dC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0YWlsd2luZCAqL1xuQHRhaWx3aW5kIGJhc2U7XG5AdGFpbHdpbmQgY29tcG9uZW50cztcbkB0YWlsd2luZCB1dGlsaXRpZXM7XG5cbi8qIGN1c3RvbSAqL1xuQGxheWVyIGJhc2Uge1xuXG5cdDpyb290IHtcblx0XHQvKiBKb29tbGF0b29scyBsb2dvIGNvbG91ciBvdmVycmlkZSB1c2VkIC9wYXJ0aWFscy9sb2dvL2pvb21hbHRvb2xzLmh0bWwucGhwICovXG5cdFx0LS1qdC1ibHVlOiMwMGFkZWY7XG5cdFx0LS1qdC1ibGFjazojMDAwMDAwO1xuXHR9XG5cdC8qIGFkZCB0YWlsd2luZCBjbGFzc2VzIHRvIHBhZ2luYXRpb24gc2VsZWN0IGxpc3Qgc28gaXQncyBwcmV0dHkgKi9cblx0c2VsZWN0LmstZm9ybS1jb250cm9sIHtcblx0XHRAYXBwbHkgYmxvY2sgYXBwZWFyYW5jZS1ub25lIHctZnVsbCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMTAwIGhvdmVyOmJvcmRlci1ncmF5LTIwMCBweC00IHB5LTIgcHItOCByb3VuZGVkIHNoYWRvdyBsZWFkaW5nLXRpZ2h0IGZvY3VzOm91dGxpbmUtbm9uZTtcblx0fVxuXHQvKiBQYWdpbmF0aW9uICovXG5cdC5rLXBhZ2luYXRpb25fX3BhZ2VzIHtcblx0ICBwYWRkaW5nLXRvcDogOHB4O1xuXHQgIG1hcmdpbjogMDtcblx0ICBwYWRkaW5nOiAwO1xuXHQgIGxpc3Qtc3R5bGU6IG5vbmU7XG5cdCAgYm9yZGVyOiBub25lO1xuXHQgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHQgIGRpc3BsYXk6IGZsZXg7XG5cdCAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdH1cblx0QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTYwcHgpIHtcblx0ICAuay1wYWdpbmF0aW9uX19wYWdlcyB7XG5cdCAgICBwYWRkaW5nLXRvcDogMTJweDtcblx0ICB9XG5cdH1cblx0QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG5cdCAgLmstcGFnaW5hdGlvbl9fcGFnZXMge1xuXHQgICAgcGFkZGluZy10b3A6IDE2cHg7XG5cdCAgfVxuXHR9XG5cdC5rLXBhZ2luYXRpb25fX3BhZ2VzIGxpIHtcblx0ICBtYXJnaW46IDAgNHB4O1xuXHR9XG5cdC5rLXBhZ2luYXRpb25fX3BhZ2VzIGxpIGEsIC5rLXBhZ2luYXRpb25fX3BhZ2VzIGxpIHNwYW4ge1xuXHQgIGRpc3BsYXk6IGJsb2NrO1xuXHQgIG1pbi13aWR0aDogNDBweDtcblx0ICBtaW4taGVpZ2h0OiA0MHB4O1xuXHQgIHRleHQtYWxpZ246IGNlbnRlcjtcblx0fVxuXHQuay1wYWdpbmF0aW9uX19wYWdlcyBsaSBhIHtcblx0ICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cdCAgb3ZlcmZsb3c6IGhpZGRlbjtcblx0ICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdCAgYm9yZGVyLXJhZGl1czogNTAlO1xuXHQgIGJhY2tncm91bmQ6ICNmMWYxZjE7XG5cdCAgY29sb3I6ICMzMzM7XG5cdCAgbGluZS1oZWlnaHQ6IDQwcHg7XG5cdCAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAyMDBtcyBjdWJpYy1iZXppZXIoMC4xOTUsIDAuNCwgMC40NSwgMC43ODUpIDBtcztcblx0fVxuXHQuay1wYWdpbmF0aW9uX19wYWdlcyBsaSBhOmFmdGVyIHtcblx0ICBjb250ZW50OiBcIlwiO1xuXHQgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcblx0ICBkaXNwbGF5OiBibG9jaztcblx0ICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdCAgYm9yZGVyLXJhZGl1czogNTAlO1xuXHQgIHBhZGRpbmctdG9wOiAyNDAlO1xuXHQgIHBhZGRpbmctbGVmdDogMjQwJTtcblx0ICBtYXJnaW4tdG9wOiAtMTIwJTtcblx0ICBtYXJnaW4tbGVmdDogLTEyMCU7XG5cdCAgb3BhY2l0eTogMDtcblx0ICB0cmFuc2l0aW9uOiBhbGwgMXM7XG5cdH1cblx0LmstcGFnaW5hdGlvbl9fcGFnZXMgbGkgYTphY3RpdmU6YWZ0ZXIge1xuXHQgIHBhZGRpbmctdG9wOiAwO1xuXHQgIHBhZGRpbmctbGVmdDogMDtcblx0ICBtYXJnaW4tdG9wOiAwO1xuXHQgIG1hcmdpbi1sZWZ0OiAwO1xuXHQgIG9wYWNpdHk6IDE7XG5cdCAgdHJhbnNpdGlvbjogMHM7XG5cdH1cblx0LmstcGFnaW5hdGlvbl9fcGFnZXMgbGkgYVtocmVmXTpob3ZlciwgLmstcGFnaW5hdGlvbl9fcGFnZXMgbGkgYVtocmVmXTpmb2N1cyB7XG5cdCAgYmFja2dyb3VuZDogI2RkZDtcblx0fVxuXHQuay1wYWdpbmF0aW9uX19wYWdlcyBsaSBzcGFuIHtcblx0ICBsaW5lLWhlaWdodDogNDBweDtcblx0fVxuXHQuay1wYWdpbmF0aW9uX19wYWdlcyBsaSBzcGFuLmFjdGl2ZSB7XG5cdCAgbGluZS1oZWlnaHQ6IDQwcHg7XG5cdCAgYmFja2dyb3VuZDogIzAwODlkNjtcblx0ICBjb2xvcjogd2hpdGU7XG5cdCAgYm9yZGVyLXJhZGl1czogNTAlO1xuXHR9XG5cdC5rLXBhZ2luYXRpb25fX3BhZ2VzIFthcmlhLWxhYmVsPVwiTmV4dCBwYWdlXCJdLFxuXHQuay1wYWdpbmF0aW9uX19wYWdlcyBbYXJpYS1sYWJlbD1cIlByZXZpb3VzIHBhZ2VcIl0ge1xuXHQgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0fVxuXHQuay1wYWdpbmF0aW9uX19wYWdlcyBbYXJpYS1sYWJlbD1cIk5leHQgcGFnZVwiXTpiZWZvcmUsXG5cdC5rLXBhZ2luYXRpb25fX3BhZ2VzIFthcmlhLWxhYmVsPVwiUHJldmlvdXMgcGFnZVwiXTpiZWZvcmUge1xuXHQgIGNvbnRlbnQ6IFwiIFwiO1xuXHQgIGJhY2tncm91bmQ6IHVybChcIi4uL2Fzc2V0cy9pY29ucy9jdXN0b20vYXJyb3cuc3ZnXCIpIDBweCA1cHggbm8tcmVwZWF0O1xuXHQgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcblx0ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdCAgaGVpZ2h0OiAyNHB4O1xuXHQgIHdpZHRoOiAyNHB4O1xuXHQgIHRyYW5zZm9ybTogc2NhbGUoMC44NSk7XG5cdCAgb3BhY2l0eTogMC4yO1xuXHQgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cdH1cblx0LmstcGFnaW5hdGlvbl9fcGFnZXMgW2FyaWEtbGFiZWw9XCJOZXh0IHBhZ2VcIl06aG92ZXI6YmVmb3JlLFxuXHQuay1wYWdpbmF0aW9uX19wYWdlcyBbYXJpYS1sYWJlbD1cIlByZXZpb3VzIHBhZ2VcIl06aG92ZXI6YmVmb3JlIHtcblx0ICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuXHQgIG9wYWNpdHk6IDAuODtcblx0fVxuXHQuay1wYWdpbmF0aW9uX19wYWdlcyBbYXJpYS1sYWJlbD1cIk5leHQgcGFnZVwiXSBzcGFuLFxuXHQuay1wYWdpbmF0aW9uX19wYWdlcyBbYXJpYS1sYWJlbD1cIlByZXZpb3VzIHBhZ2VcIl0gc3BhbiB7XG5cdCAgZGlzcGxheTogbm9uZTtcblx0fVxuXHQuay1wYWdpbmF0aW9uX19wYWdlcyBbYXJpYS1sYWJlbD1cIlByZXZpb3VzIHBhZ2VcIl0ge1xuXHQgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0fVxuXHQuay1wYWdpbmF0aW9uX19wYWdlcyBbYXJpYS1sYWJlbD1cIlByZXZpb3VzIHBhZ2VcIl06YmVmb3JlIHtcblx0ICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC01cHg7XG5cdCAgdHJhbnNmb3JtOiBzY2FsZSgwLjg1KSByb3RhdGUoMTgwZGVnKTtcblx0fVxuXHQuay1wYWdpbmF0aW9uX19wYWdlcyBbYXJpYS1sYWJlbD1cIlByZXZpb3VzIHBhZ2VcIl06aG92ZXI6YmVmb3JlIHtcblx0ICB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgxODBkZWcpO1xuXHR9XG5cblx0Lyogc21vb3RoIHNjcm9sbCAqL1xuXHRodG1sIHtcblx0ICBiYWNrZ3JvdW5kOiB3aGl0ZTtcblx0ICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcblx0fVxuXHRAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cdCAgaHRtbCB7XG5cdCAgICBzY3JvbGwtYmVoYXZpb3I6IGF1dG87XG5cdCAgfVxuXHR9XG5cdC8qIHRvb2x0aXBzICovXG5cdC50b29sdGlwIHtcblx0ICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlO1xuXHR9XG5cblx0Lmhhcy10b29sdGlwOmhvdmVyIC50b29sdGlwIHtcblx0ICBAYXBwbHkgdmlzaWJsZSB3aGl0ZXNwYWNlLW5vd3JhcCB6LTUwO1xuXHR9XG5cblx0LmVtYmVkZGVkIGE6bGluaywgXG5cdC5lbWJlZGRlZCBhOmhvdmVyLCBcblx0LmVtYmVkZGVkIGE6dmlzaXRlZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgICBcdGNvbG9yOiBpbmhlcml0O1xuICAgIFx0dGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuXHR9XG5cdC5lbWJlZGRlZCBhLmlzLWFjdGl2ZSB7XG5cdFx0QGFwcGx5IHRleHQtZ3JheS0xMDA7XG5cdH1cblxuXHQvKiAnbWQnOiAnNzY4cHgnICovXG5cdEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuXHRcdCNzaXRlcyB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDIwJSAyMCUgMjAlIDQwJTtcblx0XHRcdGdyaWQtdGVtcGxhdGUtYXJlYXM6IFwiYSBiIGIgYlwiXG5cdFx0XHQgICAgICAgICAgICAgICAgICAgICBcImEgYyBjIGNcIlxuXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgXCJhIGQgZCAuXCJcblx0XHRcdCAgICAgICAgICAgICAgICAgICAgIFwiYSBlIGUgZlwiXG5cdFx0fVxuXHR9XG5cblx0LyogJ2xnJzogJzEwMjRweCcgKi9cblx0QG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuXHRcdCNzaXRlcyB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDMwJSAzMCUgNDAlO1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1hcmVhczogXCJhIGEgYVwiXG5cdFx0XHQgICAgICAgICAgICAgICAgICAgICBcImIgYiBiXCJcblx0XHRcdCAgICAgICAgICAgICAgICAgICAgIFwiYyBjIGNcIlxuXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgXCJkIGQgLlwiXG5cdFx0XHQgICAgICAgICAgICAgICAgICAgICBcImUgZSBmXCJcblx0XHR9XG5cdH1cblxuXHQjc2l0ZXMgPiBkaXY6bnRoLWNoaWxkKDEpIHtcblx0XHRncmlkLWFyZWE6IGE7XG5cdH1cblxuXHQjc2l0ZXMgPiBkaXY6bnRoLWNoaWxkKDIpIHtcblx0XHRncmlkLWFyZWE6IGI7XG5cdH1cblxuXHQjc2l0ZXMgPiBkaXY6bnRoLWNoaWxkKDMpIHtcblx0XHRncmlkLWFyZWE6IGM7XG5cdH1cblxuXHQjc2l0ZXMgPiBkaXY6bnRoLWNoaWxkKDQpIHtcblx0XHQvKmJhY2tncm91bmQtY29sb3I6IHJlZDsqL1xuXHRcdGdyaWQtYXJlYTogZDtcblx0fVxuXG5cdCNzaXRlcyA+IGRpdjpudGgtY2hpbGQoNSkge1xuXHRcdGdyaWQtYXJlYTogZTtcblx0fVxuXG5cdCNzaXRlcyA+IGRpdjpudGgtY2hpbGQoNikge1xuXHRcdGdyaWQtYXJlYTogZjtcblx0fVxuXG59XG5cbkBsYXllciBjb21wb25lbnRzIHtcblxufVxuXG5AbGF5ZXIgdXRpbGl0aWVzIHtcblxufSIsbnVsbF19 */ \ No newline at end of file diff --git a/sites/dashboard/theme/css/output.min.css b/sites/dashboard/theme/css/output.min.css new file mode 100644 index 00000000..025a0fe8 --- /dev/null +++ b/sites/dashboard/theme/css/output.min.css @@ -0,0 +1 @@ +/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Helvetica,Arial,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af}input::placeholder,textarea::placeholder{color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}:root{--jt-blue:#00adef;--jt-black:#000}html{background:#fff;scroll-behavior:smooth}@media screen and (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.tooltip{position:absolute;visibility:hidden}.has-tooltip:hover .tooltip{visibility:visible;white-space:nowrap;z-index:50}.embedded a:hover,.embedded a:link,.embedded a:visited{background-color:inherit;color:inherit;text-decoration:inherit}.embedded a.is-active{--tw-text-opacity:1;color:rgba(243,244,246,var(--tw-text-opacity))}@media (min-width:768px){#sites{grid-template-columns:20% 20% 20% 40%;grid-template-areas:"a b b b" "a c c c" "a d d ." "a e e f"}}@media (min-width:1024px){#sites{grid-template-columns:30% 30% 40%;grid-template-areas:"a a a" "b b b" "c c c" "d d ." "e e f"}}#sites>div:first-child{grid-area:a}#sites>div:nth-child(2){grid-area:b}#sites>div:nth-child(3){grid-area:c}#sites>div:nth-child(4){grid-area:d}#sites>div:nth-child(5){grid-area:e}#sites>div:nth-child(6){grid-area:f}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0.25rem*var(--tw-space-y-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgba(254,226,226,var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgba(254,202,202,var(--tw-bg-opacity))}.bg-yellow-200{--tw-bg-opacity:1;background-color:rgba(253,230,138,var(--tw-bg-opacity))}.bg-green-200{--tw-bg-opacity:1;background-color:rgba(167,243,208,var(--tw-bg-opacity))}.bg-purple-200{--tw-bg-opacity:1;background-color:rgba(221,214,254,var(--tw-bg-opacity))}.bg-jtblue-200{--tw-bg-opacity:1;background-color:rgba(177,238,246,var(--tw-bg-opacity))}.bg-jtblue-600{--tw-bg-opacity:1;background-color:rgba(15,123,213,var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity))}.focus\:bg-jtblue-700:focus,.hover\:bg-jtblue-700:hover{--tw-bg-opacity:1;background-color:rgba(19,98,176,var(--tw-bg-opacity))}.bg-gradient-to-tr{background-image:linear-gradient(to top right,var(--tw-gradient-stops))}.bg-gradient-to-b{background-image:linear-gradient(180deg,var(--tw-gradient-stops))}.from-indigo-700{--tw-gradient-from:#4338ca;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to,rgba(67,56,202,0))}.via-indigo-800{--tw-gradient-stops:var(--tw-gradient-from),#3730a3,var(--tw-gradient-to,rgba(55,48,163,0))}.to-indigo-900{--tw-gradient-to:#312e81}.border-gray-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(209,213,219,var(--tw-border-opacity))}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.border{border-width:1px}.border-b{border-bottom-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.place-items-center{align-items:center;justify-items:center;place-items:center}.place-self-center{align-self:center;justify-self:center;place-self:center}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.flex-1{flex:1 1 0%}.font-jt{font-family:VAGRoundedTL-Regular,Arial Rounded,sans-serif}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-20{height:5rem}.h-40{height:10rem}.h-full{height:100%}.h-screen{height:100vh}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-2xl{font-size:1.5rem;line-height:2rem}.leading-tight{line-height:1.25}.leading-normal{line-height:1.5}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-auto{margin-left:auto;margin-right:auto}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mt-4{margin-top:1rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.-ml-8{margin-left:-2rem}.-mt-12{margin-top:-3rem}.-ml-24{margin-left:-6rem}.-ml-28{margin-left:-7rem}.max-h-screen{max-height:100vh}.max-w-7xl{max-width:80rem}.min-h-screen{min-height:100vh}.object-cover{-o-object-fit:cover;object-fit:cover}.object-top{-o-object-position:top;object-position:top}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.pl-0{padding-left:0}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.absolute{position:absolute}.relative{position:relative}*{--tw-shadow:0 0 transparent}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}.shadow,.shadow-md{box-shadow:0 0 transparent,0 0 transparent,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06)}.focus\:shadow-lg:focus,.hover\:shadow-lg:hover,.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05);box-shadow:0 0 transparent,0 0 transparent,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}*{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 transparent;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.fill-current{fill:currentColor}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(243,244,246,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgba(185,28,28,var(--tw-text-opacity))}.text-yellow-600{--tw-text-opacity:1;color:rgba(217,119,6,var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgba(5,150,105,var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}.text-jtblue-600{--tw-text-opacity:1;color:rgba(15,123,213,var(--tw-text-opacity))}.hover\:text-gray-100:hover{--tw-text-opacity:1;color:rgba(243,244,246,var(--tw-text-opacity))}.hover\:text-purple-500:hover{--tw-text-opacity:1;color:rgba(139,92,246,var(--tw-text-opacity))}.uppercase{text-transform:uppercase}.hover\:underline:hover{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.visible{visibility:visible}.whitespace-nowrap{white-space:nowrap}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-20{width:5rem}.w-40{width:10rem}.w-64{width:16rem}.w-3\/12{width:25%}.w-4\/12{width:33.333333%}.w-5\/12{width:41.666667%}.w-full{width:100%}.z-50{z-index:50}.gap-4{grid-gap:1rem;gap:1rem}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.-translate-x-full{--tw-translate-x:-100%}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:background-color,border-color,color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150{transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:768px){.md\:bg-transparent{background-color:transparent}.md\:bg-white,.md\:hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.md\:rounded-none{border-radius:0}.md\:rounded-lg{border-radius:.5rem}.md\:border-none{border-style:none}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:m-4{margin:1rem}.md\:relative{position:relative}.md\:shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}.md\:shadow,.md\:shadow-none{box-shadow:0 0 transparent,0 0 transparent,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.md\:shadow-none{--tw-shadow:0 0 transparent}.md\:text-left{text-align:left}.md\:w-full{width:100%}.md\:gap-8{grid-gap:2rem;gap:2rem}.md\:hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.md\:translate-x-0{--tw-translate-x:0px}}@media (min-width:1024px){.lg\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.lg\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.lg\:place-self-start{align-self:start;justify-self:start;place-self:start}.lg\:h-40{height:10rem}.lg\:w-full{width:100%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1536px){.\32xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}} \ No newline at end of file diff --git a/sites/dashboard/theme/fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff b/sites/dashboard/theme/fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff new file mode 100644 index 00000000..4da21617 Binary files /dev/null and b/sites/dashboard/theme/fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff differ diff --git a/sites/dashboard/theme/fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff2 b/sites/dashboard/theme/fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff2 new file mode 100644 index 00000000..e311cc05 Binary files /dev/null and b/sites/dashboard/theme/fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff2 differ diff --git a/sites/dashboard/theme/manifest.json b/sites/dashboard/theme/manifest.json new file mode 100644 index 00000000..71acfc2c --- /dev/null +++ b/sites/dashboard/theme/manifest.json @@ -0,0 +1,5 @@ +{ + "name": "Dashboard", + "background_color": "#ffffff", + "display": "browser" +} \ No newline at end of file diff --git a/sites/dashboard/theme/mason.js b/sites/dashboard/theme/mason.js new file mode 100644 index 00000000..acb6d86a --- /dev/null +++ b/sites/dashboard/theme/mason.js @@ -0,0 +1,113 @@ +const mason = require('@joomlatools/mason-tools-v1'); + +async function postcss() { + await mason.css.process(`css/input.css`, `css/output.css`, { + tailwind: { + purge: { + enabled: true, + content: [ + '../**/*.html.php', + ], + options: { + safelist: [ + // body tag + 'antialiased', + 'bg-gray-100', + // logo icon + 'w-6', + 'h-6', + // Platform colors + 'bg-jtblue-200', + 'text-jtblue-600', + 'bg-red-200', + 'text-red-600', + 'bg-green-200', + 'text-green-600', + 'bg-yellow-200', + 'text-yellow-600', + 'bg-purple-200', + 'text-purple-600', + 'bg-jtblue-200', + 'text-jtblue-600', + ], + }, + }, + theme: { + extend: { + colors: { + // Joomlatools blue + 'brand': '#00adef', + 'jtblue': { + '50': '#f2fafc', + '100': '#ddf8fa', + '200': '#b1eef6', + '300': '#7bdef2', + '400': '#37c1ee', + '500': '#00adef', + '600': '#0f7bd5', + '700': '#1362b0', + '800': '#134a81', + '900': '#113c63', + }, + }, + fontFamily: { + // Joomlatools webfont + 'jt': ['VAGRoundedTL-Regular', '"Arial Rounded"', 'sans-serif'], + }, + } + }, + variants: { + opacity: ['responsive', 'hover'], + borderWidth: ['responsive', 'hover', 'focus'], + }, + plugins: [ + // require('@tailwindcss/typography'), + ], + }, + + postcssPresetEnv: { + stage: 2, // default is 2 (A Working Draft championed by a W3C Working Group.) + autoprefixer: { cascade: true }, + features: { + //'focus-within-pseudo-class': false, // Uncomment this if purge is set to false - See troubleshooting below + }, + }, + + postcssImport: { + //root: process.cwd() //define the root where to resolve path (eg: place where node_modules are) + }, + + plugins: [ + // add your own postcss plugins here + // they will run after postcss-import and before other default plugins + require('postcss-nested'), + ] + + }); +} + +async function sync() { + mason.browserSync({ + watch: true, + server: { + baseDir: './sites/dashboard/theme' + }, + files: 'css/*.css', + }); +} + +module.exports = { + version: '1.0', + tasks: { + postcss, + sync, + watch: { + path: ['.'], + callback: async (path) => { + if (path.endsWith('css/input.css')) { + await postcss(); + } + }, + }, + }, +};