From 4fd21d29e034eaa9959fb9404b8ad1f2e1b3be15 Mon Sep 17 00:00:00 2001 From: Nath Date: Tue, 10 Dec 2024 16:18:51 +0000 Subject: [PATCH 01/48] feat: add setup wizard menu page --- dt-core/admin/config-dashboard.php | 8 +++ dt-core/admin/menu/menu-setup-wizard.php | 74 ++++++++++++++++++++++++ functions.php | 1 + 3 files changed, 83 insertions(+) create mode 100644 dt-core/admin/menu/menu-setup-wizard.php diff --git a/dt-core/admin/config-dashboard.php b/dt-core/admin/config-dashboard.php index 2ab8066ec..c00440166 100644 --- a/dt-core/admin/config-dashboard.php +++ b/dt-core/admin/config-dashboard.php @@ -231,6 +231,14 @@ function dt_show_news_widget() { add_meta_box( 'dt_news_feed', esc_html__( 'Disciple.Tools News Feed', 'disciple_tools' ), 'dt_show_news_widget', 'dashboard', 'side', 'high' ); + wp_add_dashboard_widget( 'dt_setup_wizard_new', 'Need help setting up Disciple.Tools?', function (){ + ?> + + Go to New Setup Wizard + + hasAccessPermission() ) { + return; + } + + $image_url = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDUwLjY0IDQzMS41NCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzhiYzM0YTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiB1cmwoI2xpbmVhci1ncmFkaWVudCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudCIgeDE9IjIyNS4zMyIgeTE9IjI0My44IiB4Mj0iNDUwLjY0IiB5Mj0iMjQzLjgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMWQxZDFiIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjQ3IiBzdG9wLWNvbG9yPSIjOGJjMzRhIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzhiYzM0YSIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPGcgaWQ9IkxheWVyXzEtMiIgZGF0YS1uYW1lPSJMYXllciAxIj4KICAgIDxnPgogICAgICA8cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNDUwLjY0IDQzMS41NCAzNzUuNTQgNDMxLjU0IDIyNS4zMyAxMTcuMjcgMjU0LjU5IDU2LjA1IDQ1MC42NCA0MzEuNTQiLz4KICAgICAgPHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjI1NC41OSA1Ni4wNSAyMjUuMzMgMTE3LjI3IDIyNS4zMiAxMTcuMjcgNzUuMTEgNDMxLjU0IDAgNDMxLjU0IDI5LjM1IDM3NS4zMyAyMDUuMyAzOC4zNSAyMjUuMzIgMCAyNDQuMzQgMzYuNDMgMjU0LjU5IDU2LjA1Ii8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4='; + add_menu_page( + __( 'Setup Wizard (D.T)', 'disciple_tools' ), + __( 'Setup Wizard (D.T)', 'disciple_tools' ), + 'manage_dt', + 'dt_setup_wizard', + [ $this, 'content' ], + $image_url, + 52, + ); + } + + public function content() { + if ( $this->hasAccessPermission() ) { + wp_die( 'You do not have sufficient permissions to access this page.' ); + } + + ?> +
+

+
+ Date: Tue, 10 Dec 2024 16:25:09 +0000 Subject: [PATCH 02/48] phpcs --- dt-core/admin/menu/menu-setup-wizard.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index 27f887d13..0aa3abed9 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -30,20 +30,20 @@ public function __construct() { add_action( 'admin_menu', [ $this, 'add_dt_options_menu' ] ); add_filter( 'tgmpa_load', '__return_false', 100 ); - add_action('admin_head', function() { - remove_action( 'admin_notices', 'update_nag', 3 ); + add_action( 'admin_head', function() { + remove_action( 'admin_notices', 'update_nag', 3 ); remove_action( 'admin_notices', 'maintenance_nag', 10 ); remove_action( 'network_admin_notices', 'update_nag', 3 ); remove_action( 'network_admin_notices', 'maintenance_nag', 3 ); }); } - public function hasAccessPermission() { + public function has_access_permission() { return !current_user_can( 'manage_dt' ); } public function add_dt_options_menu() { - if ( $this->hasAccessPermission() ) { + if ( $this->has_access_permission() ) { return; } @@ -60,7 +60,7 @@ public function add_dt_options_menu() { } public function content() { - if ( $this->hasAccessPermission() ) { + if ( $this->has_access_permission() ) { wp_die( 'You do not have sufficient permissions to access this page.' ); } From 31db64642559d949bf96e5349e95c882340911ac Mon Sep 17 00:00:00 2001 From: Nath Date: Tue, 10 Dec 2024 17:12:21 +0000 Subject: [PATCH 03/48] feat: add non bundled lit component --- dt-core/admin/components/setup-wizard.js | 31 ++++++++++++++++++++++++ dt-core/admin/menu/menu-setup-wizard.php | 22 ++++++++++++++--- 2 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 dt-core/admin/components/setup-wizard.js diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js new file mode 100644 index 000000000..839cf3918 --- /dev/null +++ b/dt-core/admin/components/setup-wizard.js @@ -0,0 +1,31 @@ +import {html, css, LitElement} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/core/lit-core.min.js'; + +console.log('setup-wizard.js') + +export class SetupWizard extends LitElement { + static styles = [ + css` + :host { + display: block; + } + .wrap { + padding: 1rem; + } + ` + ]; + + constructor() { + super() + + this.translations = setupWizardShare.translations + } + + render() { + return html` +
+

${this.translations.title}

+
+ `; + } +} +customElements.define('setup-wizard', SetupWizard); diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index 0aa3abed9..a8afef5bb 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -31,17 +31,31 @@ public function __construct() { add_filter( 'tgmpa_load', '__return_false', 100 ); add_action( 'admin_head', function() { - remove_action( 'admin_notices', 'update_nag', 3 ); + remove_action( 'admin_notices', 'update_nag', 3 ); remove_action( 'admin_notices', 'maintenance_nag', 10 ); remove_action( 'network_admin_notices', 'update_nag', 3 ); remove_action( 'network_admin_notices', 'maintenance_nag', 3 ); }); + dt_theme_enqueue_script( 'setup-wizard', 'dt-core/admin/components/setup-wizard.js', [], true ); + wp_localize_script( 'setup-wizard', 'setupWizardShare', [ + 'translations' => [ + 'title' => esc_html__( 'Disciple.Tools Setup Wizard', 'disciple_tools' ), + ], + ] ); + add_filter( 'script_loader_tag', [ $this, 'filter_script_loader_tag' ], 10, 2 ); } public function has_access_permission() { return !current_user_can( 'manage_dt' ); } + public function filter_script_loader_tag( $tag, $handle ) { + if ( in_array( $handle, [ 'setup-wizard' ] ) ) { + $tag = preg_replace( '/(.*)(><\/script>)/', '$1 type="module"$2', $tag ); + } + return $tag; + } + public function add_dt_options_menu() { if ( $this->has_access_permission() ) { return; @@ -65,9 +79,9 @@ public function content() { } ?> -
-

-
+ + + Date: Tue, 10 Dec 2024 17:56:59 +0000 Subject: [PATCH 04/48] feat: add some basic styling --- dt-core/admin/components/setup-wizard.js | 78 +++++++++++++++++++++++- dt-core/admin/menu/menu-setup-wizard.php | 12 ++-- 2 files changed, 84 insertions(+), 6 deletions(-) diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 839cf3918..67f0d8cdd 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -5,11 +5,74 @@ console.log('setup-wizard.js') export class SetupWizard extends LitElement { static styles = [ css` + /* Global */ :host { display: block; + font-size: 18px; + line-height: 1.4; } + h1, h2 { + font-weight: 500; + color: #3f729b; + } + button { + font-size: inherit; + border: none; + padding: 0.5rem 1.5rem; + border-radius: 8px; + } + /* Composition */ .wrap { padding: 1rem; + min-height: 80vh; + } + .with-sidebar { + display: flex; + flex-wrap: wrap; + gap: var(--s1); + } + .with-sidebar > :first-child { + flex-basis: 0; + flex-grow: 999; + min-inline-size: 70%; + } + .with-sidebar > :last-child { + flex-grow: 1; + } + .cluster { + display: flex; + flex-wrap: wrap; + gap: var(--space, 1rem); + justify-content: flex-start; + align-items: center; + } + /* Utilities */ + .flex-center { + justify-content: center; + } + /* Blocks */ + .wizard { + border-radius: 12px; + border: 1px solid transparent; + overflow: hidden; + } + .sidebar { + background-color: grey; + color: white; + padding: 1rem; + } + .content { + background-color: white; + padding: 1rem; + } + .btn-primary { + background-color: #3f729b; + color: #fefefe; + } + .btn-primary:hover, + .btn-primary:focus, + .btn-primary:active { + background-color: #366184; } ` ]; @@ -23,7 +86,20 @@ export class SetupWizard extends LitElement { render() { return html`
-

${this.translations.title}

+ +
+
+

${this.translations.title}

+ Content here +
+ + +
+
+ +
`; } diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index a8afef5bb..a590c20de 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -1,8 +1,8 @@ [ 'title' => esc_html__( 'Disciple.Tools Setup Wizard', 'disciple_tools' ), + 'next' => esc_html__( 'Next', 'disciple_tools' ), + 'back' => esc_html__( 'Back', 'disciple_tools' ), ], ] ); add_filter( 'script_loader_tag', [ $this, 'filter_script_loader_tag' ], 10, 2 ); @@ -85,4 +87,4 @@ public function content() { Date: Wed, 11 Dec 2024 09:49:31 +0000 Subject: [PATCH 05/48] style: adjust button styling --- dt-core/admin/components/setup-wizard.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 67f0d8cdd..1e127108d 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -20,6 +20,14 @@ export class SetupWizard extends LitElement { border: none; padding: 0.5rem 1.5rem; border-radius: 8px; + cursor: pointer; + background-color: #efefef; + transition: background-color 120ms linear; + } + button:hover, + button:active, + button:focus { + background-color: #cdcdcd; } /* Composition */ .wrap { @@ -47,8 +55,8 @@ export class SetupWizard extends LitElement { align-items: center; } /* Utilities */ - .flex-center { - justify-content: center; + .flex-end { + justify-content: end; } /* Blocks */ .wizard { @@ -91,7 +99,7 @@ export class SetupWizard extends LitElement {

${this.translations.title}

Content here -
+
From ebddb72fa9425c3b986c5c57b13385157d17a337 Mon Sep 17 00:00:00 2001 From: Nath Date: Wed, 11 Dec 2024 13:13:01 +0000 Subject: [PATCH 06/48] feat: create a kitchen sink of items --- dt-core/admin/components/setup-wizard.js | 168 +++++++++++++++++++++-- dt-core/admin/menu/menu-setup-wizard.php | 42 ++++++ 2 files changed, 196 insertions(+), 14 deletions(-) diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 1e127108d..abeb7c6d1 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -5,18 +5,29 @@ console.log('setup-wizard.js') export class SetupWizard extends LitElement { static styles = [ css` - /* Global */ :host { display: block; font-size: 18px; line-height: 1.4; } - h1, h2 { + /* Resets */ + /* Inherit fonts for inputs and buttons */ + input, button, + textarea, select { + font-family: inherit; + font-size: inherit; + } + /* Set shorter line heights on headings and interactive elements */ + h1, h2, h3, h4, + button, input, label { + line-height: 1.1; + } + /* Global */ + h1, h2, h3 { font-weight: 500; color: #3f729b; } button { - font-size: inherit; border: none; padding: 0.5rem 1.5rem; border-radius: 8px; @@ -29,6 +40,11 @@ export class SetupWizard extends LitElement { button:focus { background-color: #cdcdcd; } + select, input { + padding: 0.2em 0.5em; + border-radius: 8px; + border: 2px solid #cdcdcd; + } /* Composition */ .wrap { padding: 1rem; @@ -54,9 +70,32 @@ export class SetupWizard extends LitElement { justify-content: flex-start; align-items: center; } + .flow { + display: flex; + flex-direction: column; + justify-content: flex-start; + } + .flow > * { + margin-block: 0; + } + .flow > * + * { + margin-block-start: var(--spacing, 1rem); + } + .grid { + display: grid; + grid-gap: 1rem; + } + @supports (width: min(250px, 100%)) { + .grid { + grid-template-columns: repeat(auto-fit, minmax(min(250px, 100%), 1fr)); + } + } /* Utilities */ - .flex-end { - justify-content: end; + .ms-auto { + margin-left: auto; + } + .align-start { + align-items: flex-start; } /* Blocks */ .wizard { @@ -82,30 +121,131 @@ export class SetupWizard extends LitElement { .btn-primary:active { background-color: #366184; } + .btn-card { + padding: 1rem 2rem; + box-shadow: 2px 2px 8px 0px #ababab; + } + .input-group { + display: flex; + flex-direction: column; + gap: 0.4rem; + } + .breadcrumbs { + --gap: 6rem; + --divider-width: calc( var(--gap) / 2 ); + display: flex; + } + .breadcrumbs > * + * { + margin-left: var(--gap); + } + .breadcrumbs > * + *:before { + content: ''; + width: var(--divider-width); + position: absolute; + height: 3px; + border-radius: 10px; + background-color: #3F729B; + left: calc( ( var(--gap) + var(--divider-width) ) / -2 - 2px ); + top: calc(50% - 1px); + } + .crumb { + position: relative; + width: 16px; + height: 16px; + border-radius: 100%; + border: 2px solid #cdcdcd; + } + .crumb.complete { + background-color: #3F729B; + border-color: #3F729B; + } + .crumb.active { + outline: 5px solid #3F729B; + outline-offset: -10px; + } ` ]; + static get properties() { + return { + steps: { type: Array }, + }; + } + constructor() { super() this.translations = setupWizardShare.translations + this.steps = [] + + const url = new URL(location.href) + + this.isKitchenSink = url.searchParams.has('kitchen-sink') + } + + firstUpdated() { + if (this.steps.length === 0 && setupWizardShare && setupWizardShare.steps && setupWizardShare.steps.length !== 0) { + this.steps = setupWizardShare.steps + } } render() { return html`
-
+

${this.translations.title}

- Content here -
- - -
-
-
diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index a590c20de..bc25b7188 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -37,12 +37,18 @@ public function __construct() { remove_action( 'network_admin_notices', 'maintenance_nag', 3 ); }); dt_theme_enqueue_script( 'setup-wizard', 'dt-core/admin/components/setup-wizard.js', [], true ); + + $steps = $this->setup_wizard_steps(); + + $steps = apply_filters( 'dt_setup_wizard_steps', $steps ); + wp_localize_script( 'setup-wizard', 'setupWizardShare', [ 'translations' => [ 'title' => esc_html__( 'Disciple.Tools Setup Wizard', 'disciple_tools' ), 'next' => esc_html__( 'Next', 'disciple_tools' ), 'back' => esc_html__( 'Back', 'disciple_tools' ), ], + 'steps' => $steps, ] ); add_filter( 'script_loader_tag', [ $this, 'filter_script_loader_tag' ], 10, 2 ); } @@ -86,5 +92,41 @@ public function content() { 'First step', + 'description' => 'The first step of this amazing setup wizard', + 'config' => [ + 'options' => [ + [ + 'key' => 'blogname', + 'name' => 'Blog Name', + 'value' => 'My DT Instance', + ], + [ + 'key' => 'blogdescription', + 'name' => 'Blog Description', + 'value' => 'My DT Instance', + ], + [ + 'key' => 'admin_email', + 'name' => 'Admin Email', + 'value' => 'My DT Instance', + ], + ], + ], + ], + [ + 'name' => 'First step', + 'description' => 'The first step of this amazing setup wizard', + ], + [ + 'name' => 'First step', + 'description' => 'The first step of this amazing setup wizard', + ], + ]; + } } DT_Setup_Wizard::instance(); From 65a5a918381059485fb67a440cff1a6a2fea73bc Mon Sep 17 00:00:00 2001 From: Nath Date: Wed, 11 Dec 2024 15:43:38 +0000 Subject: [PATCH 07/48] feat: add toggleable button --- dt-core/admin/components/setup-wizard.js | 59 ++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 4 deletions(-) diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index abeb7c6d1..269b20d18 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -22,6 +22,12 @@ export class SetupWizard extends LitElement { button, input, label { line-height: 1.1; } + /* Box sizing rules */ + *, + *::before, + *::after { + box-sizing: border-box; + } /* Global */ h1, h2, h3 { font-weight: 500; @@ -44,6 +50,7 @@ export class SetupWizard extends LitElement { padding: 0.2em 0.5em; border-radius: 8px; border: 2px solid #cdcdcd; + background-color: white; } /* Composition */ .wrap { @@ -84,10 +91,14 @@ export class SetupWizard extends LitElement { .grid { display: grid; grid-gap: 1rem; + + &[size="small"] { + --column-size: 100px; + } } @supports (width: min(250px, 100%)) { .grid { - grid-template-columns: repeat(auto-fit, minmax(min(250px, 100%), 1fr)); + grid-template-columns: repeat(auto-fit, minmax(min(var(--column-size, 250px), 100%), 1fr)); } } /* Utilities */ @@ -123,13 +134,33 @@ export class SetupWizard extends LitElement { } .btn-card { padding: 1rem 2rem; - box-shadow: 2px 2px 8px 0px #ababab; + box-shadow: 1px 1px 3px 0px #ababab; } .input-group { display: flex; flex-direction: column; gap: 0.4rem; } + .toggle { + position: relative; + display: inline-block; + + input { + display: none; + } + span { + display: inline-block; + padding-block: 1rem; + background-color: #cdcdcd; + border-radius: 8px; + width: 100%; + text-align: center; + } + input:checked + span { + background-color: #4caf50; + color: white; + } + } .breadcrumbs { --gap: 6rem; --divider-width: calc( var(--gap) / 2 ); @@ -235,8 +266,28 @@ export class SetupWizard extends LitElement {

Selectable items

- -

+
+ + + + + +
` : html` Content here From 80d6b937bb9665f0c0d4bd9caeeb2cbe3b627933 Mon Sep 17 00:00:00 2001 From: Nath Date: Wed, 11 Dec 2024 15:56:57 +0000 Subject: [PATCH 08/48] feat: add basic stepper --- dt-core/admin/components/setup-wizard.js | 45 ++++++++++++++++++++++-- dt-core/admin/menu/menu-setup-wizard.php | 8 ++--- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 269b20d18..982a40ad9 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -200,6 +200,7 @@ export class SetupWizard extends LitElement { static get properties() { return { steps: { type: Array }, + currentStepNumber: { type: Number, attribute: false }, }; } @@ -208,6 +209,7 @@ export class SetupWizard extends LitElement { this.translations = setupWizardShare.translations this.steps = [] + this.currentStepNumber = 0 const url = new URL(location.href) @@ -288,12 +290,20 @@ export class SetupWizard extends LitElement { Phone
+

Stepper

+
+ ${this.renderStep()} +
+ + +
+
` : html` Content here
- - + +
` } @@ -302,5 +312,36 @@ export class SetupWizard extends LitElement { `; } + + + back() { + this.gotoStep(this.currentStepNumber - 1) + } + next() { + this.gotoStep(this.currentStepNumber + 1) + } + gotoStep(i) { + if ( i < 0 ) { + this.currentStepNumber = 0 + return + } + if ( i > this.steps.length - 1 ) { + this.currentStepNumber = this.steps.length - 1 + return + } + this.currentStepNumber = i; + } + + renderStep() { + if (this.steps.length === 0) { + return + } + const step = this.steps[this.currentStepNumber] + + return html` +

${step.name}

+

${step.description}

+ ` + } } customElements.define('setup-wizard', SetupWizard); diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index bc25b7188..484da9800 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -119,12 +119,12 @@ public function setup_wizard_steps() { ], ], [ - 'name' => 'First step', - 'description' => 'The first step of this amazing setup wizard', + 'name' => 'Second step', + 'description' => 'The second step of this amazing setup wizard', ], [ - 'name' => 'First step', - 'description' => 'The first step of this amazing setup wizard', + 'name' => 'Third step', + 'description' => 'The third step of this amazing setup wizard', ], ]; } From 8fe906c0f3a2c447bcb91b15b9e7da32b4098095 Mon Sep 17 00:00:00 2001 From: Nath Date: Wed, 11 Dec 2024 16:47:34 +0000 Subject: [PATCH 09/48] feat: create example steps --- dt-core/admin/components/setup-wizard.js | 271 +++++++++++++++-------- dt-core/admin/menu/menu-setup-wizard.php | 112 ++++++++-- 2 files changed, 273 insertions(+), 110 deletions(-) diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 982a40ad9..ebf014282 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -1,7 +1,5 @@ import {html, css, LitElement} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/core/lit-core.min.js'; -console.log('setup-wizard.js') - export class SetupWizard extends LitElement { static styles = [ css` @@ -101,6 +99,28 @@ export class SetupWizard extends LitElement { grid-template-columns: repeat(auto-fit, minmax(min(var(--column-size, 250px), 100%), 1fr)); } } + .cover { + display: flex; + flex-direction: column; + min-block-size: 90vh; + padding: 1rem; + } + + .cover > * { + margin-block: 0.5rem; + } + + .cover > :first-child:not(.content) { + margin-block-start: 0; + } + + .cover > :last-child:not(.content) { + margin-block-end: 0; + } + + .cover > .content { + margin-block-end: auto; + } /* Utilities */ .ms-auto { margin-left: auto; @@ -113,16 +133,13 @@ export class SetupWizard extends LitElement { border-radius: 12px; border: 1px solid transparent; overflow: hidden; + background-color: white; } .sidebar { background-color: grey; color: white; padding: 1rem; } - .content { - background-color: white; - padding: 1rem; - } .btn-primary { background-color: #3f729b; color: #fefefe; @@ -225,89 +242,19 @@ export class SetupWizard extends LitElement { render() { return html`
- -
-
-

${this.translations.title}

- ${ - this.isKitchenSink ? html` -
-

A cluster of buttons

-
- - -
-

A grid of button cards

-
- - - -
-

Fields

-
- - -
-
- - -
-
- - -
-

Breadcrumbs

- - -

Selectable items

-
- - - - - -
-

Stepper

-
- ${this.renderStep()} -
- - -
-
-
- ` : html` - Content here -
- - -
- ` - } -
+
+

${this.translations.title}

+ ${ + this.isKitchenSink ? this.kitchenSink() : html` +
+ ${this.renderStep()} +
+
+ + +
+ ` + }
`; @@ -341,6 +288,152 @@ export class SetupWizard extends LitElement { return html`

${step.name}

${step.description}

+ ${(step.config ?? []).map((component) => this.renderComponent(component))} + ` + } + + renderComponent(component) { + switch (component.type) { + case 'decision': + return this.renderDecision(component) + case 'options': + return this.renderOptions2(component) + case 'multi_select': + return this.renderMultiSelect(component) + default: + return '' + } + } + + renderDecision(component) { + return html` +
+ ${component.description ? html` +

${component.description}

+ ` : ''} +
+ + ${component.options && component.options.length > 0 + ? component.options.map((option) => html` + + `) : '' + } +
+
+ ` + } + renderMultiSelect(component) { + return html` +
+ ${component.description ? html` +

${component.description}

+ ` : ''} +
+ ${component.options && component.options.length > 0 + ? component.options.map((option) => html` + + `) : '' + } +
+
+ ` + } + renderOptions2(component) { + return html` +
+ ${component.description ? html` +

${component.description}

+ ` : ''} +
+ ${component.options && component.options.length > 0 + ? component.options.map((option) => html` +
+ + +
+ `) : '' + } +
+
+ ` + } + + kitchenSink() { + return html` +
+

A cluster of buttons

+
+ + +
+

A grid of button cards

+
+ + + +
+

Fields

+
+ + +
+
+ + +
+
+ + +
+

Breadcrumbs

+ + +

Selectable items

+
+ + + + + +
+

Stepper

+
+ ${this.renderStep()} +
+ + +
+
+
` } } diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index 484da9800..2656c7a0b 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -94,37 +94,107 @@ public function content() { } public function setup_wizard_steps() { + $bloginfo = get_bloginfo(); return [ [ - 'name' => 'First step', - 'description' => 'The first step of this amazing setup wizard', + 'name' => 'Choose your path', + 'description' => 'How are you planning to use DT?', 'config' => [ - 'options' => [ - [ - 'key' => 'blogname', - 'name' => 'Blog Name', - 'value' => 'My DT Instance', - ], - [ - 'key' => 'blogdescription', - 'name' => 'Blog Description', - 'value' => 'My DT Instance', - ], - [ - 'key' => 'admin_email', - 'name' => 'Admin Email', - 'value' => 'My DT Instance', + [ + 'type' => 'decision', + 'options' => [ + [ + 'key' => 'm2m', + 'name' => 'Access Ministry', + 'description' => 'Are you filtering for contacts for engagement?', + ], + [ + 'key' => 'crm', + 'name' => 'Relationship Manager', + 'description' => 'Are you needing to manage your contacts?', + ], + [ + 'key' => 'dmm', + 'name' => 'Disciple Making Movements', + 'description' => 'Are you managing multiplying groups?', + ], ], ], ], ], [ - 'name' => 'Second step', - 'description' => 'The second step of this amazing setup wizard', + 'name' => 'Site details', + 'description' => 'Fill in some site details', + 'config' => [ + [ + 'type' => 'options', + 'options' => [ + [ + 'key' => 'blogname', + 'name' => 'Site name', + 'value' => isset( $bloginfo['name'] ) ? $bloginfo['name'] : '', + ], + [ + 'key' => 'blogdescription', + 'name' => 'Site description', + 'value' => isset( $bloginfo['description'] ) ? $bloginfo['description'] : '', + ], + [ + 'key' => 'admin_email', + 'name' => 'Admin email', + 'value' => isset( $bloginfo['admin_email'] ) ? $bloginfo['admin_email'] : '', + ] + ], + ] + ], ], [ - 'name' => 'Third step', - 'description' => 'The third step of this amazing setup wizard', + 'name' => 'Field options', + 'description' => 'Based on your choices we would recommend the selected fields.', + 'config' => [ + [ + 'type' => 'multi_select', + 'description' => 'Recommended fields', + 'options' => [ + [ + 'key' => 'name', + 'name' => 'Name', + 'checked' => true, + ], + [ + 'key' => 'contact_email', + 'name' => 'Email', + 'checked' => true, + ], + [ + 'key' => 'location', + 'name' => 'Location', + 'checked' => true, + ], + [ + 'key' => 'contact_phone', + 'name' => 'Phone', + 'checked' => true, + ], + ], + ], + [ + 'type' => 'multi_select', + 'description' => 'Optional fields', + 'options' => [ + [ + 'key' => 'sources', + 'name' => 'Sources', + 'checked' => false, + ], + [ + 'key' => 'communication_channels', + 'name' => 'Communication channels', + 'checked' => false, + ], + ], + ] + ], ], ]; } From e51507f03012e8170bcb8382e962e445f4de11fe Mon Sep 17 00:00:00 2001 From: Nath Date: Fri, 13 Dec 2024 14:24:57 +0000 Subject: [PATCH 10/48] feat: change system to pass in component name into wizard for the steps --- .../admin/components/setup-wizard-controls.js | 25 +++ .../admin/components/setup-wizard-details.js | 38 ++++ .../admin/components/setup-wizard-modules.js | 38 ++++ .../components/setup-wizard-open-element.js | 7 + .../admin/components/setup-wizard-plugins.js | 38 ++++ dt-core/admin/components/setup-wizard.js | 104 +++++---- dt-core/admin/menu/menu-setup-wizard.php | 206 ++++++++++++------ 7 files changed, 338 insertions(+), 118 deletions(-) create mode 100644 dt-core/admin/components/setup-wizard-controls.js create mode 100644 dt-core/admin/components/setup-wizard-details.js create mode 100644 dt-core/admin/components/setup-wizard-modules.js create mode 100644 dt-core/admin/components/setup-wizard-open-element.js create mode 100644 dt-core/admin/components/setup-wizard-plugins.js diff --git a/dt-core/admin/components/setup-wizard-controls.js b/dt-core/admin/components/setup-wizard-controls.js new file mode 100644 index 000000000..725ce758c --- /dev/null +++ b/dt-core/admin/components/setup-wizard-controls.js @@ -0,0 +1,25 @@ +import { html } from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { OpenLitElement } from './setup-wizard-open-element.js'; + +export class SetupWizardControls extends OpenLitElement { + static get properties() { + return { + translations: { type: Object }, + }; + } + back() { + this.dispatchEvent(new CustomEvent('back')) + } + next() { + this.dispatchEvent(new CustomEvent('next')) + } + render() { + return html` +
+ + +
+ ` + } +} +customElements.define('setup-wizard-controls', SetupWizardControls); diff --git a/dt-core/admin/components/setup-wizard-details.js b/dt-core/admin/components/setup-wizard-details.js new file mode 100644 index 000000000..ae6c7ee9f --- /dev/null +++ b/dt-core/admin/components/setup-wizard-details.js @@ -0,0 +1,38 @@ +import {html, css} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { OpenLitElement } from './setup-wizard-open-element.js'; + +export class SetupWizardDetails extends OpenLitElement { + static styles = [ + css` + :host { + display: block; + } + ` + ]; + + static get properties() { + return { + step: { type: Object }, + }; + } + + back() { + this.dispatchEvent(new CustomEvent('back')) + } + next() { + this.dispatchEvent(new CustomEvent('next')) + } + + render() { + return html` +
+
Sort out details here
+ +
+ `; + } +} +customElements.define('setup-wizard-details', SetupWizardDetails); diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js new file mode 100644 index 000000000..939b43407 --- /dev/null +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -0,0 +1,38 @@ +import {html, css} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { OpenLitElement } from './setup-wizard-open-element.js'; + +export class SetupWizardModules extends OpenLitElement { + static styles = [ + css` + :host { + display: block; + } + ` + ]; + + static get properties() { + return { + step: { type: Object }, + }; + } + + back() { + this.dispatchEvent(new CustomEvent('back')) + } + next() { + this.dispatchEvent(new CustomEvent('next')) + } + + render() { + return html` +
+
Sort out modules here
+ +
+ `; + } +} +customElements.define('setup-wizard-modules', SetupWizardModules); diff --git a/dt-core/admin/components/setup-wizard-open-element.js b/dt-core/admin/components/setup-wizard-open-element.js new file mode 100644 index 000000000..6c0243ad2 --- /dev/null +++ b/dt-core/admin/components/setup-wizard-open-element.js @@ -0,0 +1,7 @@ +import { LitElement } from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; + +export class OpenLitElement extends LitElement { + createRenderRoot() { + return this + } +} diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js new file mode 100644 index 000000000..60fd81867 --- /dev/null +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -0,0 +1,38 @@ +import {html, css} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { OpenLitElement } from './setup-wizard-open-element.js'; + +export class SetupWizardPlugins extends OpenLitElement { + static styles = [ + css` + :host { + display: block; + } + ` + ]; + + static get properties() { + return { + step: { type: Object }, + }; + } + + back() { + this.dispatchEvent(new CustomEvent('back')) + } + next() { + this.dispatchEvent(new CustomEvent('next')) + } + + render() { + return html` +
+
Sort out plugins here
+ +
+ `; + } +} +customElements.define('setup-wizard-plugins', SetupWizardPlugins); diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index ebf014282..ccf0e8809 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -1,4 +1,4 @@ -import {html, css, LitElement} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/core/lit-core.min.js'; +import {html, css, LitElement, staticHtml, unsafeStatic, literal} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; export class SetupWizard extends LitElement { static styles = [ @@ -7,6 +7,7 @@ export class SetupWizard extends LitElement { display: block; font-size: 18px; line-height: 1.4; + font-family: Arial, Helvetica, sans-serif; } /* Resets */ /* Inherit fonts for inputs and buttons */ @@ -53,20 +54,7 @@ export class SetupWizard extends LitElement { /* Composition */ .wrap { padding: 1rem; - min-height: 80vh; - } - .with-sidebar { - display: flex; - flex-wrap: wrap; - gap: var(--s1); - } - .with-sidebar > :first-child { - flex-basis: 0; - flex-grow: 999; - min-inline-size: 70%; - } - .with-sidebar > :last-child { - flex-grow: 1; + min-height: 100vh; } .cluster { display: flex; @@ -75,6 +63,9 @@ export class SetupWizard extends LitElement { justify-content: flex-start; align-items: center; } + .cluster[position="end"] { + justify-content: flex-end; + } .flow { display: flex; flex-direction: column; @@ -102,8 +93,7 @@ export class SetupWizard extends LitElement { .cover { display: flex; flex-direction: column; - min-block-size: 90vh; - padding: 1rem; + min-block-size: 80vh; } .cover > * { @@ -128,12 +118,16 @@ export class SetupWizard extends LitElement { .align-start { align-items: flex-start; } + .white { + color: white; + } /* Blocks */ .wizard { border-radius: 12px; border: 1px solid transparent; overflow: hidden; background-color: white; + padding: 1rem; } .sidebar { background-color: grey; @@ -150,9 +144,16 @@ export class SetupWizard extends LitElement { background-color: #366184; } .btn-card { + background-color: #3f729b; + color: #fefefe; padding: 1rem 2rem; box-shadow: 1px 1px 3px 0px #ababab; } + .btn-card:focus, + .btn-card:hover, + .btn-card:active { + background-color: #366184; + } .input-group { display: flex; flex-direction: column; @@ -218,6 +219,7 @@ export class SetupWizard extends LitElement { return { steps: { type: Array }, currentStepNumber: { type: Number, attribute: false }, + decision: { type: String, attribute: false }, }; } @@ -242,18 +244,14 @@ export class SetupWizard extends LitElement { render() { return html`
-
+

${this.translations.title}

${ - this.isKitchenSink ? this.kitchenSink() : html` -
+ this.isKitchenSink + ? this.kitchenSink() + : html` ${this.renderStep()} -
-
- - -
- ` + ` }
@@ -273,10 +271,12 @@ export class SetupWizard extends LitElement { return } if ( i > this.steps.length - 1 ) { + /* TODO: Then we have finished the wizard and need to exit or show some completion message */ this.currentStepNumber = this.steps.length - 1 return } this.currentStepNumber = i; + console.log(this.currentStepNumber) } renderStep() { @@ -284,27 +284,17 @@ export class SetupWizard extends LitElement { return } const step = this.steps[this.currentStepNumber] + const { component } = step - return html` -

${step.name}

-

${step.description}

- ${(step.config ?? []).map((component) => this.renderComponent(component))} + return staticHtml` + <${unsafeStatic(component)} + .step=${step} + @back=${this.back} + @next=${this.next} + > ` } - renderComponent(component) { - switch (component.type) { - case 'decision': - return this.renderDecision(component) - case 'options': - return this.renderOptions2(component) - case 'multi_select': - return this.renderMultiSelect(component) - default: - return '' - } - } - renderDecision(component) { return html`
@@ -315,8 +305,8 @@ export class SetupWizard extends LitElement { ${component.options && component.options.length > 0 ? component.options.map((option) => html` - `) : '' @@ -344,7 +334,26 @@ export class SetupWizard extends LitElement {
` } - renderOptions2(component) { + renderModuleDecision(component) { + return html` +
+ ${component.description ? html` +

${component.description}

+ ` : ''} +
+ ${component.options && component.options.length > 0 + ? component.options.map((option) => html` + + `) : '' + } +
+
+ ` + } + renderFields(component) { return html`
${component.description ? html` @@ -364,6 +373,9 @@ export class SetupWizard extends LitElement { ` } + renderControls() { + } + kitchenSink() { return html`
diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index 2656c7a0b..86843a922 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -37,10 +37,11 @@ public function __construct() { remove_action( 'network_admin_notices', 'maintenance_nag', 3 ); }); dt_theme_enqueue_script( 'setup-wizard', 'dt-core/admin/components/setup-wizard.js', [], true ); - - $steps = $this->setup_wizard_steps(); - - $steps = apply_filters( 'dt_setup_wizard_steps', $steps ); + dt_theme_enqueue_script( 'setup-wizard-open-element', 'dt-core/admin/components/setup-wizard-open-element.js', [ 'setup-wizard' ], true ); + dt_theme_enqueue_script( 'setup-wizard-modules', 'dt-core/admin/components/setup-wizard-modules.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); + dt_theme_enqueue_script( 'setup-wizard-plugins', 'dt-core/admin/components/setup-wizard-plugins.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); + dt_theme_enqueue_script( 'setup-wizard-details', 'dt-core/admin/components/setup-wizard-details.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); + dt_theme_enqueue_script( 'setup-wizard-controls', 'dt-core/admin/components/setup-wizard-controls.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); wp_localize_script( 'setup-wizard', 'setupWizardShare', [ 'translations' => [ @@ -48,7 +49,8 @@ public function __construct() { 'next' => esc_html__( 'Next', 'disciple_tools' ), 'back' => esc_html__( 'Back', 'disciple_tools' ), ], - 'steps' => $steps, + 'steps' => $this->setup_wizard_steps(), + 'data' => $this->setup_wizard_data(), ] ); add_filter( 'script_loader_tag', [ $this, 'filter_script_loader_tag' ], 10, 2 ); } @@ -58,7 +60,7 @@ public function has_access_permission() { } public function filter_script_loader_tag( $tag, $handle ) { - if ( in_array( $handle, [ 'setup-wizard' ] ) ) { + if ( str_starts_with( $handle, 'setup-wizard' ) ) { $tag = preg_replace( '/(.*)(><\/script>)/', '$1 type="module"$2', $tag ); } return $tag; @@ -88,6 +90,12 @@ public function content() { ?> + + 'choose_your_path', 'name' => 'Choose your path', + 'component' => 'setup-wizard-modules', 'description' => 'How are you planning to use DT?', 'config' => [ - [ - 'type' => 'decision', - 'options' => [ - [ - 'key' => 'm2m', - 'name' => 'Access Ministry', - 'description' => 'Are you filtering for contacts for engagement?', - ], - [ - 'key' => 'crm', - 'name' => 'Relationship Manager', - 'description' => 'Are you needing to manage your contacts?', - ], - [ - 'key' => 'dmm', - 'name' => 'Disciple Making Movements', - 'description' => 'Are you managing multiplying groups?', - ], - ], - ], - ], + 'm2m', + 'crm', + 'dmm', + ] ], [ 'name' => 'Site details', 'description' => 'Fill in some site details', + 'component' => 'setup-wizard-details', 'config' => [ [ 'type' => 'options', @@ -149,54 +143,122 @@ public function setup_wizard_steps() { ], ], [ - 'name' => 'Field options', - 'description' => 'Based on your choices we would recommend the selected fields.', - 'config' => [ - [ - 'type' => 'multi_select', - 'description' => 'Recommended fields', - 'options' => [ - [ - 'key' => 'name', - 'name' => 'Name', - 'checked' => true, - ], - [ - 'key' => 'contact_email', - 'name' => 'Email', - 'checked' => true, - ], - [ - 'key' => 'location', - 'name' => 'Location', - 'checked' => true, - ], - [ - 'key' => 'contact_phone', - 'name' => 'Phone', - 'checked' => true, - ], - ], + 'name' => 'Plugins', + 'description' => 'Choose which plugins to install.', + 'component' => 'setup-wizard-plugins', + ], + ]; + + $steps = apply_filters( 'dt_setup_wizard_steps', $steps ); + + return $steps; + } + public function setup_wizard_data() : array { + $data = [ + 'use_cases' => [ + 'media' => [ + 'key' => 'media', + 'name' => 'Access Ministry', + 'description' => 'Are you filtering for contacts for engagement?', + 'recommended_modules' => [ + 'foo', + 'lorem', ], - [ - 'type' => 'multi_select', - 'description' => 'Optional fields', - 'options' => [ - [ - 'key' => 'sources', - 'name' => 'Sources', - 'checked' => false, - ], - [ - 'key' => 'communication_channels', - 'name' => 'Communication channels', - 'checked' => false, - ], - ], - ] + 'recommended_plugins' => [ + 'loremoo', + 'ipsum', + 'dolor', + 'amit', + ], + ], + 'crm' => [ + 'key' => 'crm', + 'name' => 'Relationship Manager', + 'description' => 'Are you needing to manage your contacts?', + 'recommended_modules' => [], + 'recommended_plugins' => [ + 'loremoo', + 'ipsum', + 'dolor', + 'amit', + ], + ], + 'dmm' => [ + 'key' => 'dmm', + 'name' => 'Disciple Making Movements', + 'description' => 'Are you managing multiplying groups?', + 'recommended_modules' => [ + 'bar', + 'ipsum', + 'dolor', + ], + 'recommended_plugins' => [ + 'lorem', + 'ipsum', + 'dolor', + 'amit', + ], + ], + ], + 'modules' => [ + [ + 'key' => 'ipsum', + 'name' => 'Ipsum', + 'description' => 'Track who is ipsuming who', + 'details' => [ + 'fields' => [], + 'tiles' => [], + 'workflows' => [], + ], + ], + [ + 'key' => 'dolor', + 'name' => 'Dolor', + 'description' => 'Track who has been dolored when, and by who', + ], + [ + 'key' => 'lorem', + 'name' => 'lorem', + 'description' => 'Track the lorem status of your contacts', + ], + [ + 'key' => 'foo', + 'name' => 'Foo', + 'description' => 'Track contacts: who is fooing up with who; reminders of who needs fooing up with', + ], + [ + 'key' => 'bar', + 'name' => 'Bar', + 'description' => 'Track bars of people and their lorem status', + ], + ], + 'plugins' => [ + [ + 'key' => 'lorem', + 'name' => 'lorem', + 'description' => 'Fugiat deserunt Lorem veniam et veniam cillum tempor exercitation velit ex velit cupidatat nostrud.', + ], + [ + 'key' => 'ipsum', + 'name' => 'ipsum', + 'description' => 'Mollit pariatur sit fugiat officia aliqua irure commodo nostrud et elit.', + ], + [ + 'key' => 'dolor', + 'name' => 'dolor', + 'description' => 'Esse qui fugiat irure nisi consectetur.', + ], + [ + 'key' => 'amit', + 'name' => 'amit', + 'description' => 'Consectetur consequat esse id aute commodo ea qui cillum.', ], ], ]; + + $data = apply_filters( 'dt_setup_wizard_data', $data ); + + return $data; } } DT_Setup_Wizard::instance(); From 9c28737e14569aa5846675210c98732692cfebfa Mon Sep 17 00:00:00 2001 From: Nath Date: Fri, 13 Dec 2024 15:12:08 +0000 Subject: [PATCH 11/48] feat: hide back button on first step --- dt-core/admin/components/setup-wizard-controls.js | 7 ++++++- dt-core/admin/components/setup-wizard-details.js | 2 ++ dt-core/admin/components/setup-wizard-modules.js | 2 ++ dt-core/admin/components/setup-wizard-plugins.js | 2 ++ dt-core/admin/components/setup-wizard.js | 1 + 5 files changed, 13 insertions(+), 1 deletion(-) diff --git a/dt-core/admin/components/setup-wizard-controls.js b/dt-core/admin/components/setup-wizard-controls.js index 725ce758c..62c5503a6 100644 --- a/dt-core/admin/components/setup-wizard-controls.js +++ b/dt-core/admin/components/setup-wizard-controls.js @@ -5,6 +5,7 @@ export class SetupWizardControls extends OpenLitElement { static get properties() { return { translations: { type: Object }, + hideBack: { type: Boolean }, }; } back() { @@ -16,7 +17,11 @@ export class SetupWizardControls extends OpenLitElement { render() { return html`
- + ${ + this.hideBack ? '' : html` + + ` + }
` diff --git a/dt-core/admin/components/setup-wizard-details.js b/dt-core/admin/components/setup-wizard-details.js index ae6c7ee9f..e0c5aa20a 100644 --- a/dt-core/admin/components/setup-wizard-details.js +++ b/dt-core/admin/components/setup-wizard-details.js @@ -13,6 +13,7 @@ export class SetupWizardDetails extends OpenLitElement { static get properties() { return { step: { type: Object }, + firstStep: { type: Boolean }, }; } @@ -28,6 +29,7 @@ export class SetupWizardDetails extends OpenLitElement {
Sort out details here
diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index 939b43407..3accc2196 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -13,6 +13,7 @@ export class SetupWizardModules extends OpenLitElement { static get properties() { return { step: { type: Object }, + firstStep: { type: Boolean }, }; } @@ -28,6 +29,7 @@ export class SetupWizardModules extends OpenLitElement {
Sort out modules here
diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index 60fd81867..0b5f21b4d 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -13,6 +13,7 @@ export class SetupWizardPlugins extends OpenLitElement { static get properties() { return { step: { type: Object }, + firstStep: { type: Boolean }, }; } @@ -28,6 +29,7 @@ export class SetupWizardPlugins extends OpenLitElement {
Sort out plugins here
diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index ccf0e8809..0cd5f2181 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -289,6 +289,7 @@ export class SetupWizard extends LitElement { return staticHtml` <${unsafeStatic(component)} .step=${step} + ?firstStep=${this.currentStepNumber === 0} @back=${this.back} @next=${this.next} > From 463d03ee399872d76413190326af770202bd31d9 Mon Sep 17 00:00:00 2001 From: Nath Date: Fri, 13 Dec 2024 16:41:11 +0000 Subject: [PATCH 12/48] feat: add stages to the module step --- .../admin/components/setup-wizard-modules.js | 94 ++++++++++++++++++- dt-core/admin/components/setup-wizard.js | 70 +++++++------- dt-core/admin/menu/menu-setup-wizard.php | 2 +- 3 files changed, 123 insertions(+), 43 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index 3accc2196..5fa4fab20 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -14,22 +14,108 @@ export class SetupWizardModules extends OpenLitElement { return { step: { type: Object }, firstStep: { type: Boolean }, + stage: { type: String, attribute: false }, + useCases: { type: Array, attribute: false }, + option: { type: Object, attribute: false }, }; } + constructor() { + super() + + this.stage = 'prompt' + this.data = setupWizardShare.data + this.useCases = [] + this.option = {} + } + + firstUpdated() { + /* Reduce the keys down to ones that exist in the details list of use cases */ + const useCaseKeys = this.step.config.reduce((keys, key) => { + if (this.data.use_cases[key]) { + return [ + ...keys, + key + ] + } + return keys + }, []) + this.useCases = useCaseKeys.map((useCaseKey) => this.data.use_cases[useCaseKey]) + + console.log(useCaseKeys, this.useCases) + } + back() { - this.dispatchEvent(new CustomEvent('back')) + switch (this.stage) { + case 'follow-up': + this.stage = 'work' + break; + case 'work': + this.stage = 'prompt' + break + case 'prompt': + this.dispatchEvent(new CustomEvent('back')) + break; + } } next() { - this.dispatchEvent(new CustomEvent('next')) + switch (this.stage) { + case 'prompt': + this.stage = 'work' + break; + case 'work': + /* TODO: fire off to the API here */ + this.stage = 'follow-up' + break + case 'follow-up': + this.dispatchEvent(new CustomEvent('next')) + break; + } + } + + selectOption(option) { + this.option = option } render() { return html`
-
Sort out modules here
+
+ ${ + this.stage === 'prompt' ? html` +

Time to customize what fields are available.

+

In the next step you will be able to choose between some common use cases of Disciple.Tools

+

You will still be able to customize to your particular use case.

+ ` : '' + } + ${ + this.stage === 'work' ? html` +

Choose a use case

+

Choose one of these use cases to tailor what parts of Disciple.Tools to turn on.

+

You can fine tune those choices further to your own needs.

+
+
+ ${this.useCases && this.useCases.length > 0 + ? this.useCases.map((option) => html` + + `) : '' + } +
+
+ ` : '' + } + ${ + this.stage === 'follow-up' ? html` +

Your choices have been implemented

+

You can make further changes to the way D.T. works in the 'Settings (DT)' section of the Wordpress admin.

+ ` : '' + } +
diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 0cd5f2181..58500efb0 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -8,6 +8,12 @@ export class SetupWizard extends LitElement { font-size: 18px; line-height: 1.4; font-family: Arial, Helvetica, sans-serif; + --primary-color: #3f729b; + --primary-hover-color: #366184; + --secondary-color: #4caf50; + --default-color: #efefef; + --default-hover-color: #cdcdcd; + --default-dark: #ababab; } /* Resets */ /* Inherit fonts for inputs and buttons */ @@ -30,25 +36,25 @@ export class SetupWizard extends LitElement { /* Global */ h1, h2, h3 { font-weight: 500; - color: #3f729b; + color: var(--primary-color); } button { border: none; padding: 0.5rem 1.5rem; border-radius: 8px; cursor: pointer; - background-color: #efefef; + background-color: var(--default-color); transition: background-color 120ms linear; } button:hover, button:active, button:focus { - background-color: #cdcdcd; + background-color: var(--default-hover-color); } select, input { padding: 0.2em 0.5em; border-radius: 8px; - border: 2px solid #cdcdcd; + border: 2px solid var(--default-hover-color); background-color: white; } /* Composition */ @@ -135,24 +141,32 @@ export class SetupWizard extends LitElement { padding: 1rem; } .btn-primary { - background-color: #3f729b; - color: #fefefe; + background-color: var(--primary-color); + color: var(--default-color); } .btn-primary:hover, .btn-primary:focus, .btn-primary:active { - background-color: #366184; + background-color: var(--primary-hover-color); } .btn-card { - background-color: #3f729b; - color: #fefefe; + background-color: var(--primary-color); + color: var(--default-color); padding: 1rem 2rem; - box-shadow: 1px 1px 3px 0px #ababab; + box-shadow: 1px 1px 3px 0px var(--default-dark); + } + .btn-card.selected { + background-color: var(--secondary-color); + } + .btn-card.selected:focus, + .btn-card.selected:hover, + .btn-card.selected:active { + background-color: var(--secondary-color); } .btn-card:focus, .btn-card:hover, .btn-card:active { - background-color: #366184; + background-color: var(--primary-hover-color); } .input-group { display: flex; @@ -169,13 +183,13 @@ export class SetupWizard extends LitElement { span { display: inline-block; padding-block: 1rem; - background-color: #cdcdcd; + background-color: var(--default-dark); border-radius: 8px; width: 100%; text-align: center; } input:checked + span { - background-color: #4caf50; + background-color: var(--secondary-color); color: white; } } @@ -193,7 +207,7 @@ export class SetupWizard extends LitElement { position: absolute; height: 3px; border-radius: 10px; - background-color: #3F729B; + background-color: var(--primary); left: calc( ( var(--gap) + var(--divider-width) ) / -2 - 2px ); top: calc(50% - 1px); } @@ -202,14 +216,14 @@ export class SetupWizard extends LitElement { width: 16px; height: 16px; border-radius: 100%; - border: 2px solid #cdcdcd; + border: 2px solid var(--default-hover-color); } .crumb.complete { - background-color: #3F729B; - border-color: #3F729B; + background-color: var(--primary); + border-color: var(--primary); } .crumb.active { - outline: 5px solid #3F729B; + outline: 5px solid var(--primary); outline-offset: -10px; } ` @@ -296,26 +310,6 @@ export class SetupWizard extends LitElement { ` } - renderDecision(component) { - return html` -
- ${component.description ? html` -

${component.description}

- ` : ''} -
- - ${component.options && component.options.length > 0 - ? component.options.map((option) => html` - - `) : '' - } -
-
- ` - } renderMultiSelect(component) { return html`
diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index 86843a922..fd10562a2 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -110,7 +110,7 @@ public function setup_wizard_steps() { 'component' => 'setup-wizard-modules', 'description' => 'How are you planning to use DT?', 'config' => [ - 'm2m', + 'media', 'crm', 'dmm', ] From a756693f11fcef7b510d23fd11671785e133b51a Mon Sep 17 00:00:00 2001 From: corsac Date: Mon, 16 Dec 2024 10:09:27 +0100 Subject: [PATCH 13/48] Fix enqueue and syntax errors --- dt-core/admin/components/setup-wizard-modules.js | 2 +- dt-core/admin/components/setup-wizard.js | 6 +++--- dt-core/admin/menu/menu-setup-wizard.php | 6 +++++- package.json | 1 + 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index 5fa4fab20..a0b5e1027 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -24,7 +24,7 @@ export class SetupWizardModules extends OpenLitElement { super() this.stage = 'prompt' - this.data = setupWizardShare.data + this.data = window.setupWizardShare.data this.useCases = [] this.option = {} } diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 58500efb0..4801a083a 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -240,7 +240,7 @@ export class SetupWizard extends LitElement { constructor() { super() - this.translations = setupWizardShare.translations + this.translations = window.setupWizardShare.translations this.steps = [] this.currentStepNumber = 0 @@ -250,8 +250,8 @@ export class SetupWizard extends LitElement { } firstUpdated() { - if (this.steps.length === 0 && setupWizardShare && setupWizardShare.steps && setupWizardShare.steps.length !== 0) { - this.steps = setupWizardShare.steps + if (this.steps.length === 0 && window.setupWizardShare && window.setupWizardShare.steps && window.setupWizardShare.steps.length !== 0) { + this.steps = window.setupWizardShare.steps } } diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index fd10562a2..afe6c27eb 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -36,6 +36,11 @@ public function __construct() { remove_action( 'network_admin_notices', 'update_nag', 3 ); remove_action( 'network_admin_notices', 'maintenance_nag', 3 ); }); + add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); + add_filter( 'script_loader_tag', [ $this, 'filter_script_loader_tag' ], 10, 2 ); + } + + public function enqueue_scripts(){ dt_theme_enqueue_script( 'setup-wizard', 'dt-core/admin/components/setup-wizard.js', [], true ); dt_theme_enqueue_script( 'setup-wizard-open-element', 'dt-core/admin/components/setup-wizard-open-element.js', [ 'setup-wizard' ], true ); dt_theme_enqueue_script( 'setup-wizard-modules', 'dt-core/admin/components/setup-wizard-modules.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); @@ -52,7 +57,6 @@ public function __construct() { 'steps' => $this->setup_wizard_steps(), 'data' => $this->setup_wizard_data(), ] ); - add_filter( 'script_loader_tag', [ $this, 'filter_script_loader_tag' ], 10, 2 ); } public function has_access_permission() { diff --git a/package.json b/package.json index cc85c52ba..038520b45 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "author": "Disciple.Tools", "license": "GPL-2.0-or-later", "homepage": "https://disciple.tools", + "type": "module", "devDependencies": { "@babel/eslint-parser": "^7.18.2", "@babel/preset-env": "^7.24.4", From a0bb92dce9a9f10bc2bcec7d29779cb10267fb48 Mon Sep 17 00:00:00 2001 From: corsac Date: Mon, 16 Dec 2024 10:48:20 +0100 Subject: [PATCH 14/48] Run prettier --- .../admin/components/setup-wizard-controls.js | 52 +- .../admin/components/setup-wizard-details.js | 67 +- .../admin/components/setup-wizard-modules.js | 244 ++--- .../components/setup-wizard-open-element.js | 6 +- .../admin/components/setup-wizard-plugins.js | 67 +- dt-core/admin/components/setup-wizard.js | 857 +++++++++--------- 6 files changed, 678 insertions(+), 615 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-controls.js b/dt-core/admin/components/setup-wizard-controls.js index 62c5503a6..441ce9b68 100644 --- a/dt-core/admin/components/setup-wizard-controls.js +++ b/dt-core/admin/components/setup-wizard-controls.js @@ -2,29 +2,33 @@ import { html } from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min import { OpenLitElement } from './setup-wizard-open-element.js'; export class SetupWizardControls extends OpenLitElement { - static get properties() { - return { - translations: { type: Object }, - hideBack: { type: Boolean }, - }; - } - back() { - this.dispatchEvent(new CustomEvent('back')) - } - next() { - this.dispatchEvent(new CustomEvent('next')) - } - render() { - return html` -
- ${ - this.hideBack ? '' : html` - - ` - } - -
- ` - } + static get properties() { + return { + translations: { type: Object }, + hideBack: { type: Boolean }, + }; + } + back() { + this.dispatchEvent(new CustomEvent('back')); + } + next() { + this.dispatchEvent(new CustomEvent('next')); + } + render() { + return html` +
+ ${this.hideBack + ? '' + : html` + + `} + +
+ `; + } } customElements.define('setup-wizard-controls', SetupWizardControls); diff --git a/dt-core/admin/components/setup-wizard-details.js b/dt-core/admin/components/setup-wizard-details.js index e0c5aa20a..dd61f5026 100644 --- a/dt-core/admin/components/setup-wizard-details.js +++ b/dt-core/admin/components/setup-wizard-details.js @@ -1,40 +1,43 @@ -import {html, css} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { + html, + css, +} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; import { OpenLitElement } from './setup-wizard-open-element.js'; export class SetupWizardDetails extends OpenLitElement { - static styles = [ - css` - :host { - display: block; - } - ` - ]; + static styles = [ + css` + :host { + display: block; + } + `, + ]; - static get properties() { - return { - step: { type: Object }, - firstStep: { type: Boolean }, - }; - } + static get properties() { + return { + step: { type: Object }, + firstStep: { type: Boolean }, + }; + } - back() { - this.dispatchEvent(new CustomEvent('back')) - } - next() { - this.dispatchEvent(new CustomEvent('next')) - } + back() { + this.dispatchEvent(new CustomEvent('back')); + } + next() { + this.dispatchEvent(new CustomEvent('next')); + } - render() { - return html` -
-
Sort out details here
- -
- `; - } + render() { + return html` +
+
Sort out details here
+ +
+ `; + } } customElements.define('setup-wizard-details', SetupWizardDetails); diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index a0b5e1027..3a77e6110 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -1,126 +1,150 @@ -import {html, css} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { + html, + css, +} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; import { OpenLitElement } from './setup-wizard-open-element.js'; export class SetupWizardModules extends OpenLitElement { - static styles = [ - css` - :host { - display: block; - } - ` - ]; + static styles = [ + css` + :host { + display: block; + } + `, + ]; - static get properties() { - return { - step: { type: Object }, - firstStep: { type: Boolean }, - stage: { type: String, attribute: false }, - useCases: { type: Array, attribute: false }, - option: { type: Object, attribute: false }, - }; - } + static get properties() { + return { + step: { type: Object }, + firstStep: { type: Boolean }, + stage: { type: String, attribute: false }, + useCases: { type: Array, attribute: false }, + option: { type: Object, attribute: false }, + }; + } - constructor() { - super() + constructor() { + super(); - this.stage = 'prompt' - this.data = window.setupWizardShare.data - this.useCases = [] - this.option = {} - } + this.stage = 'prompt'; + this.data = window.setupWizardShare.data; + this.useCases = []; + this.option = {}; + } - firstUpdated() { - /* Reduce the keys down to ones that exist in the details list of use cases */ - const useCaseKeys = this.step.config.reduce((keys, key) => { - if (this.data.use_cases[key]) { - return [ - ...keys, - key - ] - } - return keys - }, []) - this.useCases = useCaseKeys.map((useCaseKey) => this.data.use_cases[useCaseKey]) + firstUpdated() { + /* Reduce the keys down to ones that exist in the details list of use cases */ + const useCaseKeys = this.step.config.reduce((keys, key) => { + if (this.data.use_cases[key]) { + return [...keys, key]; + } + return keys; + }, []); + this.useCases = useCaseKeys.map( + (useCaseKey) => this.data.use_cases[useCaseKey], + ); - console.log(useCaseKeys, this.useCases) - } + console.log(useCaseKeys, this.useCases); + } - back() { - switch (this.stage) { - case 'follow-up': - this.stage = 'work' - break; - case 'work': - this.stage = 'prompt' - break - case 'prompt': - this.dispatchEvent(new CustomEvent('back')) - break; - } + back() { + switch (this.stage) { + case 'follow-up': + this.stage = 'work'; + break; + case 'work': + this.stage = 'prompt'; + break; + case 'prompt': + this.dispatchEvent(new CustomEvent('back')); + break; } - next() { - switch (this.stage) { - case 'prompt': - this.stage = 'work' - break; - case 'work': - /* TODO: fire off to the API here */ - this.stage = 'follow-up' - break - case 'follow-up': - this.dispatchEvent(new CustomEvent('next')) - break; - } + } + next() { + switch (this.stage) { + case 'prompt': + this.stage = 'work'; + break; + case 'work': + /* TODO: fire off to the API here */ + this.stage = 'follow-up'; + break; + case 'follow-up': + this.dispatchEvent(new CustomEvent('next')); + break; } + } - selectOption(option) { - this.option = option - } + selectOption(option) { + this.option = option; + } - render() { - return html` -
-
- ${ - this.stage === 'prompt' ? html` -

Time to customize what fields are available.

-

In the next step you will be able to choose between some common use cases of Disciple.Tools

-

You will still be able to customize to your particular use case.

- ` : '' - } - ${ - this.stage === 'work' ? html` -

Choose a use case

-

Choose one of these use cases to tailor what parts of Disciple.Tools to turn on.

-

You can fine tune those choices further to your own needs.

-
-
- ${this.useCases && this.useCases.length > 0 - ? this.useCases.map((option) => html` - - `) : '' - } -
-
- ` : '' - } - ${ - this.stage === 'follow-up' ? html` -

Your choices have been implemented

-

You can make further changes to the way D.T. works in the 'Settings (DT)' section of the Wordpress admin.

- ` : '' - } + render() { + return html` +
+
+ ${this.stage === 'prompt' + ? html` +

Time to customize what fields are available.

+

+ In the next step you will be able to choose between some + common use cases of Disciple.Tools +

+

+ You will still be able to customize to your particular use + case. +

+ ` + : ''} + ${this.stage === 'work' + ? html` +

Choose a use case

+

+ Choose one of these use cases to tailor what parts of + Disciple.Tools to turn on. +

+

+ You can fine tune those choices further to your own needs. +

+
+
+ ${this.useCases && this.useCases.length > 0 + ? this.useCases.map( + (option) => html` + + `, + ) + : ''} +
- -
- `; - } + ` + : ''} + ${this.stage === 'follow-up' + ? html` +

Your choices have been implemented

+

+ You can make further changes to the way D.T. works in the + 'Settings (DT)' section of the Wordpress admin. +

+ ` + : ''} +
+ +
+ `; + } } customElements.define('setup-wizard-modules', SetupWizardModules); diff --git a/dt-core/admin/components/setup-wizard-open-element.js b/dt-core/admin/components/setup-wizard-open-element.js index 6c0243ad2..cd1c45d7b 100644 --- a/dt-core/admin/components/setup-wizard-open-element.js +++ b/dt-core/admin/components/setup-wizard-open-element.js @@ -1,7 +1,7 @@ import { LitElement } from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; export class OpenLitElement extends LitElement { - createRenderRoot() { - return this - } + createRenderRoot() { + return this; + } } diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index 0b5f21b4d..44b6f6196 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -1,40 +1,43 @@ -import {html, css} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { + html, + css, +} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; import { OpenLitElement } from './setup-wizard-open-element.js'; export class SetupWizardPlugins extends OpenLitElement { - static styles = [ - css` - :host { - display: block; - } - ` - ]; + static styles = [ + css` + :host { + display: block; + } + `, + ]; - static get properties() { - return { - step: { type: Object }, - firstStep: { type: Boolean }, - }; - } + static get properties() { + return { + step: { type: Object }, + firstStep: { type: Boolean }, + }; + } - back() { - this.dispatchEvent(new CustomEvent('back')) - } - next() { - this.dispatchEvent(new CustomEvent('next')) - } + back() { + this.dispatchEvent(new CustomEvent('back')); + } + next() { + this.dispatchEvent(new CustomEvent('next')); + } - render() { - return html` -
-
Sort out plugins here
- -
- `; - } + render() { + return html` +
+
Sort out plugins here
+ +
+ `; + } } customElements.define('setup-wizard-plugins', SetupWizardPlugins); diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 4801a083a..0e57b07dd 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -1,447 +1,476 @@ -import {html, css, LitElement, staticHtml, unsafeStatic, literal} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { + html, + css, + LitElement, + staticHtml, + unsafeStatic, + literal, +} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; export class SetupWizard extends LitElement { - static styles = [ - css` - :host { - display: block; - font-size: 18px; - line-height: 1.4; - font-family: Arial, Helvetica, sans-serif; - --primary-color: #3f729b; - --primary-hover-color: #366184; - --secondary-color: #4caf50; - --default-color: #efefef; - --default-hover-color: #cdcdcd; - --default-dark: #ababab; - } - /* Resets */ - /* Inherit fonts for inputs and buttons */ - input, button, - textarea, select { - font-family: inherit; - font-size: inherit; - } - /* Set shorter line heights on headings and interactive elements */ - h1, h2, h3, h4, - button, input, label { - line-height: 1.1; - } - /* Box sizing rules */ - *, - *::before, - *::after { - box-sizing: border-box; - } - /* Global */ - h1, h2, h3 { - font-weight: 500; - color: var(--primary-color); - } - button { - border: none; - padding: 0.5rem 1.5rem; - border-radius: 8px; - cursor: pointer; - background-color: var(--default-color); - transition: background-color 120ms linear; - } - button:hover, - button:active, - button:focus { - background-color: var(--default-hover-color); - } - select, input { - padding: 0.2em 0.5em; - border-radius: 8px; - border: 2px solid var(--default-hover-color); - background-color: white; - } - /* Composition */ - .wrap { - padding: 1rem; - min-height: 100vh; - } - .cluster { - display: flex; - flex-wrap: wrap; - gap: var(--space, 1rem); - justify-content: flex-start; - align-items: center; - } - .cluster[position="end"] { - justify-content: flex-end; - } - .flow { - display: flex; - flex-direction: column; - justify-content: flex-start; - } - .flow > * { - margin-block: 0; - } - .flow > * + * { - margin-block-start: var(--spacing, 1rem); - } - .grid { - display: grid; - grid-gap: 1rem; + static styles = [ + css` + :host { + display: block; + font-size: 18px; + line-height: 1.4; + font-family: Arial, Helvetica, sans-serif; + --primary-color: #3f729b; + --primary-hover-color: #366184; + --secondary-color: #4caf50; + --default-color: #efefef; + --default-hover-color: #cdcdcd; + --default-dark: #ababab; + } + /* Resets */ + /* Inherit fonts for inputs and buttons */ + input, + button, + textarea, + select { + font-family: inherit; + font-size: inherit; + } + /* Set shorter line heights on headings and interactive elements */ + h1, + h2, + h3, + h4, + button, + input, + label { + line-height: 1.1; + } + /* Box sizing rules */ + *, + *::before, + *::after { + box-sizing: border-box; + } + /* Global */ + h1, + h2, + h3 { + font-weight: 500; + color: var(--primary-color); + } + button { + border: none; + padding: 0.5rem 1.5rem; + border-radius: 8px; + cursor: pointer; + background-color: var(--default-color); + transition: background-color 120ms linear; + } + button:hover, + button:active, + button:focus { + background-color: var(--default-hover-color); + } + select, + input { + padding: 0.2em 0.5em; + border-radius: 8px; + border: 2px solid var(--default-hover-color); + background-color: white; + } + /* Composition */ + .wrap { + padding: 1rem; + min-height: 100vh; + } + .cluster { + display: flex; + flex-wrap: wrap; + gap: var(--space, 1rem); + justify-content: flex-start; + align-items: center; + } + .cluster[position='end'] { + justify-content: flex-end; + } + .flow { + display: flex; + flex-direction: column; + justify-content: flex-start; + } + .flow > * { + margin-block: 0; + } + .flow > * + * { + margin-block-start: var(--spacing, 1rem); + } + .grid { + display: grid; + grid-gap: 1rem; - &[size="small"] { - --column-size: 100px; - } - } - @supports (width: min(250px, 100%)) { - .grid { - grid-template-columns: repeat(auto-fit, minmax(min(var(--column-size, 250px), 100%), 1fr)); - } - } - .cover { - display: flex; - flex-direction: column; - min-block-size: 80vh; - } - - .cover > * { - margin-block: 0.5rem; - } + &[size='small'] { + --column-size: 100px; + } + } + @supports (width: min(250px, 100%)) { + .grid { + grid-template-columns: repeat( + auto-fit, + minmax(min(var(--column-size, 250px), 100%), 1fr) + ); + } + } + .cover { + display: flex; + flex-direction: column; + min-block-size: 80vh; + } - .cover > :first-child:not(.content) { - margin-block-start: 0; - } + .cover > * { + margin-block: 0.5rem; + } - .cover > :last-child:not(.content) { - margin-block-end: 0; - } + .cover > :first-child:not(.content) { + margin-block-start: 0; + } - .cover > .content { - margin-block-end: auto; - } - /* Utilities */ - .ms-auto { - margin-left: auto; - } - .align-start { - align-items: flex-start; - } - .white { - color: white; - } - /* Blocks */ - .wizard { - border-radius: 12px; - border: 1px solid transparent; - overflow: hidden; - background-color: white; - padding: 1rem; - } - .sidebar { - background-color: grey; - color: white; - padding: 1rem; - } - .btn-primary { - background-color: var(--primary-color); - color: var(--default-color); - } - .btn-primary:hover, - .btn-primary:focus, - .btn-primary:active { - background-color: var(--primary-hover-color); - } - .btn-card { - background-color: var(--primary-color); - color: var(--default-color); - padding: 1rem 2rem; - box-shadow: 1px 1px 3px 0px var(--default-dark); - } - .btn-card.selected { - background-color: var(--secondary-color); - } - .btn-card.selected:focus, - .btn-card.selected:hover, - .btn-card.selected:active { - background-color: var(--secondary-color); - } - .btn-card:focus, - .btn-card:hover, - .btn-card:active { - background-color: var(--primary-hover-color); - } - .input-group { - display: flex; - flex-direction: column; - gap: 0.4rem; - } - .toggle { - position: relative; - display: inline-block; + .cover > :last-child:not(.content) { + margin-block-end: 0; + } - input { - display: none; - } - span { - display: inline-block; - padding-block: 1rem; - background-color: var(--default-dark); - border-radius: 8px; - width: 100%; - text-align: center; - } - input:checked + span { - background-color: var(--secondary-color); - color: white; - } - } - .breadcrumbs { - --gap: 6rem; - --divider-width: calc( var(--gap) / 2 ); - display: flex; - } - .breadcrumbs > * + * { - margin-left: var(--gap); - } - .breadcrumbs > * + *:before { - content: ''; - width: var(--divider-width); - position: absolute; - height: 3px; - border-radius: 10px; - background-color: var(--primary); - left: calc( ( var(--gap) + var(--divider-width) ) / -2 - 2px ); - top: calc(50% - 1px); - } - .crumb { - position: relative; - width: 16px; - height: 16px; - border-radius: 100%; - border: 2px solid var(--default-hover-color); - } - .crumb.complete { - background-color: var(--primary); - border-color: var(--primary); - } - .crumb.active { - outline: 5px solid var(--primary); - outline-offset: -10px; - } - ` - ]; + .cover > .content { + margin-block-end: auto; + } + /* Utilities */ + .ms-auto { + margin-left: auto; + } + .align-start { + align-items: flex-start; + } + .white { + color: white; + } + /* Blocks */ + .wizard { + border-radius: 12px; + border: 1px solid transparent; + overflow: hidden; + background-color: white; + padding: 1rem; + } + .sidebar { + background-color: grey; + color: white; + padding: 1rem; + } + .btn-primary { + background-color: var(--primary-color); + color: var(--default-color); + } + .btn-primary:hover, + .btn-primary:focus, + .btn-primary:active { + background-color: var(--primary-hover-color); + } + .btn-card { + background-color: var(--primary-color); + color: var(--default-color); + padding: 1rem 2rem; + box-shadow: 1px 1px 3px 0px var(--default-dark); + } + .btn-card.selected { + background-color: var(--secondary-color); + } + .btn-card.selected:focus, + .btn-card.selected:hover, + .btn-card.selected:active { + background-color: var(--secondary-color); + } + .btn-card:focus, + .btn-card:hover, + .btn-card:active { + background-color: var(--primary-hover-color); + } + .input-group { + display: flex; + flex-direction: column; + gap: 0.4rem; + } + .toggle { + position: relative; + display: inline-block; - static get properties() { - return { - steps: { type: Array }, - currentStepNumber: { type: Number, attribute: false }, - decision: { type: String, attribute: false }, - }; - } + input { + display: none; + } + span { + display: inline-block; + padding-block: 1rem; + background-color: var(--default-dark); + border-radius: 8px; + width: 100%; + text-align: center; + } + input:checked + span { + background-color: var(--secondary-color); + color: white; + } + } + .breadcrumbs { + --gap: 6rem; + --divider-width: calc(var(--gap) / 2); + display: flex; + } + .breadcrumbs > * + * { + margin-left: var(--gap); + } + .breadcrumbs > * + *:before { + content: ''; + width: var(--divider-width); + position: absolute; + height: 3px; + border-radius: 10px; + background-color: var(--primary); + left: calc((var(--gap) + var(--divider-width)) / -2 - 2px); + top: calc(50% - 1px); + } + .crumb { + position: relative; + width: 16px; + height: 16px; + border-radius: 100%; + border: 2px solid var(--default-hover-color); + } + .crumb.complete { + background-color: var(--primary); + border-color: var(--primary); + } + .crumb.active { + outline: 5px solid var(--primary); + outline-offset: -10px; + } + `, + ]; - constructor() { - super() + static get properties() { + return { + steps: { type: Array }, + currentStepNumber: { type: Number, attribute: false }, + decision: { type: String, attribute: false }, + }; + } - this.translations = window.setupWizardShare.translations - this.steps = [] - this.currentStepNumber = 0 + constructor() { + super(); - const url = new URL(location.href) + this.translations = window.setupWizardShare.translations; + this.steps = []; + this.currentStepNumber = 0; - this.isKitchenSink = url.searchParams.has('kitchen-sink') - } + const url = new URL(location.href); - firstUpdated() { - if (this.steps.length === 0 && window.setupWizardShare && window.setupWizardShare.steps && window.setupWizardShare.steps.length !== 0) { - this.steps = window.setupWizardShare.steps - } - } + this.isKitchenSink = url.searchParams.has('kitchen-sink'); + } - render() { - return html` -
-
-

${this.translations.title}

- ${ - this.isKitchenSink - ? this.kitchenSink() - : html` - ${this.renderStep()} - ` - } -
-
- `; + firstUpdated() { + if ( + this.steps.length === 0 && + window.setupWizardShare && + window.setupWizardShare.steps && + window.setupWizardShare.steps.length !== 0 + ) { + this.steps = window.setupWizardShare.steps; } + } + render() { + return html` +
+
+

${this.translations.title}

+ ${this.isKitchenSink + ? this.kitchenSink() + : html` ${this.renderStep()} `} +
+
+ `; + } - back() { - this.gotoStep(this.currentStepNumber - 1) + back() { + this.gotoStep(this.currentStepNumber - 1); + } + next() { + this.gotoStep(this.currentStepNumber + 1); + } + gotoStep(i) { + if (i < 0) { + this.currentStepNumber = 0; + return; } - next() { - this.gotoStep(this.currentStepNumber + 1) - } - gotoStep(i) { - if ( i < 0 ) { - this.currentStepNumber = 0 - return - } - if ( i > this.steps.length - 1 ) { - /* TODO: Then we have finished the wizard and need to exit or show some completion message */ - this.currentStepNumber = this.steps.length - 1 - return - } - this.currentStepNumber = i; - console.log(this.currentStepNumber) + if (i > this.steps.length - 1) { + /* TODO: Then we have finished the wizard and need to exit or show some completion message */ + this.currentStepNumber = this.steps.length - 1; + return; } + this.currentStepNumber = i; + console.log(this.currentStepNumber); + } - renderStep() { - if (this.steps.length === 0) { - return - } - const step = this.steps[this.currentStepNumber] - const { component } = step + renderStep() { + if (this.steps.length === 0) { + return; + } + const step = this.steps[this.currentStepNumber]; + const { component } = step; - return staticHtml` + return staticHtml` <${unsafeStatic(component)} .step=${step} ?firstStep=${this.currentStepNumber === 0} @back=${this.back} @next=${this.next} > - ` - } + `; + } - renderMultiSelect(component) { - return html` -
- ${component.description ? html` -

${component.description}

- ` : ''} -
- ${component.options && component.options.length > 0 - ? component.options.map((option) => html` - - `) : '' - } -
-
- ` - } - renderModuleDecision(component) { - return html` -
- ${component.description ? html` -

${component.description}

- ` : ''} -
- ${component.options && component.options.length > 0 - ? component.options.map((option) => html` - - `) : '' - } -
-
- ` - } - renderFields(component) { - return html` -
- ${component.description ? html` -

${component.description}

- ` : ''} -
- ${component.options && component.options.length > 0 - ? component.options.map((option) => html` -
- - -
- `) : '' - } -
-
- ` - } + renderMultiSelect(component) { + return html` +
+ ${component.description ? html`

${component.description}

` : ''} +
+ ${component.options && component.options.length > 0 + ? component.options.map( + (option) => html` + + `, + ) + : ''} +
+
+ `; + } + renderModuleDecision(component) { + return html` +
+ ${component.description ? html`

${component.description}

` : ''} +
+ ${component.options && component.options.length > 0 + ? component.options.map( + (option) => html` + + `, + ) + : ''} +
+
+ `; + } + renderFields(component) { + return html` +
+ ${component.description ? html`

${component.description}

` : ''} +
+ ${component.options && component.options.length > 0 + ? component.options.map( + (option) => html` +
+ + +
+ `, + ) + : ''} +
+
+ `; + } - renderControls() { - } + renderControls() {} - kitchenSink() { - return html` -
-

A cluster of buttons

-
- - -
-

A grid of button cards

-
- - - -
-

Fields

-
- - -
-
- - -
-
- - -
-

Breadcrumbs

- + kitchenSink() { + return html` +
+

A cluster of buttons

+
+ + +
+

A grid of button cards

+
+ + + +
+

Fields

+
+ + +
+
+ + +
+
+ + +
+

Breadcrumbs

+ -

Selectable items

-
- - - - - -
-

Stepper

-
- ${this.renderStep()} -
- - -
-
-
- ` - } +

Selectable items

+
+ + + + + +
+

Stepper

+
+ ${this.renderStep()} +
+ + +
+
+
+ `; + } } customElements.define('setup-wizard', SetupWizard); From bb601c03dfac013dea721367fcc6f2a2b3202ab2 Mon Sep 17 00:00:00 2001 From: corsac Date: Mon, 16 Dec 2024 10:52:08 +0100 Subject: [PATCH 15/48] revert module type in package.json --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 038520b45..cc85c52ba 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "author": "Disciple.Tools", "license": "GPL-2.0-or-later", "homepage": "https://disciple.tools", - "type": "module", "devDependencies": { "@babel/eslint-parser": "^7.18.2", "@babel/preset-env": "^7.24.4", From ac2c52060d9fc083b2c0fb53324434c51cb666ff Mon Sep 17 00:00:00 2001 From: corsac Date: Mon, 16 Dec 2024 11:28:08 +0100 Subject: [PATCH 16/48] rebuild styles --- dt-assets/build/css/style.min.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dt-assets/build/css/style.min.css b/dt-assets/build/css/style.min.css index 6d4f907b9..6850bff24 100644 --- a/dt-assets/build/css/style.min.css +++ b/dt-assets/build/css/style.min.css @@ -1,2 +1,2 @@ @charset "UTF-8";.image-replacement{overflow:hidden;text-indent:100%;white-space:nowrap}span.amp{font-family:Baskerville,Goudy Old Style,Palatino,Book Antiqua,serif!important;font-style:italic}@media print,screen and (min-width:40em){.reveal,.reveal.large,.reveal.small,.reveal.tiny{left:auto;margin:0 auto;right:auto}} -/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}[data-whatinput=mouse] *,[data-whatinput=mouse] :focus,[data-whatinput=touch] *,[data-whatinput=touch] :focus,[data-whatintent=mouse] *,[data-whatintent=mouse] :focus,[data-whatintent=touch] *,[data-whatintent=touch] :focus{outline:none}[draggable=false]{-webkit-touch-callout:none;-webkit-user-select:none}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:.9375rem}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}body{background:#fefefe;color:#0a0a0a;font-family:Helvetica,Arial,sans-serif;font-weight:300;line-height:1.5;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;height:auto;max-width:100%;vertical-align:middle;-ms-interpolation-mode:bicubic}textarea{border-radius:0;height:auto;min-height:50px}select{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-radius:0;cursor:auto;line-height:1;padding:0}[data-whatinput=mouse] button{outline:0}pre{overflow:auto;-webkit-overflow-scrolling:touch}button,input,optgroup,select,textarea{font-family:inherit}.is-visible{display:block!important}.is-hidden{display:none!important}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;border:1px solid #cacaca;border-radius:0;-webkit-box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);-webkit-box-sizing:border-box;box-sizing:border-box;color:#0a0a0a;display:block;font-family:inherit;font-size:1rem;font-weight:300;height:2.5rem;line-height:1.5;margin:0 0 1.0666666667rem;padding:.5333333333rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s;width:100%}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:none;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}textarea{max-width:100%}textarea[rows]{height:auto}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}input[type=search]{-webkit-box-sizing:border-box;box-sizing:border-box}::-webkit-input-placeholder{color:#cacaca}::-moz-placeholder{color:#cacaca}:-ms-input-placeholder{color:#cacaca}::-ms-input-placeholder{color:#cacaca}::placeholder{color:#cacaca}[type=checkbox],[type=file],[type=radio]{margin:0 0 1.0666666667rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-bottom:0;margin-left:.5333333333rem;margin-right:1.0666666667rem;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5333333333rem}[type=file]{width:100%}label{color:#0a0a0a;display:block;font-size:.9333333333rem;font-weight:300;line-height:1.8;margin:0}label.middle{line-height:1.5;margin:0 0 1.0666666667rem;padding:.6rem 0}.help-text{color:#0a0a0a;font-size:.8666666667rem;font-style:italic;margin-top:-.5333333333rem}.input-group{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:1.0666666667rem;width:100%;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.input-group>:first-child,.input-group>:first-child.input-group-button>*,.input-group>:last-child,.input-group>:last-child.input-group-button>*{border-radius:0 0 0 0}.input-group-button,.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label,.input-group-field,.input-group-label{margin:0;white-space:nowrap}.input-group-label{background:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 1rem;text-align:center;white-space:nowrap;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px;min-width:0}.input-group-button{display:-webkit-box;display:-ms-flexbox;display:flex;padding-bottom:0;padding-top:0;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label{-ms-flex-item-align:stretch;align-self:stretch;font-size:1rem;height:auto;padding-bottom:0;padding-top:0}fieldset{border:0;margin:0;padding:0}legend{margin-bottom:.5333333333rem;max-width:100%}.fieldset{border:1px solid #cacaca;margin:1.2rem 0;padding:1.3333333333rem}.fieldset legend{margin:0 0 0 -.2rem;padding:0 .2rem}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;background-image:url('data:image/svg+xml;utf8,');background-origin:content-box;background-position:right -1.0666666667rem center;background-repeat:no-repeat;background-size:9px 6px;border:1px solid #cacaca;border-radius:0;color:#0a0a0a;font-family:inherit;font-size:1rem;font-weight:300;height:2.5rem;line-height:1.5;margin:0 0 1.0666666667rem;padding:.5333333333rem 1.6rem .5333333333rem .5333333333rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}@media screen and (min-width:0\0){select{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==")}}select:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:none;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{background-image:none;height:auto}select:not([multiple]){padding-bottom:0;padding-top:0}.is-invalid-input:not(:focus){background-color:#f9ecea;border-color:#cc4b37}.is-invalid-input:not(:focus)::-webkit-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-moz-placeholder{color:#cc4b37}.is-invalid-input:not(:focus):-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::placeholder{color:#cc4b37}.form-error,.is-invalid-label{color:#cc4b37}.form-error{display:none;font-size:.8rem;font-weight:700;margin-bottom:1.0666666667rem;margin-top:-.5333333333rem}.form-error.is-visible{display:block}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{font-size:inherit;line-height:1.6;margin-bottom:1rem;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:inherit;font-family:Helvetica,Arial,sans-serif;font-style:normal;font-weight:300;text-rendering:optimizeLegibility}.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}.h1,h1{font-size:1.6rem}.h1,.h2,h1,h2{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h2,h2{font-size:1.3333333333rem}.h3,h3{font-size:1.2666666667rem}.h3,.h4,h3,h4{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h4,h4{font-size:1.2rem}.h5,h5{font-size:1.1333333333rem}.h5,.h6,h5,h6{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h6,h6{font-size:1.0666666667rem}@media print,screen and (min-width:40em){.h1,h1{font-size:2rem}.h2,h2{font-size:1.6rem}.h3,h3{font-size:1.3333333333rem}.h4,h4{font-size:1.2rem}.h5,h5{font-size:1.1333333333rem}.h6,h6{font-size:1.0666666667rem}}a{color:#3f729b;cursor:pointer;line-height:inherit;text-decoration:none}a:focus,a:hover{color:#366285}a img,hr{border:0}hr{border-bottom:1px solid #cacaca;clear:both;height:0;margin:1.3333333333rem auto;max-width:100%}dl,ol,ul{line-height:1.6;list-style-position:outside;margin-bottom:1rem}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0;margin-left:1.25rem}dl{margin-bottom:1rem}dl dt{font-weight:700;margin-bottom:.3rem}blockquote{border-left:1px solid #cacaca;margin:0 0 1rem;padding:.6rem 1.3333333333rem 0 1.2666666667rem}blockquote,blockquote p{color:#8a8a8a;line-height:1.6}abbr,abbr[title]{border-bottom:1px dotted #0a0a0a;cursor:help;text-decoration:none}figure,kbd{margin:0}kbd{background-color:#e6e6e6;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;padding:.1333333333rem .2666666667rem 0}.subheader{color:#8a8a8a;font-weight:300;line-height:1.4;margin-bottom:.5rem;margin-top:.2rem}.lead{font-size:1.171875rem;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}ol.no-bullet,ul.no-bullet{list-style:none;margin-left:0}.cite-block,cite{color:#8a8a8a;display:block;font-size:.8666666667rem}.cite-block:before,cite:before{content:"— "}.code-inline,code{display:inline;max-width:100%;word-wrap:break-word;padding:.1333333333rem .3333333333rem .0666666667rem}.code-block,.code-inline,code{background-color:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;font-weight:300}.code-block{display:block;margin-bottom:1.5rem;overflow:auto;padding:1rem;white-space:pre}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media print,screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print,screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}@media screen and (min-width:75em){.xlarge-text-left{text-align:left}.xlarge-text-right{text-align:right}.xlarge-text-center{text-align:center}.xlarge-text-justify{text-align:justify}}@media screen and (min-width:90em){.xxlarge-text-left{text-align:left}.xxlarge-text-right{text-align:right}.xxlarge-text-center{text-align:center}.xxlarge-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:#000!important;-webkit-print-color-adjust:economy;print-color-adjust:economy;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.print-break-inside{page-break-inside:auto}}.grid-container{margin-left:auto;margin-right:auto;max-width:80rem;padding-left:.3333333333rem;padding-right:.3333333333rem}@media print,screen and (min-width:40em){.grid-container{padding-left:.7rem;padding-right:.7rem}}@media print,screen and (min-width:64em){.grid-container{padding-left:.7rem;padding-right:.7rem}}@media screen and (min-width:75em){.grid-container{padding-left:.7rem;padding-right:.7rem}}@media screen and (min-width:90em){.grid-container{padding-left:.7rem;padding-right:.7rem}}.grid-container.fluid{margin-left:auto;margin-right:auto;max-width:100%;padding-left:.3333333333rem;padding-right:.3333333333rem}@media print,screen and (min-width:40em){.grid-container.fluid{padding-left:.7rem;padding-right:.7rem}}@media print,screen and (min-width:64em){.grid-container.fluid{padding-left:.7rem;padding-right:.7rem}}@media screen and (min-width:75em){.grid-container.fluid{padding-left:.7rem;padding-right:.7rem}}@media screen and (min-width:90em){.grid-container.fluid{padding-left:.7rem;padding-right:.7rem}}.grid-container.full{margin-left:auto;margin-right:auto;max-width:100%;padding-left:0;padding-right:0}.grid-x{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.cell.auto{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.cell.shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.auto,.grid-x>.shrink{width:auto}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9,.grid-x>.small-full,.grid-x>.small-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-full,.grid-x>.medium-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-full,.grid-x>.large-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}@media screen and (min-width:75em){.grid-x>.xlarge-1,.grid-x>.xlarge-10,.grid-x>.xlarge-11,.grid-x>.xlarge-12,.grid-x>.xlarge-2,.grid-x>.xlarge-3,.grid-x>.xlarge-4,.grid-x>.xlarge-5,.grid-x>.xlarge-6,.grid-x>.xlarge-7,.grid-x>.xlarge-8,.grid-x>.xlarge-9,.grid-x>.xlarge-full,.grid-x>.xlarge-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}@media screen and (min-width:90em){.grid-x>.xxlarge-1,.grid-x>.xxlarge-10,.grid-x>.xxlarge-11,.grid-x>.xxlarge-12,.grid-x>.xxlarge-2,.grid-x>.xxlarge-3,.grid-x>.xxlarge-4,.grid-x>.xxlarge-5,.grid-x>.xxlarge-6,.grid-x>.xxlarge-7,.grid-x>.xxlarge-8,.grid-x>.xxlarge-9,.grid-x>.xxlarge-full,.grid-x>.xxlarge-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.small-1{width:8.3333333333%}.grid-x>.small-2{width:16.6666666667%}.grid-x>.small-3{width:25%}.grid-x>.small-4{width:33.3333333333%}.grid-x>.small-5{width:41.6666666667%}.grid-x>.small-6{width:50%}.grid-x>.small-7{width:58.3333333333%}.grid-x>.small-8{width:66.6666666667%}.grid-x>.small-9{width:75%}.grid-x>.small-10{width:83.3333333333%}.grid-x>.small-11{width:91.6666666667%}.grid-x>.small-12{width:100%}@media print,screen and (min-width:40em){.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.medium-shrink{width:auto}.grid-x>.medium-1{width:8.3333333333%}.grid-x>.medium-2{width:16.6666666667%}.grid-x>.medium-3{width:25%}.grid-x>.medium-4{width:33.3333333333%}.grid-x>.medium-5{width:41.6666666667%}.grid-x>.medium-6{width:50%}.grid-x>.medium-7{width:58.3333333333%}.grid-x>.medium-8{width:66.6666666667%}.grid-x>.medium-9{width:75%}.grid-x>.medium-10{width:83.3333333333%}.grid-x>.medium-11{width:91.6666666667%}.grid-x>.medium-12{width:100%}}@media print,screen and (min-width:64em){.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.large-shrink{width:auto}.grid-x>.large-1{width:8.3333333333%}.grid-x>.large-2{width:16.6666666667%}.grid-x>.large-3{width:25%}.grid-x>.large-4{width:33.3333333333%}.grid-x>.large-5{width:41.6666666667%}.grid-x>.large-6{width:50%}.grid-x>.large-7{width:58.3333333333%}.grid-x>.large-8{width:66.6666666667%}.grid-x>.large-9{width:75%}.grid-x>.large-10{width:83.3333333333%}.grid-x>.large-11{width:91.6666666667%}.grid-x>.large-12{width:100%}}@media screen and (min-width:75em){.grid-x>.xlarge-1,.grid-x>.xlarge-10,.grid-x>.xlarge-11,.grid-x>.xlarge-12,.grid-x>.xlarge-2,.grid-x>.xlarge-3,.grid-x>.xlarge-4,.grid-x>.xlarge-5,.grid-x>.xlarge-6,.grid-x>.xlarge-7,.grid-x>.xlarge-8,.grid-x>.xlarge-9,.grid-x>.xlarge-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.xlarge-shrink{width:auto}.grid-x>.xlarge-1{width:8.3333333333%}.grid-x>.xlarge-2{width:16.6666666667%}.grid-x>.xlarge-3{width:25%}.grid-x>.xlarge-4{width:33.3333333333%}.grid-x>.xlarge-5{width:41.6666666667%}.grid-x>.xlarge-6{width:50%}.grid-x>.xlarge-7{width:58.3333333333%}.grid-x>.xlarge-8{width:66.6666666667%}.grid-x>.xlarge-9{width:75%}.grid-x>.xlarge-10{width:83.3333333333%}.grid-x>.xlarge-11{width:91.6666666667%}.grid-x>.xlarge-12{width:100%}}@media screen and (min-width:90em){.grid-x>.xxlarge-1,.grid-x>.xxlarge-10,.grid-x>.xxlarge-11,.grid-x>.xxlarge-12,.grid-x>.xxlarge-2,.grid-x>.xxlarge-3,.grid-x>.xxlarge-4,.grid-x>.xxlarge-5,.grid-x>.xxlarge-6,.grid-x>.xxlarge-7,.grid-x>.xxlarge-8,.grid-x>.xxlarge-9,.grid-x>.xxlarge-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.xxlarge-shrink{width:auto}.grid-x>.xxlarge-1{width:8.3333333333%}.grid-x>.xxlarge-2{width:16.6666666667%}.grid-x>.xxlarge-3{width:25%}.grid-x>.xxlarge-4{width:33.3333333333%}.grid-x>.xxlarge-5{width:41.6666666667%}.grid-x>.xxlarge-6{width:50%}.grid-x>.xxlarge-7{width:58.3333333333%}.grid-x>.xxlarge-8{width:66.6666666667%}.grid-x>.xxlarge-9{width:75%}.grid-x>.xxlarge-10{width:83.3333333333%}.grid-x>.xxlarge-11{width:91.6666666667%}.grid-x>.xxlarge-12{width:100%}}.grid-margin-x:not(.grid-x)>.cell{width:auto}.grid-margin-y:not(.grid-y)>.cell{height:auto}.grid-margin-x{margin-left:-.3333333333rem;margin-right:-.3333333333rem}@media print,screen and (min-width:40em){.grid-margin-x{margin-left:-.7rem;margin-right:-.7rem}}@media print,screen and (min-width:64em){.grid-margin-x{margin-left:-.7rem;margin-right:-.7rem}}@media screen and (min-width:75em){.grid-margin-x{margin-left:-.7rem;margin-right:-.7rem}}@media screen and (min-width:90em){.grid-margin-x{margin-left:-.7rem;margin-right:-.7rem}}.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - .66667rem)}.grid-margin-x>.small-2{width:calc(16.66667% - .66667rem)}.grid-margin-x>.small-3{width:calc(25% - .66667rem)}.grid-margin-x>.small-4{width:calc(33.33333% - .66667rem)}.grid-margin-x>.small-5{width:calc(41.66667% - .66667rem)}.grid-margin-x>.small-6{width:calc(50% - .66667rem)}.grid-margin-x>.small-7{width:calc(58.33333% - .66667rem)}.grid-margin-x>.small-8{width:calc(66.66667% - .66667rem)}.grid-margin-x>.small-9{width:calc(75% - .66667rem)}.grid-margin-x>.small-10{width:calc(83.33333% - .66667rem)}.grid-margin-x>.small-11{width:calc(91.66667% - .66667rem)}.grid-margin-x>.small-12{width:calc(100% - .66667rem)}@media print,screen and (min-width:40em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.small-3{width:calc(25% - 1.4rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.small-6{width:calc(50% - 1.4rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.small-9{width:calc(75% - 1.4rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.small-12{width:calc(100% - 1.4rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.4rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.4rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.4rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.4rem)}}@media print,screen and (min-width:64em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.small-3{width:calc(25% - 1.4rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.small-6{width:calc(50% - 1.4rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.small-9{width:calc(75% - 1.4rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.small-12{width:calc(100% - 1.4rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.4rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.4rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.4rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.4rem)}.grid-margin-x>.large-auto,.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.large-3{width:calc(25% - 1.4rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.large-6{width:calc(50% - 1.4rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.large-9{width:calc(75% - 1.4rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.large-12{width:calc(100% - 1.4rem)}}@media screen and (min-width:75em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.small-3{width:calc(25% - 1.4rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.small-6{width:calc(50% - 1.4rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.small-9{width:calc(75% - 1.4rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.small-12{width:calc(100% - 1.4rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.4rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.4rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.4rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.4rem)}.grid-margin-x>.large-auto,.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.large-3{width:calc(25% - 1.4rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.large-6{width:calc(50% - 1.4rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.large-9{width:calc(75% - 1.4rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.large-12{width:calc(100% - 1.4rem)}.grid-margin-x>.xlarge-auto,.grid-margin-x>.xlarge-shrink{width:auto}.grid-margin-x>.xlarge-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.xlarge-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.xlarge-3{width:calc(25% - 1.4rem)}.grid-margin-x>.xlarge-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.xlarge-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.xlarge-6{width:calc(50% - 1.4rem)}.grid-margin-x>.xlarge-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.xlarge-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.xlarge-9{width:calc(75% - 1.4rem)}.grid-margin-x>.xlarge-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.xlarge-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.xlarge-12{width:calc(100% - 1.4rem)}}@media screen and (min-width:90em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.small-3{width:calc(25% - 1.4rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.small-6{width:calc(50% - 1.4rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.small-9{width:calc(75% - 1.4rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.small-12{width:calc(100% - 1.4rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.4rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.4rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.4rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.4rem)}.grid-margin-x>.large-auto,.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.large-3{width:calc(25% - 1.4rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.large-6{width:calc(50% - 1.4rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.large-9{width:calc(75% - 1.4rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.large-12{width:calc(100% - 1.4rem)}.grid-margin-x>.xlarge-auto,.grid-margin-x>.xlarge-shrink{width:auto}.grid-margin-x>.xlarge-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.xlarge-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.xlarge-3{width:calc(25% - 1.4rem)}.grid-margin-x>.xlarge-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.xlarge-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.xlarge-6{width:calc(50% - 1.4rem)}.grid-margin-x>.xlarge-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.xlarge-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.xlarge-9{width:calc(75% - 1.4rem)}.grid-margin-x>.xlarge-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.xlarge-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.xlarge-12{width:calc(100% - 1.4rem)}.grid-margin-x>.xxlarge-auto,.grid-margin-x>.xxlarge-shrink{width:auto}.grid-margin-x>.xxlarge-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.xxlarge-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.xxlarge-3{width:calc(25% - 1.4rem)}.grid-margin-x>.xxlarge-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.xxlarge-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.xxlarge-6{width:calc(50% - 1.4rem)}.grid-margin-x>.xxlarge-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.xxlarge-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.xxlarge-9{width:calc(75% - 1.4rem)}.grid-margin-x>.xxlarge-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.xxlarge-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.xxlarge-12{width:calc(100% - 1.4rem)}}.grid-padding-x .grid-padding-x{margin-left:-.3333333333rem;margin-right:-.3333333333rem}@media print,screen and (min-width:40em){.grid-padding-x .grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}@media print,screen and (min-width:64em){.grid-padding-x .grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}@media screen and (min-width:75em){.grid-padding-x .grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}@media screen and (min-width:90em){.grid-padding-x .grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}.grid-container:not(.full)>.grid-padding-x{margin-left:-.3333333333rem;margin-right:-.3333333333rem}@media print,screen and (min-width:40em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}@media print,screen and (min-width:64em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}@media screen and (min-width:75em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}@media screen and (min-width:90em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}.grid-padding-x>.cell{padding-left:.3333333333rem;padding-right:.3333333333rem}@media print,screen and (min-width:40em){.grid-padding-x>.cell{padding-left:.7rem;padding-right:.7rem}}@media print,screen and (min-width:64em){.grid-padding-x>.cell{padding-left:.7rem;padding-right:.7rem}}@media screen and (min-width:75em){.grid-padding-x>.cell{padding-left:.7rem;padding-right:.7rem}}@media screen and (min-width:90em){.grid-padding-x>.cell{padding-left:.7rem;padding-right:.7rem}}.small-up-1>.cell{width:100%}.small-up-2>.cell{width:50%}.small-up-3>.cell{width:33.3333333333%}.small-up-4>.cell{width:25%}.small-up-5>.cell{width:20%}.small-up-6>.cell{width:16.6666666667%}.small-up-7>.cell{width:14.2857142857%}.small-up-8>.cell{width:12.5%}@media print,screen and (min-width:40em){.medium-up-1>.cell{width:100%}.medium-up-2>.cell{width:50%}.medium-up-3>.cell{width:33.3333333333%}.medium-up-4>.cell{width:25%}.medium-up-5>.cell{width:20%}.medium-up-6>.cell{width:16.6666666667%}.medium-up-7>.cell{width:14.2857142857%}.medium-up-8>.cell{width:12.5%}}@media print,screen and (min-width:64em){.large-up-1>.cell{width:100%}.large-up-2>.cell{width:50%}.large-up-3>.cell{width:33.3333333333%}.large-up-4>.cell{width:25%}.large-up-5>.cell{width:20%}.large-up-6>.cell{width:16.6666666667%}.large-up-7>.cell{width:14.2857142857%}.large-up-8>.cell{width:12.5%}}@media screen and (min-width:75em){.xlarge-up-1>.cell{width:100%}.xlarge-up-2>.cell{width:50%}.xlarge-up-3>.cell{width:33.3333333333%}.xlarge-up-4>.cell{width:25%}.xlarge-up-5>.cell{width:20%}.xlarge-up-6>.cell{width:16.6666666667%}.xlarge-up-7>.cell{width:14.2857142857%}.xlarge-up-8>.cell{width:12.5%}}@media screen and (min-width:90em){.xxlarge-up-1>.cell{width:100%}.xxlarge-up-2>.cell{width:50%}.xxlarge-up-3>.cell{width:33.3333333333%}.xxlarge-up-4>.cell{width:25%}.xxlarge-up-5>.cell{width:20%}.xxlarge-up-6>.cell{width:16.6666666667%}.xxlarge-up-7>.cell{width:14.2857142857%}.xxlarge-up-8>.cell{width:12.5%}}.grid-margin-x.small-up-1>.cell{width:calc(100% - .66667rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - .66667rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - .66667rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - .66667rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - .66667rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - .66667rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - .66667rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - .66667rem)}@media print,screen and (min-width:40em){.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.4rem)}.grid-margin-x.medium-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.medium-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.medium-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.medium-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.medium-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.medium-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.medium-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.medium-up-8>.cell{width:calc(12.5% - 1.4rem)}}@media print,screen and (min-width:64em){.grid-margin-x.medium-up-1>.cell,.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.medium-up-2>.cell,.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.medium-up-3>.cell,.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.medium-up-4>.cell,.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.medium-up-5>.cell,.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.medium-up-6>.cell,.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.medium-up-7>.cell,.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.medium-up-8>.cell,.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.4rem)}.grid-margin-x.large-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.large-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.large-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.large-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.large-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.large-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.large-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.large-up-8>.cell{width:calc(12.5% - 1.4rem)}}@media screen and (min-width:75em){.grid-margin-x.large-up-1>.cell,.grid-margin-x.medium-up-1>.cell,.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.large-up-2>.cell,.grid-margin-x.medium-up-2>.cell,.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.large-up-3>.cell,.grid-margin-x.medium-up-3>.cell,.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.large-up-4>.cell,.grid-margin-x.medium-up-4>.cell,.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.large-up-5>.cell,.grid-margin-x.medium-up-5>.cell,.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.large-up-6>.cell,.grid-margin-x.medium-up-6>.cell,.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.large-up-7>.cell,.grid-margin-x.medium-up-7>.cell,.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.large-up-8>.cell,.grid-margin-x.medium-up-8>.cell,.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.4rem)}.grid-margin-x.xlarge-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.xlarge-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.xlarge-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.xlarge-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.xlarge-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.xlarge-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.xlarge-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.xlarge-up-8>.cell{width:calc(12.5% - 1.4rem)}}@media screen and (min-width:90em){.grid-margin-x.large-up-1>.cell,.grid-margin-x.medium-up-1>.cell,.grid-margin-x.small-up-1>.cell,.grid-margin-x.xlarge-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.large-up-2>.cell,.grid-margin-x.medium-up-2>.cell,.grid-margin-x.small-up-2>.cell,.grid-margin-x.xlarge-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.large-up-3>.cell,.grid-margin-x.medium-up-3>.cell,.grid-margin-x.small-up-3>.cell,.grid-margin-x.xlarge-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.large-up-4>.cell,.grid-margin-x.medium-up-4>.cell,.grid-margin-x.small-up-4>.cell,.grid-margin-x.xlarge-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.large-up-5>.cell,.grid-margin-x.medium-up-5>.cell,.grid-margin-x.small-up-5>.cell,.grid-margin-x.xlarge-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.large-up-6>.cell,.grid-margin-x.medium-up-6>.cell,.grid-margin-x.small-up-6>.cell,.grid-margin-x.xlarge-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.large-up-7>.cell,.grid-margin-x.medium-up-7>.cell,.grid-margin-x.small-up-7>.cell,.grid-margin-x.xlarge-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.large-up-8>.cell,.grid-margin-x.medium-up-8>.cell,.grid-margin-x.small-up-8>.cell,.grid-margin-x.xlarge-up-8>.cell{width:calc(12.5% - 1.4rem)}.grid-margin-x.xxlarge-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.xxlarge-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.xxlarge-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.xxlarge-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.xxlarge-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.xxlarge-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.xxlarge-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.xxlarge-up-8>.cell{width:calc(12.5% - 1.4rem)}}.small-margin-collapse,.small-margin-collapse>.cell{margin-left:0;margin-right:0}.small-margin-collapse>.small-1{width:8.3333333333%}.small-margin-collapse>.small-2{width:16.6666666667%}.small-margin-collapse>.small-3{width:25%}.small-margin-collapse>.small-4{width:33.3333333333%}.small-margin-collapse>.small-5{width:41.6666666667%}.small-margin-collapse>.small-6{width:50%}.small-margin-collapse>.small-7{width:58.3333333333%}.small-margin-collapse>.small-8{width:66.6666666667%}.small-margin-collapse>.small-9{width:75%}.small-margin-collapse>.small-10{width:83.3333333333%}.small-margin-collapse>.small-11{width:91.6666666667%}.small-margin-collapse>.small-12{width:100%}@media print,screen and (min-width:40em){.small-margin-collapse>.medium-1{width:8.3333333333%}.small-margin-collapse>.medium-2{width:16.6666666667%}.small-margin-collapse>.medium-3{width:25%}.small-margin-collapse>.medium-4{width:33.3333333333%}.small-margin-collapse>.medium-5{width:41.6666666667%}.small-margin-collapse>.medium-6{width:50%}.small-margin-collapse>.medium-7{width:58.3333333333%}.small-margin-collapse>.medium-8{width:66.6666666667%}.small-margin-collapse>.medium-9{width:75%}.small-margin-collapse>.medium-10{width:83.3333333333%}.small-margin-collapse>.medium-11{width:91.6666666667%}.small-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.small-margin-collapse>.large-1{width:8.3333333333%}.small-margin-collapse>.large-2{width:16.6666666667%}.small-margin-collapse>.large-3{width:25%}.small-margin-collapse>.large-4{width:33.3333333333%}.small-margin-collapse>.large-5{width:41.6666666667%}.small-margin-collapse>.large-6{width:50%}.small-margin-collapse>.large-7{width:58.3333333333%}.small-margin-collapse>.large-8{width:66.6666666667%}.small-margin-collapse>.large-9{width:75%}.small-margin-collapse>.large-10{width:83.3333333333%}.small-margin-collapse>.large-11{width:91.6666666667%}.small-margin-collapse>.large-12{width:100%}}@media screen and (min-width:75em){.small-margin-collapse>.xlarge-1{width:8.3333333333%}.small-margin-collapse>.xlarge-2{width:16.6666666667%}.small-margin-collapse>.xlarge-3{width:25%}.small-margin-collapse>.xlarge-4{width:33.3333333333%}.small-margin-collapse>.xlarge-5{width:41.6666666667%}.small-margin-collapse>.xlarge-6{width:50%}.small-margin-collapse>.xlarge-7{width:58.3333333333%}.small-margin-collapse>.xlarge-8{width:66.6666666667%}.small-margin-collapse>.xlarge-9{width:75%}.small-margin-collapse>.xlarge-10{width:83.3333333333%}.small-margin-collapse>.xlarge-11{width:91.6666666667%}.small-margin-collapse>.xlarge-12{width:100%}}@media screen and (min-width:90em){.small-margin-collapse>.xxlarge-1{width:8.3333333333%}.small-margin-collapse>.xxlarge-2{width:16.6666666667%}.small-margin-collapse>.xxlarge-3{width:25%}.small-margin-collapse>.xxlarge-4{width:33.3333333333%}.small-margin-collapse>.xxlarge-5{width:41.6666666667%}.small-margin-collapse>.xxlarge-6{width:50%}.small-margin-collapse>.xxlarge-7{width:58.3333333333%}.small-margin-collapse>.xxlarge-8{width:66.6666666667%}.small-margin-collapse>.xxlarge-9{width:75%}.small-margin-collapse>.xxlarge-10{width:83.3333333333%}.small-margin-collapse>.xxlarge-11{width:91.6666666667%}.small-margin-collapse>.xxlarge-12{width:100%}}.small-padding-collapse{margin-left:0;margin-right:0}.small-padding-collapse>.cell{padding-left:0;padding-right:0}@media print,screen and (min-width:40em){.medium-margin-collapse,.medium-margin-collapse>.cell{margin-left:0;margin-right:0}.medium-margin-collapse>.small-1{width:8.3333333333%}.medium-margin-collapse>.small-2{width:16.6666666667%}.medium-margin-collapse>.small-3{width:25%}.medium-margin-collapse>.small-4{width:33.3333333333%}.medium-margin-collapse>.small-5{width:41.6666666667%}.medium-margin-collapse>.small-6{width:50%}.medium-margin-collapse>.small-7{width:58.3333333333%}.medium-margin-collapse>.small-8{width:66.6666666667%}.medium-margin-collapse>.small-9{width:75%}.medium-margin-collapse>.small-10{width:83.3333333333%}.medium-margin-collapse>.small-11{width:91.6666666667%}.medium-margin-collapse>.small-12{width:100%}.medium-margin-collapse>.medium-1{width:8.3333333333%}.medium-margin-collapse>.medium-2{width:16.6666666667%}.medium-margin-collapse>.medium-3{width:25%}.medium-margin-collapse>.medium-4{width:33.3333333333%}.medium-margin-collapse>.medium-5{width:41.6666666667%}.medium-margin-collapse>.medium-6{width:50%}.medium-margin-collapse>.medium-7{width:58.3333333333%}.medium-margin-collapse>.medium-8{width:66.6666666667%}.medium-margin-collapse>.medium-9{width:75%}.medium-margin-collapse>.medium-10{width:83.3333333333%}.medium-margin-collapse>.medium-11{width:91.6666666667%}.medium-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.medium-margin-collapse>.large-1{width:8.3333333333%}.medium-margin-collapse>.large-2{width:16.6666666667%}.medium-margin-collapse>.large-3{width:25%}.medium-margin-collapse>.large-4{width:33.3333333333%}.medium-margin-collapse>.large-5{width:41.6666666667%}.medium-margin-collapse>.large-6{width:50%}.medium-margin-collapse>.large-7{width:58.3333333333%}.medium-margin-collapse>.large-8{width:66.6666666667%}.medium-margin-collapse>.large-9{width:75%}.medium-margin-collapse>.large-10{width:83.3333333333%}.medium-margin-collapse>.large-11{width:91.6666666667%}.medium-margin-collapse>.large-12{width:100%}}@media screen and (min-width:75em){.medium-margin-collapse>.xlarge-1{width:8.3333333333%}.medium-margin-collapse>.xlarge-2{width:16.6666666667%}.medium-margin-collapse>.xlarge-3{width:25%}.medium-margin-collapse>.xlarge-4{width:33.3333333333%}.medium-margin-collapse>.xlarge-5{width:41.6666666667%}.medium-margin-collapse>.xlarge-6{width:50%}.medium-margin-collapse>.xlarge-7{width:58.3333333333%}.medium-margin-collapse>.xlarge-8{width:66.6666666667%}.medium-margin-collapse>.xlarge-9{width:75%}.medium-margin-collapse>.xlarge-10{width:83.3333333333%}.medium-margin-collapse>.xlarge-11{width:91.6666666667%}.medium-margin-collapse>.xlarge-12{width:100%}}@media screen and (min-width:90em){.medium-margin-collapse>.xxlarge-1{width:8.3333333333%}.medium-margin-collapse>.xxlarge-2{width:16.6666666667%}.medium-margin-collapse>.xxlarge-3{width:25%}.medium-margin-collapse>.xxlarge-4{width:33.3333333333%}.medium-margin-collapse>.xxlarge-5{width:41.6666666667%}.medium-margin-collapse>.xxlarge-6{width:50%}.medium-margin-collapse>.xxlarge-7{width:58.3333333333%}.medium-margin-collapse>.xxlarge-8{width:66.6666666667%}.medium-margin-collapse>.xxlarge-9{width:75%}.medium-margin-collapse>.xxlarge-10{width:83.3333333333%}.medium-margin-collapse>.xxlarge-11{width:91.6666666667%}.medium-margin-collapse>.xxlarge-12{width:100%}}@media print,screen and (min-width:40em){.medium-padding-collapse{margin-left:0;margin-right:0}.medium-padding-collapse>.cell{padding-left:0;padding-right:0}}@media print,screen and (min-width:64em){.large-margin-collapse,.large-margin-collapse>.cell{margin-left:0;margin-right:0}.large-margin-collapse>.small-1{width:8.3333333333%}.large-margin-collapse>.small-2{width:16.6666666667%}.large-margin-collapse>.small-3{width:25%}.large-margin-collapse>.small-4{width:33.3333333333%}.large-margin-collapse>.small-5{width:41.6666666667%}.large-margin-collapse>.small-6{width:50%}.large-margin-collapse>.small-7{width:58.3333333333%}.large-margin-collapse>.small-8{width:66.6666666667%}.large-margin-collapse>.small-9{width:75%}.large-margin-collapse>.small-10{width:83.3333333333%}.large-margin-collapse>.small-11{width:91.6666666667%}.large-margin-collapse>.small-12{width:100%}.large-margin-collapse>.medium-1{width:8.3333333333%}.large-margin-collapse>.medium-2{width:16.6666666667%}.large-margin-collapse>.medium-3{width:25%}.large-margin-collapse>.medium-4{width:33.3333333333%}.large-margin-collapse>.medium-5{width:41.6666666667%}.large-margin-collapse>.medium-6{width:50%}.large-margin-collapse>.medium-7{width:58.3333333333%}.large-margin-collapse>.medium-8{width:66.6666666667%}.large-margin-collapse>.medium-9{width:75%}.large-margin-collapse>.medium-10{width:83.3333333333%}.large-margin-collapse>.medium-11{width:91.6666666667%}.large-margin-collapse>.medium-12{width:100%}.large-margin-collapse>.large-1{width:8.3333333333%}.large-margin-collapse>.large-2{width:16.6666666667%}.large-margin-collapse>.large-3{width:25%}.large-margin-collapse>.large-4{width:33.3333333333%}.large-margin-collapse>.large-5{width:41.6666666667%}.large-margin-collapse>.large-6{width:50%}.large-margin-collapse>.large-7{width:58.3333333333%}.large-margin-collapse>.large-8{width:66.6666666667%}.large-margin-collapse>.large-9{width:75%}.large-margin-collapse>.large-10{width:83.3333333333%}.large-margin-collapse>.large-11{width:91.6666666667%}.large-margin-collapse>.large-12{width:100%}}@media screen and (min-width:75em){.large-margin-collapse>.xlarge-1{width:8.3333333333%}.large-margin-collapse>.xlarge-2{width:16.6666666667%}.large-margin-collapse>.xlarge-3{width:25%}.large-margin-collapse>.xlarge-4{width:33.3333333333%}.large-margin-collapse>.xlarge-5{width:41.6666666667%}.large-margin-collapse>.xlarge-6{width:50%}.large-margin-collapse>.xlarge-7{width:58.3333333333%}.large-margin-collapse>.xlarge-8{width:66.6666666667%}.large-margin-collapse>.xlarge-9{width:75%}.large-margin-collapse>.xlarge-10{width:83.3333333333%}.large-margin-collapse>.xlarge-11{width:91.6666666667%}.large-margin-collapse>.xlarge-12{width:100%}}@media screen and (min-width:90em){.large-margin-collapse>.xxlarge-1{width:8.3333333333%}.large-margin-collapse>.xxlarge-2{width:16.6666666667%}.large-margin-collapse>.xxlarge-3{width:25%}.large-margin-collapse>.xxlarge-4{width:33.3333333333%}.large-margin-collapse>.xxlarge-5{width:41.6666666667%}.large-margin-collapse>.xxlarge-6{width:50%}.large-margin-collapse>.xxlarge-7{width:58.3333333333%}.large-margin-collapse>.xxlarge-8{width:66.6666666667%}.large-margin-collapse>.xxlarge-9{width:75%}.large-margin-collapse>.xxlarge-10{width:83.3333333333%}.large-margin-collapse>.xxlarge-11{width:91.6666666667%}.large-margin-collapse>.xxlarge-12{width:100%}}@media print,screen and (min-width:64em){.large-padding-collapse{margin-left:0;margin-right:0}.large-padding-collapse>.cell{padding-left:0;padding-right:0}}@media screen and (min-width:75em){.xlarge-margin-collapse,.xlarge-margin-collapse>.cell{margin-left:0;margin-right:0}.xlarge-margin-collapse>.small-1{width:8.3333333333%}.xlarge-margin-collapse>.small-2{width:16.6666666667%}.xlarge-margin-collapse>.small-3{width:25%}.xlarge-margin-collapse>.small-4{width:33.3333333333%}.xlarge-margin-collapse>.small-5{width:41.6666666667%}.xlarge-margin-collapse>.small-6{width:50%}.xlarge-margin-collapse>.small-7{width:58.3333333333%}.xlarge-margin-collapse>.small-8{width:66.6666666667%}.xlarge-margin-collapse>.small-9{width:75%}.xlarge-margin-collapse>.small-10{width:83.3333333333%}.xlarge-margin-collapse>.small-11{width:91.6666666667%}.xlarge-margin-collapse>.small-12{width:100%}.xlarge-margin-collapse>.medium-1{width:8.3333333333%}.xlarge-margin-collapse>.medium-2{width:16.6666666667%}.xlarge-margin-collapse>.medium-3{width:25%}.xlarge-margin-collapse>.medium-4{width:33.3333333333%}.xlarge-margin-collapse>.medium-5{width:41.6666666667%}.xlarge-margin-collapse>.medium-6{width:50%}.xlarge-margin-collapse>.medium-7{width:58.3333333333%}.xlarge-margin-collapse>.medium-8{width:66.6666666667%}.xlarge-margin-collapse>.medium-9{width:75%}.xlarge-margin-collapse>.medium-10{width:83.3333333333%}.xlarge-margin-collapse>.medium-11{width:91.6666666667%}.xlarge-margin-collapse>.medium-12{width:100%}.xlarge-margin-collapse>.large-1{width:8.3333333333%}.xlarge-margin-collapse>.large-2{width:16.6666666667%}.xlarge-margin-collapse>.large-3{width:25%}.xlarge-margin-collapse>.large-4{width:33.3333333333%}.xlarge-margin-collapse>.large-5{width:41.6666666667%}.xlarge-margin-collapse>.large-6{width:50%}.xlarge-margin-collapse>.large-7{width:58.3333333333%}.xlarge-margin-collapse>.large-8{width:66.6666666667%}.xlarge-margin-collapse>.large-9{width:75%}.xlarge-margin-collapse>.large-10{width:83.3333333333%}.xlarge-margin-collapse>.large-11{width:91.6666666667%}.xlarge-margin-collapse>.large-12{width:100%}.xlarge-margin-collapse>.xlarge-1{width:8.3333333333%}.xlarge-margin-collapse>.xlarge-2{width:16.6666666667%}.xlarge-margin-collapse>.xlarge-3{width:25%}.xlarge-margin-collapse>.xlarge-4{width:33.3333333333%}.xlarge-margin-collapse>.xlarge-5{width:41.6666666667%}.xlarge-margin-collapse>.xlarge-6{width:50%}.xlarge-margin-collapse>.xlarge-7{width:58.3333333333%}.xlarge-margin-collapse>.xlarge-8{width:66.6666666667%}.xlarge-margin-collapse>.xlarge-9{width:75%}.xlarge-margin-collapse>.xlarge-10{width:83.3333333333%}.xlarge-margin-collapse>.xlarge-11{width:91.6666666667%}.xlarge-margin-collapse>.xlarge-12{width:100%}}@media screen and (min-width:90em){.xlarge-margin-collapse>.xxlarge-1{width:8.3333333333%}.xlarge-margin-collapse>.xxlarge-2{width:16.6666666667%}.xlarge-margin-collapse>.xxlarge-3{width:25%}.xlarge-margin-collapse>.xxlarge-4{width:33.3333333333%}.xlarge-margin-collapse>.xxlarge-5{width:41.6666666667%}.xlarge-margin-collapse>.xxlarge-6{width:50%}.xlarge-margin-collapse>.xxlarge-7{width:58.3333333333%}.xlarge-margin-collapse>.xxlarge-8{width:66.6666666667%}.xlarge-margin-collapse>.xxlarge-9{width:75%}.xlarge-margin-collapse>.xxlarge-10{width:83.3333333333%}.xlarge-margin-collapse>.xxlarge-11{width:91.6666666667%}.xlarge-margin-collapse>.xxlarge-12{width:100%}}@media screen and (min-width:75em){.xlarge-padding-collapse{margin-left:0;margin-right:0}.xlarge-padding-collapse>.cell{padding-left:0;padding-right:0}}@media screen and (min-width:90em){.xxlarge-margin-collapse,.xxlarge-margin-collapse>.cell{margin-left:0;margin-right:0}.xxlarge-margin-collapse>.small-1{width:8.3333333333%}.xxlarge-margin-collapse>.small-2{width:16.6666666667%}.xxlarge-margin-collapse>.small-3{width:25%}.xxlarge-margin-collapse>.small-4{width:33.3333333333%}.xxlarge-margin-collapse>.small-5{width:41.6666666667%}.xxlarge-margin-collapse>.small-6{width:50%}.xxlarge-margin-collapse>.small-7{width:58.3333333333%}.xxlarge-margin-collapse>.small-8{width:66.6666666667%}.xxlarge-margin-collapse>.small-9{width:75%}.xxlarge-margin-collapse>.small-10{width:83.3333333333%}.xxlarge-margin-collapse>.small-11{width:91.6666666667%}.xxlarge-margin-collapse>.small-12{width:100%}.xxlarge-margin-collapse>.medium-1{width:8.3333333333%}.xxlarge-margin-collapse>.medium-2{width:16.6666666667%}.xxlarge-margin-collapse>.medium-3{width:25%}.xxlarge-margin-collapse>.medium-4{width:33.3333333333%}.xxlarge-margin-collapse>.medium-5{width:41.6666666667%}.xxlarge-margin-collapse>.medium-6{width:50%}.xxlarge-margin-collapse>.medium-7{width:58.3333333333%}.xxlarge-margin-collapse>.medium-8{width:66.6666666667%}.xxlarge-margin-collapse>.medium-9{width:75%}.xxlarge-margin-collapse>.medium-10{width:83.3333333333%}.xxlarge-margin-collapse>.medium-11{width:91.6666666667%}.xxlarge-margin-collapse>.medium-12{width:100%}.xxlarge-margin-collapse>.large-1{width:8.3333333333%}.xxlarge-margin-collapse>.large-2{width:16.6666666667%}.xxlarge-margin-collapse>.large-3{width:25%}.xxlarge-margin-collapse>.large-4{width:33.3333333333%}.xxlarge-margin-collapse>.large-5{width:41.6666666667%}.xxlarge-margin-collapse>.large-6{width:50%}.xxlarge-margin-collapse>.large-7{width:58.3333333333%}.xxlarge-margin-collapse>.large-8{width:66.6666666667%}.xxlarge-margin-collapse>.large-9{width:75%}.xxlarge-margin-collapse>.large-10{width:83.3333333333%}.xxlarge-margin-collapse>.large-11{width:91.6666666667%}.xxlarge-margin-collapse>.large-12{width:100%}.xxlarge-margin-collapse>.xlarge-1{width:8.3333333333%}.xxlarge-margin-collapse>.xlarge-2{width:16.6666666667%}.xxlarge-margin-collapse>.xlarge-3{width:25%}.xxlarge-margin-collapse>.xlarge-4{width:33.3333333333%}.xxlarge-margin-collapse>.xlarge-5{width:41.6666666667%}.xxlarge-margin-collapse>.xlarge-6{width:50%}.xxlarge-margin-collapse>.xlarge-7{width:58.3333333333%}.xxlarge-margin-collapse>.xlarge-8{width:66.6666666667%}.xxlarge-margin-collapse>.xlarge-9{width:75%}.xxlarge-margin-collapse>.xlarge-10{width:83.3333333333%}.xxlarge-margin-collapse>.xlarge-11{width:91.6666666667%}.xxlarge-margin-collapse>.xlarge-12{width:100%}.xxlarge-margin-collapse>.xxlarge-1{width:8.3333333333%}.xxlarge-margin-collapse>.xxlarge-2{width:16.6666666667%}.xxlarge-margin-collapse>.xxlarge-3{width:25%}.xxlarge-margin-collapse>.xxlarge-4{width:33.3333333333%}.xxlarge-margin-collapse>.xxlarge-5{width:41.6666666667%}.xxlarge-margin-collapse>.xxlarge-6{width:50%}.xxlarge-margin-collapse>.xxlarge-7{width:58.3333333333%}.xxlarge-margin-collapse>.xxlarge-8{width:66.6666666667%}.xxlarge-margin-collapse>.xxlarge-9{width:75%}.xxlarge-margin-collapse>.xxlarge-10{width:83.3333333333%}.xxlarge-margin-collapse>.xxlarge-11{width:91.6666666667%}.xxlarge-margin-collapse>.xxlarge-12{width:100%}.xxlarge-padding-collapse{margin-left:0;margin-right:0}.xxlarge-padding-collapse>.cell{padding-left:0;padding-right:0}}.small-offset-0{margin-left:0}.grid-margin-x>.small-offset-0{margin-left:.33333rem}.small-offset-1{margin-left:8.3333333333%}.grid-margin-x>.small-offset-1{margin-left:calc(8.33333% + .33333rem)}.small-offset-2{margin-left:16.6666666667%}.grid-margin-x>.small-offset-2{margin-left:calc(16.66667% + .33333rem)}.small-offset-3{margin-left:25%}.grid-margin-x>.small-offset-3{margin-left:calc(25% + .33333rem)}.small-offset-4{margin-left:33.3333333333%}.grid-margin-x>.small-offset-4{margin-left:calc(33.33333% + .33333rem)}.small-offset-5{margin-left:41.6666666667%}.grid-margin-x>.small-offset-5{margin-left:calc(41.66667% + .33333rem)}.small-offset-6{margin-left:50%}.grid-margin-x>.small-offset-6{margin-left:calc(50% + .33333rem)}.small-offset-7{margin-left:58.3333333333%}.grid-margin-x>.small-offset-7{margin-left:calc(58.33333% + .33333rem)}.small-offset-8{margin-left:66.6666666667%}.grid-margin-x>.small-offset-8{margin-left:calc(66.66667% + .33333rem)}.small-offset-9{margin-left:75%}.grid-margin-x>.small-offset-9{margin-left:calc(75% + .33333rem)}.small-offset-10{margin-left:83.3333333333%}.grid-margin-x>.small-offset-10{margin-left:calc(83.33333% + .33333rem)}.small-offset-11{margin-left:91.6666666667%}.grid-margin-x>.small-offset-11{margin-left:calc(91.66667% + .33333rem)}@media print,screen and (min-width:40em){.medium-offset-0{margin-left:0}.grid-margin-x>.medium-offset-0{margin-left:.7rem}.medium-offset-1{margin-left:8.3333333333%}.grid-margin-x>.medium-offset-1{margin-left:calc(8.33333% + .7rem)}.medium-offset-2{margin-left:16.6666666667%}.grid-margin-x>.medium-offset-2{margin-left:calc(16.66667% + .7rem)}.medium-offset-3{margin-left:25%}.grid-margin-x>.medium-offset-3{margin-left:calc(25% + .7rem)}.medium-offset-4{margin-left:33.3333333333%}.grid-margin-x>.medium-offset-4{margin-left:calc(33.33333% + .7rem)}.medium-offset-5{margin-left:41.6666666667%}.grid-margin-x>.medium-offset-5{margin-left:calc(41.66667% + .7rem)}.medium-offset-6{margin-left:50%}.grid-margin-x>.medium-offset-6{margin-left:calc(50% + .7rem)}.medium-offset-7{margin-left:58.3333333333%}.grid-margin-x>.medium-offset-7{margin-left:calc(58.33333% + .7rem)}.medium-offset-8{margin-left:66.6666666667%}.grid-margin-x>.medium-offset-8{margin-left:calc(66.66667% + .7rem)}.medium-offset-9{margin-left:75%}.grid-margin-x>.medium-offset-9{margin-left:calc(75% + .7rem)}.medium-offset-10{margin-left:83.3333333333%}.grid-margin-x>.medium-offset-10{margin-left:calc(83.33333% + .7rem)}.medium-offset-11{margin-left:91.6666666667%}.grid-margin-x>.medium-offset-11{margin-left:calc(91.66667% + .7rem)}}@media print,screen and (min-width:64em){.large-offset-0{margin-left:0}.grid-margin-x>.large-offset-0{margin-left:.7rem}.large-offset-1{margin-left:8.3333333333%}.grid-margin-x>.large-offset-1{margin-left:calc(8.33333% + .7rem)}.large-offset-2{margin-left:16.6666666667%}.grid-margin-x>.large-offset-2{margin-left:calc(16.66667% + .7rem)}.large-offset-3{margin-left:25%}.grid-margin-x>.large-offset-3{margin-left:calc(25% + .7rem)}.large-offset-4{margin-left:33.3333333333%}.grid-margin-x>.large-offset-4{margin-left:calc(33.33333% + .7rem)}.large-offset-5{margin-left:41.6666666667%}.grid-margin-x>.large-offset-5{margin-left:calc(41.66667% + .7rem)}.large-offset-6{margin-left:50%}.grid-margin-x>.large-offset-6{margin-left:calc(50% + .7rem)}.large-offset-7{margin-left:58.3333333333%}.grid-margin-x>.large-offset-7{margin-left:calc(58.33333% + .7rem)}.large-offset-8{margin-left:66.6666666667%}.grid-margin-x>.large-offset-8{margin-left:calc(66.66667% + .7rem)}.large-offset-9{margin-left:75%}.grid-margin-x>.large-offset-9{margin-left:calc(75% + .7rem)}.large-offset-10{margin-left:83.3333333333%}.grid-margin-x>.large-offset-10{margin-left:calc(83.33333% + .7rem)}.large-offset-11{margin-left:91.6666666667%}.grid-margin-x>.large-offset-11{margin-left:calc(91.66667% + .7rem)}}@media screen and (min-width:75em){.xlarge-offset-0{margin-left:0}.grid-margin-x>.xlarge-offset-0{margin-left:.7rem}.xlarge-offset-1{margin-left:8.3333333333%}.grid-margin-x>.xlarge-offset-1{margin-left:calc(8.33333% + .7rem)}.xlarge-offset-2{margin-left:16.6666666667%}.grid-margin-x>.xlarge-offset-2{margin-left:calc(16.66667% + .7rem)}.xlarge-offset-3{margin-left:25%}.grid-margin-x>.xlarge-offset-3{margin-left:calc(25% + .7rem)}.xlarge-offset-4{margin-left:33.3333333333%}.grid-margin-x>.xlarge-offset-4{margin-left:calc(33.33333% + .7rem)}.xlarge-offset-5{margin-left:41.6666666667%}.grid-margin-x>.xlarge-offset-5{margin-left:calc(41.66667% + .7rem)}.xlarge-offset-6{margin-left:50%}.grid-margin-x>.xlarge-offset-6{margin-left:calc(50% + .7rem)}.xlarge-offset-7{margin-left:58.3333333333%}.grid-margin-x>.xlarge-offset-7{margin-left:calc(58.33333% + .7rem)}.xlarge-offset-8{margin-left:66.6666666667%}.grid-margin-x>.xlarge-offset-8{margin-left:calc(66.66667% + .7rem)}.xlarge-offset-9{margin-left:75%}.grid-margin-x>.xlarge-offset-9{margin-left:calc(75% + .7rem)}.xlarge-offset-10{margin-left:83.3333333333%}.grid-margin-x>.xlarge-offset-10{margin-left:calc(83.33333% + .7rem)}.xlarge-offset-11{margin-left:91.6666666667%}.grid-margin-x>.xlarge-offset-11{margin-left:calc(91.66667% + .7rem)}}@media screen and (min-width:90em){.xxlarge-offset-0{margin-left:0}.grid-margin-x>.xxlarge-offset-0{margin-left:.7rem}.xxlarge-offset-1{margin-left:8.3333333333%}.grid-margin-x>.xxlarge-offset-1{margin-left:calc(8.33333% + .7rem)}.xxlarge-offset-2{margin-left:16.6666666667%}.grid-margin-x>.xxlarge-offset-2{margin-left:calc(16.66667% + .7rem)}.xxlarge-offset-3{margin-left:25%}.grid-margin-x>.xxlarge-offset-3{margin-left:calc(25% + .7rem)}.xxlarge-offset-4{margin-left:33.3333333333%}.grid-margin-x>.xxlarge-offset-4{margin-left:calc(33.33333% + .7rem)}.xxlarge-offset-5{margin-left:41.6666666667%}.grid-margin-x>.xxlarge-offset-5{margin-left:calc(41.66667% + .7rem)}.xxlarge-offset-6{margin-left:50%}.grid-margin-x>.xxlarge-offset-6{margin-left:calc(50% + .7rem)}.xxlarge-offset-7{margin-left:58.3333333333%}.grid-margin-x>.xxlarge-offset-7{margin-left:calc(58.33333% + .7rem)}.xxlarge-offset-8{margin-left:66.6666666667%}.grid-margin-x>.xxlarge-offset-8{margin-left:calc(66.66667% + .7rem)}.xxlarge-offset-9{margin-left:75%}.grid-margin-x>.xxlarge-offset-9{margin-left:calc(75% + .7rem)}.xxlarge-offset-10{margin-left:83.3333333333%}.grid-margin-x>.xxlarge-offset-10{margin-left:calc(83.33333% + .7rem)}.xxlarge-offset-11{margin-left:91.6666666667%}.grid-margin-x>.xxlarge-offset-11{margin-left:calc(91.66667% + .7rem)}}.grid-y{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.grid-y>.cell{height:auto;max-height:none}.grid-y>.auto,.grid-y>.shrink{height:auto}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9,.grid-y>.small-full,.grid-y>.small-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-full,.grid-y>.medium-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-full,.grid-y>.large-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}@media screen and (min-width:75em){.grid-y>.xlarge-1,.grid-y>.xlarge-10,.grid-y>.xlarge-11,.grid-y>.xlarge-12,.grid-y>.xlarge-2,.grid-y>.xlarge-3,.grid-y>.xlarge-4,.grid-y>.xlarge-5,.grid-y>.xlarge-6,.grid-y>.xlarge-7,.grid-y>.xlarge-8,.grid-y>.xlarge-9,.grid-y>.xlarge-full,.grid-y>.xlarge-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}@media screen and (min-width:90em){.grid-y>.xxlarge-1,.grid-y>.xxlarge-10,.grid-y>.xxlarge-11,.grid-y>.xxlarge-12,.grid-y>.xxlarge-2,.grid-y>.xxlarge-3,.grid-y>.xxlarge-4,.grid-y>.xxlarge-5,.grid-y>.xxlarge-6,.grid-y>.xxlarge-7,.grid-y>.xxlarge-8,.grid-y>.xxlarge-9,.grid-y>.xxlarge-full,.grid-y>.xxlarge-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.small-1{height:8.3333333333%}.grid-y>.small-2{height:16.6666666667%}.grid-y>.small-3{height:25%}.grid-y>.small-4{height:33.3333333333%}.grid-y>.small-5{height:41.6666666667%}.grid-y>.small-6{height:50%}.grid-y>.small-7{height:58.3333333333%}.grid-y>.small-8{height:66.6666666667%}.grid-y>.small-9{height:75%}.grid-y>.small-10{height:83.3333333333%}.grid-y>.small-11{height:91.6666666667%}.grid-y>.small-12{height:100%}@media print,screen and (min-width:40em){.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.medium-shrink{height:auto}.grid-y>.medium-1{height:8.3333333333%}.grid-y>.medium-2{height:16.6666666667%}.grid-y>.medium-3{height:25%}.grid-y>.medium-4{height:33.3333333333%}.grid-y>.medium-5{height:41.6666666667%}.grid-y>.medium-6{height:50%}.grid-y>.medium-7{height:58.3333333333%}.grid-y>.medium-8{height:66.6666666667%}.grid-y>.medium-9{height:75%}.grid-y>.medium-10{height:83.3333333333%}.grid-y>.medium-11{height:91.6666666667%}.grid-y>.medium-12{height:100%}}@media print,screen and (min-width:64em){.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.large-shrink{height:auto}.grid-y>.large-1{height:8.3333333333%}.grid-y>.large-2{height:16.6666666667%}.grid-y>.large-3{height:25%}.grid-y>.large-4{height:33.3333333333%}.grid-y>.large-5{height:41.6666666667%}.grid-y>.large-6{height:50%}.grid-y>.large-7{height:58.3333333333%}.grid-y>.large-8{height:66.6666666667%}.grid-y>.large-9{height:75%}.grid-y>.large-10{height:83.3333333333%}.grid-y>.large-11{height:91.6666666667%}.grid-y>.large-12{height:100%}}@media screen and (min-width:75em){.grid-y>.xlarge-1,.grid-y>.xlarge-10,.grid-y>.xlarge-11,.grid-y>.xlarge-12,.grid-y>.xlarge-2,.grid-y>.xlarge-3,.grid-y>.xlarge-4,.grid-y>.xlarge-5,.grid-y>.xlarge-6,.grid-y>.xlarge-7,.grid-y>.xlarge-8,.grid-y>.xlarge-9,.grid-y>.xlarge-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.xlarge-shrink{height:auto}.grid-y>.xlarge-1{height:8.3333333333%}.grid-y>.xlarge-2{height:16.6666666667%}.grid-y>.xlarge-3{height:25%}.grid-y>.xlarge-4{height:33.3333333333%}.grid-y>.xlarge-5{height:41.6666666667%}.grid-y>.xlarge-6{height:50%}.grid-y>.xlarge-7{height:58.3333333333%}.grid-y>.xlarge-8{height:66.6666666667%}.grid-y>.xlarge-9{height:75%}.grid-y>.xlarge-10{height:83.3333333333%}.grid-y>.xlarge-11{height:91.6666666667%}.grid-y>.xlarge-12{height:100%}}@media screen and (min-width:90em){.grid-y>.xxlarge-1,.grid-y>.xxlarge-10,.grid-y>.xxlarge-11,.grid-y>.xxlarge-12,.grid-y>.xxlarge-2,.grid-y>.xxlarge-3,.grid-y>.xxlarge-4,.grid-y>.xxlarge-5,.grid-y>.xxlarge-6,.grid-y>.xxlarge-7,.grid-y>.xxlarge-8,.grid-y>.xxlarge-9,.grid-y>.xxlarge-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.xxlarge-shrink{height:auto}.grid-y>.xxlarge-1{height:8.3333333333%}.grid-y>.xxlarge-2{height:16.6666666667%}.grid-y>.xxlarge-3{height:25%}.grid-y>.xxlarge-4{height:33.3333333333%}.grid-y>.xxlarge-5{height:41.6666666667%}.grid-y>.xxlarge-6{height:50%}.grid-y>.xxlarge-7{height:58.3333333333%}.grid-y>.xxlarge-8{height:66.6666666667%}.grid-y>.xxlarge-9{height:75%}.grid-y>.xxlarge-10{height:83.3333333333%}.grid-y>.xxlarge-11{height:91.6666666667%}.grid-y>.xxlarge-12{height:100%}}.grid-padding-y .grid-padding-y{margin-bottom:-.3333333333rem;margin-top:-.3333333333rem}@media print,screen and (min-width:40em){.grid-padding-y .grid-padding-y{margin-bottom:-.7rem;margin-top:-.7rem}}@media print,screen and (min-width:64em){.grid-padding-y .grid-padding-y{margin-bottom:-.7rem;margin-top:-.7rem}}@media screen and (min-width:75em){.grid-padding-y .grid-padding-y{margin-bottom:-.7rem;margin-top:-.7rem}}@media screen and (min-width:90em){.grid-padding-y .grid-padding-y{margin-bottom:-.7rem;margin-top:-.7rem}}.grid-padding-y>.cell{padding-bottom:.3333333333rem;padding-top:.3333333333rem}@media print,screen and (min-width:40em){.grid-padding-y>.cell{padding-bottom:.7rem;padding-top:.7rem}}@media print,screen and (min-width:64em){.grid-padding-y>.cell{padding-bottom:.7rem;padding-top:.7rem}}@media screen and (min-width:75em){.grid-padding-y>.cell{padding-bottom:.7rem;padding-top:.7rem}}@media screen and (min-width:90em){.grid-padding-y>.cell{padding-bottom:.7rem;padding-top:.7rem}}.grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .grid-frame{width:100%}.cell-block{max-width:100%;overflow-x:auto}.cell-block,.cell-block-y{-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.cell-block-y{max-height:100%;min-height:100%;overflow-y:auto}.cell-block-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:100%}.cell-block-container>.grid-x{-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}@media print,screen and (min-width:40em){.medium-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .medium-grid-frame{width:100%}.medium-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.medium-cell-block-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:100%}.medium-cell-block-container>.grid-x{-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.medium-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media print,screen and (min-width:64em){.large-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .large-grid-frame{width:100%}.large-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.large-cell-block-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:100%}.large-cell-block-container>.grid-x{-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.large-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media screen and (min-width:75em){.xlarge-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .xlarge-grid-frame{width:100%}.xlarge-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.xlarge-cell-block-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:100%}.xlarge-cell-block-container>.grid-x{-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.xlarge-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media screen and (min-width:90em){.xxlarge-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .xxlarge-grid-frame{width:100%}.xxlarge-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.xxlarge-cell-block-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:100%}.xxlarge-cell-block-container>.grid-x{-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.xxlarge-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}.grid-y.grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}@media print,screen and (min-width:40em){.grid-y.medium-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}@media print,screen and (min-width:64em){.grid-y.large-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}@media screen and (min-width:75em){.grid-y.xlarge-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}@media screen and (min-width:90em){.grid-y.xxlarge-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}.cell .grid-y.grid-frame{height:100%}@media print,screen and (min-width:40em){.cell .grid-y.medium-grid-frame{height:100%}}@media print,screen and (min-width:64em){.cell .grid-y.large-grid-frame{height:100%}}@media screen and (min-width:75em){.cell .grid-y.xlarge-grid-frame{height:100%}}@media screen and (min-width:90em){.cell .grid-y.xxlarge-grid-frame{height:100%}}.grid-margin-y{margin-bottom:-.3333333333rem;margin-top:-.3333333333rem}@media print,screen and (min-width:40em){.grid-margin-y{margin-bottom:-.7rem;margin-top:-.7rem}}@media print,screen and (min-width:64em){.grid-margin-y{margin-bottom:-.7rem;margin-top:-.7rem}}@media screen and (min-width:75em){.grid-margin-y{margin-bottom:-.7rem;margin-top:-.7rem}}@media screen and (min-width:90em){.grid-margin-y{margin-bottom:-.7rem;margin-top:-.7rem}}.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - .66667rem)}.grid-margin-y>.small-2{height:calc(16.66667% - .66667rem)}.grid-margin-y>.small-3{height:calc(25% - .66667rem)}.grid-margin-y>.small-4{height:calc(33.33333% - .66667rem)}.grid-margin-y>.small-5{height:calc(41.66667% - .66667rem)}.grid-margin-y>.small-6{height:calc(50% - .66667rem)}.grid-margin-y>.small-7{height:calc(58.33333% - .66667rem)}.grid-margin-y>.small-8{height:calc(66.66667% - .66667rem)}.grid-margin-y>.small-9{height:calc(75% - .66667rem)}.grid-margin-y>.small-10{height:calc(83.33333% - .66667rem)}.grid-margin-y>.small-11{height:calc(91.66667% - .66667rem)}.grid-margin-y>.small-12{height:calc(100% - .66667rem)}@media print,screen and (min-width:40em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.small-3{height:calc(25% - 1.4rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.small-6{height:calc(50% - 1.4rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.small-9{height:calc(75% - 1.4rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.small-12{height:calc(100% - 1.4rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.4rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.4rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.4rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.4rem)}}@media print,screen and (min-width:64em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.small-3{height:calc(25% - 1.4rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.small-6{height:calc(50% - 1.4rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.small-9{height:calc(75% - 1.4rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.small-12{height:calc(100% - 1.4rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.4rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.4rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.4rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.4rem)}.grid-margin-y>.large-auto,.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.large-3{height:calc(25% - 1.4rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.large-6{height:calc(50% - 1.4rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.large-9{height:calc(75% - 1.4rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.large-12{height:calc(100% - 1.4rem)}}@media screen and (min-width:75em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.small-3{height:calc(25% - 1.4rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.small-6{height:calc(50% - 1.4rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.small-9{height:calc(75% - 1.4rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.small-12{height:calc(100% - 1.4rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.4rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.4rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.4rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.4rem)}.grid-margin-y>.large-auto,.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.large-3{height:calc(25% - 1.4rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.large-6{height:calc(50% - 1.4rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.large-9{height:calc(75% - 1.4rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.large-12{height:calc(100% - 1.4rem)}.grid-margin-y>.xlarge-auto,.grid-margin-y>.xlarge-shrink{height:auto}.grid-margin-y>.xlarge-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.xlarge-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.xlarge-3{height:calc(25% - 1.4rem)}.grid-margin-y>.xlarge-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.xlarge-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.xlarge-6{height:calc(50% - 1.4rem)}.grid-margin-y>.xlarge-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.xlarge-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.xlarge-9{height:calc(75% - 1.4rem)}.grid-margin-y>.xlarge-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.xlarge-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.xlarge-12{height:calc(100% - 1.4rem)}}@media screen and (min-width:90em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.small-3{height:calc(25% - 1.4rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.small-6{height:calc(50% - 1.4rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.small-9{height:calc(75% - 1.4rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.small-12{height:calc(100% - 1.4rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.4rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.4rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.4rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.4rem)}.grid-margin-y>.large-auto,.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.large-3{height:calc(25% - 1.4rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.large-6{height:calc(50% - 1.4rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.large-9{height:calc(75% - 1.4rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.large-12{height:calc(100% - 1.4rem)}.grid-margin-y>.xlarge-auto,.grid-margin-y>.xlarge-shrink{height:auto}.grid-margin-y>.xlarge-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.xlarge-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.xlarge-3{height:calc(25% - 1.4rem)}.grid-margin-y>.xlarge-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.xlarge-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.xlarge-6{height:calc(50% - 1.4rem)}.grid-margin-y>.xlarge-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.xlarge-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.xlarge-9{height:calc(75% - 1.4rem)}.grid-margin-y>.xlarge-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.xlarge-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.xlarge-12{height:calc(100% - 1.4rem)}.grid-margin-y>.xxlarge-auto,.grid-margin-y>.xxlarge-shrink{height:auto}.grid-margin-y>.xxlarge-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.xxlarge-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.xxlarge-3{height:calc(25% - 1.4rem)}.grid-margin-y>.xxlarge-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.xxlarge-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.xxlarge-6{height:calc(50% - 1.4rem)}.grid-margin-y>.xxlarge-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.xxlarge-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.xxlarge-9{height:calc(75% - 1.4rem)}.grid-margin-y>.xxlarge-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.xxlarge-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.xxlarge-12{height:calc(100% - 1.4rem)}}.grid-frame.grid-margin-y{height:calc(100vh + .66667rem)}@media print,screen and (min-width:40em){.grid-frame.grid-margin-y{height:calc(100vh + 1.4rem)}}@media print,screen and (min-width:64em){.grid-frame.grid-margin-y{height:calc(100vh + 1.4rem)}}@media screen and (min-width:75em){.grid-frame.grid-margin-y{height:calc(100vh + 1.4rem)}}@media screen and (min-width:90em){.grid-frame.grid-margin-y{height:calc(100vh + 1.4rem)}}@media print,screen and (min-width:40em){.grid-margin-y.medium-grid-frame{height:calc(100vh + 1.4rem)}}@media print,screen and (min-width:64em){.grid-margin-y.large-grid-frame{height:calc(100vh + 1.4rem)}}@media screen and (min-width:75em){.grid-margin-y.xlarge-grid-frame{height:calc(100vh + 1.4rem)}}@media screen and (min-width:90em){.grid-margin-y.xxlarge-grid-frame{height:calc(100vh + 1.4rem)}}.button{-webkit-appearance:none;border:1px solid transparent;border-radius:5px;cursor:pointer;display:inline-block;font-family:inherit;font-size:.9rem;line-height:1;margin:0 0 1rem;padding:.85em 1em;text-align:center;-webkit-transition:background-color .25s ease-out,color .25s ease-out;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle}[data-whatinput=mouse] .button{outline:0}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;margin-left:0;margin-right:0;width:100%}.button,.button.disabled,.button.disabled:focus,.button.disabled:hover,.button[disabled],.button[disabled]:focus,.button[disabled]:hover{background-color:#3f729b;color:#fefefe}.button:focus,.button:hover{background-color:#366184;color:#fefefe}.button.primary,.button.primary.disabled,.button.primary.disabled:focus,.button.primary.disabled:hover,.button.primary[disabled],.button.primary[disabled]:focus,.button.primary[disabled]:hover{background-color:#3f729b;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#325b7c;color:#fefefe}.button.secondary,.button.secondary.disabled,.button.secondary.disabled:focus,.button.secondary.disabled:hover,.button.secondary[disabled],.button.secondary[disabled]:focus,.button.secondary[disabled]:hover{background-color:#8bc34a;color:#0a0a0a}.button.secondary:focus,.button.secondary:hover{background-color:#70a236;color:#0a0a0a}.button.success,.button.success.disabled,.button.success.disabled:focus,.button.success.disabled:hover,.button.success[disabled],.button.success[disabled]:focus,.button.success[disabled]:hover{background-color:#4caf50;color:#0a0a0a}.button.success:focus,.button.success:hover{background-color:#3d8c40;color:#0a0a0a}.button.warning,.button.warning.disabled,.button.warning.disabled:focus,.button.warning.disabled:hover,.button.warning[disabled],.button.warning[disabled]:focus,.button.warning[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#0a0a0a}.button.alert,.button.alert.disabled,.button.alert.disabled:focus,.button.alert.disabled:hover,.button.alert[disabled],.button.alert[disabled]:focus,.button.alert[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#a53b2a;color:#fefefe}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow:focus,.button.hollow:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{background-color:transparent}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{border:1px solid #3f729b;color:#3f729b}.button.hollow:focus,.button.hollow:hover{border-color:#20394e;color:#20394e}.button.hollow.primary,.button.hollow.primary.disabled,.button.hollow.primary.disabled:focus,.button.hollow.primary.disabled:hover,.button.hollow.primary[disabled],.button.hollow.primary[disabled]:focus,.button.hollow.primary[disabled]:hover{border:1px solid #3f729b;color:#3f729b}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#20394e;color:#20394e}.button.hollow.secondary,.button.hollow.secondary.disabled,.button.hollow.secondary.disabled:focus,.button.hollow.secondary.disabled:hover,.button.hollow.secondary[disabled],.button.hollow.secondary[disabled]:focus,.button.hollow.secondary[disabled]:hover{border:1px solid #8bc34a;color:#8bc34a}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#466521;color:#466521}.button.hollow.success,.button.hollow.success.disabled,.button.hollow.success.disabled:focus,.button.hollow.success.disabled:hover,.button.hollow.success[disabled],.button.hollow.success[disabled]:focus,.button.hollow.success[disabled]:hover{border:1px solid #4caf50;color:#4caf50}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#265828;color:#265828}.button.hollow.warning,.button.hollow.warning.disabled,.button.hollow.warning.disabled:focus,.button.hollow.warning.disabled:hover,.button.hollow.warning[disabled],.button.hollow.warning[disabled]:focus,.button.hollow.warning[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert,.button.hollow.alert.disabled,.button.hollow.alert.disabled:focus,.button.hollow.alert.disabled:hover,.button.hollow.alert[disabled],.button.hollow.alert[disabled]:focus,.button.hollow.alert[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#67251a;color:#67251a}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear:focus,.button.clear:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{background-color:transparent;border-color:transparent}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{color:#3f729b}.button.clear:focus,.button.clear:hover{color:#20394e}.button.clear.primary,.button.clear.primary.disabled,.button.clear.primary.disabled:focus,.button.clear.primary.disabled:hover,.button.clear.primary[disabled],.button.clear.primary[disabled]:focus,.button.clear.primary[disabled]:hover{color:#3f729b}.button.clear.primary:focus,.button.clear.primary:hover{color:#20394e}.button.clear.secondary,.button.clear.secondary.disabled,.button.clear.secondary.disabled:focus,.button.clear.secondary.disabled:hover,.button.clear.secondary[disabled],.button.clear.secondary[disabled]:focus,.button.clear.secondary[disabled]:hover{color:#8bc34a}.button.clear.secondary:focus,.button.clear.secondary:hover{color:#466521}.button.clear.success,.button.clear.success.disabled,.button.clear.success.disabled:focus,.button.clear.success.disabled:hover,.button.clear.success[disabled],.button.clear.success[disabled]:focus,.button.clear.success[disabled]:hover{color:#4caf50}.button.clear.success:focus,.button.clear.success:hover{color:#265828}.button.clear.warning,.button.clear.warning.disabled,.button.clear.warning.disabled:focus,.button.clear.warning.disabled:hover,.button.clear.warning[disabled],.button.clear.warning[disabled]:focus,.button.clear.warning[disabled]:hover{color:#ffae00}.button.clear.warning:focus,.button.clear.warning:hover{color:#805700}.button.clear.alert,.button.clear.alert.disabled,.button.clear.alert.disabled:focus,.button.clear.alert.disabled:hover,.button.clear.alert[disabled],.button.clear.alert[disabled]:focus,.button.clear.alert[disabled]:hover{color:#cc4b37}.button.clear.alert:focus,.button.clear.alert:hover{color:#67251a}.button.disabled,.button[disabled]{cursor:not-allowed;opacity:.25}.button.dropdown:after{border-color:#fefefe transparent transparent;border-style:solid;border-width:.4em .4em 0;content:"";display:block;display:inline-block;float:right;height:0;margin-left:1em;position:relative;top:.4em;width:0}.button.dropdown.clear.primary:after,.button.dropdown.clear:after,.button.dropdown.hollow.primary:after,.button.dropdown.hollow:after{border-top-color:#3f729b}.button.dropdown.clear.secondary:after,.button.dropdown.hollow.secondary:after{border-top-color:#8bc34a}.button.dropdown.clear.success:after,.button.dropdown.hollow.success:after{border-top-color:#4caf50}.button.dropdown.clear.warning:after,.button.dropdown.hollow.warning:after{border-top-color:#ffae00}.button.dropdown.clear.alert:after,.button.dropdown.hollow.alert:after{border-top-color:#cc4b37}.button.arrow-only:after{float:none;margin-left:0;top:-.1em}a.button:focus,a.button:hover{text-decoration:none}.button-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:1rem;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.button-group:after,.button-group:before{content:" ";display:table;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.button-group:after{clear:both}.button-group:after,.button-group:before{display:none}.button-group .button{font-size:.9rem;margin:0 1px 1px 0;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded .button{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}.button-group.primary .button,.button-group.primary .button.disabled,.button-group.primary .button.disabled:focus,.button-group.primary .button.disabled:hover,.button-group.primary .button[disabled],.button-group.primary .button[disabled]:focus,.button-group.primary .button[disabled]:hover{background-color:#3f729b;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#325b7c;color:#fefefe}.button-group.secondary .button,.button-group.secondary .button.disabled,.button-group.secondary .button.disabled:focus,.button-group.secondary .button.disabled:hover,.button-group.secondary .button[disabled],.button-group.secondary .button[disabled]:focus,.button-group.secondary .button[disabled]:hover{background-color:#8bc34a;color:#0a0a0a}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#70a236;color:#0a0a0a}.button-group.success .button,.button-group.success .button.disabled,.button-group.success .button.disabled:focus,.button-group.success .button.disabled:hover,.button-group.success .button[disabled],.button-group.success .button[disabled]:focus,.button-group.success .button[disabled]:hover{background-color:#4caf50;color:#0a0a0a}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#3d8c40;color:#0a0a0a}.button-group.warning .button,.button-group.warning .button.disabled,.button-group.warning .button.disabled:focus,.button-group.warning .button.disabled:hover,.button-group.warning .button[disabled],.button-group.warning .button[disabled]:focus,.button-group.warning .button[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#0a0a0a}.button-group.alert .button,.button-group.alert .button.disabled,.button-group.alert .button.disabled:focus,.button-group.alert .button.disabled:hover,.button-group.alert .button[disabled],.button-group.alert .button[disabled]:focus,.button-group.alert .button[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#a53b2a;color:#fefefe}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button:focus,.button-group.hollow .button:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{background-color:transparent}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{border:1px solid #3f729b;color:#3f729b}.button-group.hollow .button:focus,.button-group.hollow .button:hover{border-color:#20394e;color:#20394e}.button-group.hollow .button.primary,.button-group.hollow .button.primary.disabled,.button-group.hollow .button.primary.disabled:focus,.button-group.hollow .button.primary.disabled:hover,.button-group.hollow .button.primary[disabled],.button-group.hollow .button.primary[disabled]:focus,.button-group.hollow .button.primary[disabled]:hover,.button-group.hollow.primary .button,.button-group.hollow.primary .button.disabled,.button-group.hollow.primary .button.disabled:focus,.button-group.hollow.primary .button.disabled:hover,.button-group.hollow.primary .button[disabled],.button-group.hollow.primary .button[disabled]:focus,.button-group.hollow.primary .button[disabled]:hover{border:1px solid #3f729b;color:#3f729b}.button-group.hollow .button.primary:focus,.button-group.hollow .button.primary:hover,.button-group.hollow.primary .button:focus,.button-group.hollow.primary .button:hover{border-color:#20394e;color:#20394e}.button-group.hollow .button.secondary,.button-group.hollow .button.secondary.disabled,.button-group.hollow .button.secondary.disabled:focus,.button-group.hollow .button.secondary.disabled:hover,.button-group.hollow .button.secondary[disabled],.button-group.hollow .button.secondary[disabled]:focus,.button-group.hollow .button.secondary[disabled]:hover,.button-group.hollow.secondary .button,.button-group.hollow.secondary .button.disabled,.button-group.hollow.secondary .button.disabled:focus,.button-group.hollow.secondary .button.disabled:hover,.button-group.hollow.secondary .button[disabled],.button-group.hollow.secondary .button[disabled]:focus,.button-group.hollow.secondary .button[disabled]:hover{border:1px solid #8bc34a;color:#8bc34a}.button-group.hollow .button.secondary:focus,.button-group.hollow .button.secondary:hover,.button-group.hollow.secondary .button:focus,.button-group.hollow.secondary .button:hover{border-color:#466521;color:#466521}.button-group.hollow .button.success,.button-group.hollow .button.success.disabled,.button-group.hollow .button.success.disabled:focus,.button-group.hollow .button.success.disabled:hover,.button-group.hollow .button.success[disabled],.button-group.hollow .button.success[disabled]:focus,.button-group.hollow .button.success[disabled]:hover,.button-group.hollow.success .button,.button-group.hollow.success .button.disabled,.button-group.hollow.success .button.disabled:focus,.button-group.hollow.success .button.disabled:hover,.button-group.hollow.success .button[disabled],.button-group.hollow.success .button[disabled]:focus,.button-group.hollow.success .button[disabled]:hover{border:1px solid #4caf50;color:#4caf50}.button-group.hollow .button.success:focus,.button-group.hollow .button.success:hover,.button-group.hollow.success .button:focus,.button-group.hollow.success .button:hover{border-color:#265828;color:#265828}.button-group.hollow .button.warning,.button-group.hollow .button.warning.disabled,.button-group.hollow .button.warning.disabled:focus,.button-group.hollow .button.warning.disabled:hover,.button-group.hollow .button.warning[disabled],.button-group.hollow .button.warning[disabled]:focus,.button-group.hollow .button.warning[disabled]:hover,.button-group.hollow.warning .button,.button-group.hollow.warning .button.disabled,.button-group.hollow.warning .button.disabled:focus,.button-group.hollow.warning .button.disabled:hover,.button-group.hollow.warning .button[disabled],.button-group.hollow.warning .button[disabled]:focus,.button-group.hollow.warning .button[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button-group.hollow .button.warning:focus,.button-group.hollow .button.warning:hover,.button-group.hollow.warning .button:focus,.button-group.hollow.warning .button:hover{border-color:#805700;color:#805700}.button-group.hollow .button.alert,.button-group.hollow .button.alert.disabled,.button-group.hollow .button.alert.disabled:focus,.button-group.hollow .button.alert.disabled:hover,.button-group.hollow .button.alert[disabled],.button-group.hollow .button.alert[disabled]:focus,.button-group.hollow .button.alert[disabled]:hover,.button-group.hollow.alert .button,.button-group.hollow.alert .button.disabled,.button-group.hollow.alert .button.disabled:focus,.button-group.hollow.alert .button.disabled:hover,.button-group.hollow.alert .button[disabled],.button-group.hollow.alert .button[disabled]:focus,.button-group.hollow.alert .button[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button-group.hollow .button.alert:focus,.button-group.hollow .button.alert:hover,.button-group.hollow.alert .button:focus,.button-group.hollow.alert .button:hover{border-color:#67251a;color:#67251a}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button:focus,.button-group.clear .button:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{background-color:transparent;border-color:transparent}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{color:#3f729b}.button-group.clear .button:focus,.button-group.clear .button:hover{color:#20394e}.button-group.clear .button.primary,.button-group.clear .button.primary.disabled,.button-group.clear .button.primary.disabled:focus,.button-group.clear .button.primary.disabled:hover,.button-group.clear .button.primary[disabled],.button-group.clear .button.primary[disabled]:focus,.button-group.clear .button.primary[disabled]:hover,.button-group.clear.primary .button,.button-group.clear.primary .button.disabled,.button-group.clear.primary .button.disabled:focus,.button-group.clear.primary .button.disabled:hover,.button-group.clear.primary .button[disabled],.button-group.clear.primary .button[disabled]:focus,.button-group.clear.primary .button[disabled]:hover{color:#3f729b}.button-group.clear .button.primary:focus,.button-group.clear .button.primary:hover,.button-group.clear.primary .button:focus,.button-group.clear.primary .button:hover{color:#20394e}.button-group.clear .button.secondary,.button-group.clear .button.secondary.disabled,.button-group.clear .button.secondary.disabled:focus,.button-group.clear .button.secondary.disabled:hover,.button-group.clear .button.secondary[disabled],.button-group.clear .button.secondary[disabled]:focus,.button-group.clear .button.secondary[disabled]:hover,.button-group.clear.secondary .button,.button-group.clear.secondary .button.disabled,.button-group.clear.secondary .button.disabled:focus,.button-group.clear.secondary .button.disabled:hover,.button-group.clear.secondary .button[disabled],.button-group.clear.secondary .button[disabled]:focus,.button-group.clear.secondary .button[disabled]:hover{color:#8bc34a}.button-group.clear .button.secondary:focus,.button-group.clear .button.secondary:hover,.button-group.clear.secondary .button:focus,.button-group.clear.secondary .button:hover{color:#466521}.button-group.clear .button.success,.button-group.clear .button.success.disabled,.button-group.clear .button.success.disabled:focus,.button-group.clear .button.success.disabled:hover,.button-group.clear .button.success[disabled],.button-group.clear .button.success[disabled]:focus,.button-group.clear .button.success[disabled]:hover,.button-group.clear.success .button,.button-group.clear.success .button.disabled,.button-group.clear.success .button.disabled:focus,.button-group.clear.success .button.disabled:hover,.button-group.clear.success .button[disabled],.button-group.clear.success .button[disabled]:focus,.button-group.clear.success .button[disabled]:hover{color:#4caf50}.button-group.clear .button.success:focus,.button-group.clear .button.success:hover,.button-group.clear.success .button:focus,.button-group.clear.success .button:hover{color:#265828}.button-group.clear .button.warning,.button-group.clear .button.warning.disabled,.button-group.clear .button.warning.disabled:focus,.button-group.clear .button.warning.disabled:hover,.button-group.clear .button.warning[disabled],.button-group.clear .button.warning[disabled]:focus,.button-group.clear .button.warning[disabled]:hover,.button-group.clear.warning .button,.button-group.clear.warning .button.disabled,.button-group.clear.warning .button.disabled:focus,.button-group.clear.warning .button.disabled:hover,.button-group.clear.warning .button[disabled],.button-group.clear.warning .button[disabled]:focus,.button-group.clear.warning .button[disabled]:hover{color:#ffae00}.button-group.clear .button.warning:focus,.button-group.clear .button.warning:hover,.button-group.clear.warning .button:focus,.button-group.clear.warning .button:hover{color:#805700}.button-group.clear .button.alert,.button-group.clear .button.alert.disabled,.button-group.clear .button.alert.disabled:focus,.button-group.clear .button.alert.disabled:hover,.button-group.clear .button.alert[disabled],.button-group.clear .button.alert[disabled]:focus,.button-group.clear .button.alert[disabled]:hover,.button-group.clear.alert .button,.button-group.clear.alert .button.disabled,.button-group.clear.alert .button.disabled:focus,.button-group.clear.alert .button.disabled:hover,.button-group.clear.alert .button[disabled],.button-group.clear.alert .button[disabled]:focus,.button-group.clear.alert .button[disabled]:hover{color:#cc4b37}.button-group.clear .button.alert:focus,.button-group.clear .button.alert:hover,.button-group.clear.alert .button:focus,.button-group.clear.alert .button:hover{color:#67251a}.button-group.no-gaps .button{margin-right:-.0666666667rem}.button-group.no-gaps .button+.button{border-left-color:transparent}.button-group.stacked,.button-group.stacked-for-medium,.button-group.stacked-for-small{-ms-flex-wrap:wrap;flex-wrap:wrap}.button-group.stacked .button,.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%}.button-group.stacked .button:last-child,.button-group.stacked-for-medium .button:last-child,.button-group.stacked-for-small .button:last-child{margin-bottom:0}.button-group.stacked-for-medium.expanded .button,.button-group.stacked-for-small.expanded .button,.button-group.stacked.expanded .button{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}@media print,screen and (min-width:40em){.button-group.stacked-for-small .button{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (min-width:64em){.button-group.stacked-for-medium .button{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (max-width:39.99875em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}@media print,screen and (max-width:63.99875em){.button-group.stacked-for-medium.expanded{display:block}.button-group.stacked-for-medium.expanded .button{display:block;margin-right:0}}.close-button{color:#8a8a8a;cursor:pointer;position:absolute;z-index:10}[data-whatinput=mouse] .close-button{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.close-button.small{font-size:1.5em;line-height:1;right:.66rem;top:.33em}.close-button,.close-button.medium{font-size:2em;line-height:1;right:1rem;top:.5rem}.label{border-radius:0;cursor:default;display:inline-block;font-size:.8rem;line-height:1;padding:.33333rem .5rem;white-space:nowrap}.label,.label.primary{background:#3f729b;color:#fefefe}.label.secondary{background:#8bc34a;color:#0a0a0a}.label.success{background:#4caf50;color:#0a0a0a}.label.warning{background:#ffae00;color:#0a0a0a}.label.alert{background:#cc4b37;color:#fefefe}.progress{background-color:#cacaca;border-radius:0;height:1rem;margin-bottom:1rem}.progress.primary .progress-meter{background-color:#3f729b}.progress.secondary .progress-meter{background-color:#8bc34a}.progress.success .progress-meter{background-color:#4caf50}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#cc4b37}.progress-meter{background-color:#3f729b;display:block;height:100%;position:relative;width:0}.progress-meter-text{color:#fefefe;font-size:.75rem;font-weight:700;left:50%;margin:0;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);white-space:nowrap}.slider{background-color:#e6e6e6;cursor:pointer;height:.5rem;margin-bottom:2.25rem;margin-top:1.25rem;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.slider-fill{background-color:#cacaca;display:inline-block;height:.5rem;left:0;max-width:100%;position:absolute;top:0;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.slider-fill.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider-handle{background-color:#3f729b;border-radius:0;cursor:-webkit-grab;cursor:grab;display:inline-block;height:1.4rem;left:0;position:absolute;top:50%;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;width:1.4rem;z-index:1}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#366184}.slider-handle.is-dragging{cursor:-webkit-grabbing;cursor:grabbing;-webkit-transition:all 0s linear;transition:all 0s linear}.slider.disabled,.slider[disabled]{cursor:not-allowed;opacity:.25}.slider.vertical{display:inline-block;height:12.5rem;margin:0 1.25rem;-webkit-transform:scaleY(-1);transform:scaleY(-1);width:.5rem}.slider.vertical .slider-fill{max-height:100%;top:0;width:.5rem}.slider.vertical .slider-handle{height:1.4rem;left:50%;position:absolute;top:0;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:1.4rem}.switch{color:#fefefe;font-size:.9333333333rem;font-weight:700;height:2rem;margin-bottom:1rem;outline:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-input{margin-bottom:0;opacity:0;position:absolute}.switch-paddle{background:#cacaca;border-radius:0;color:inherit;cursor:pointer;display:block;font-weight:inherit;height:2rem;position:relative;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:4rem}input+.switch-paddle{margin:0}.switch-paddle:after{background:#fefefe;border-radius:0;content:"";display:block;height:1.5rem;left:.25rem;position:absolute;top:.25rem;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:1.5rem}input:checked~.switch-paddle{background:#3f729b}input:checked~.switch-paddle:after{left:2.25rem}input:disabled~.switch-paddle{cursor:not-allowed;opacity:.5}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{display:none;left:8%}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{font-size:.6666666667rem;height:1.5rem;width:3rem}.switch.tiny .switch-paddle:after{height:1rem;left:.25rem;top:.25rem;width:1rem}.switch.tiny input:checked~.switch-paddle:after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{font-size:.8rem;height:1.75rem;width:3.5rem}.switch.small .switch-paddle:after{height:1.25rem;left:.25rem;top:.25rem;width:1.25rem}.switch.small input:checked~.switch-paddle:after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{font-size:1.0666666667rem;height:2.5rem;width:5rem}.switch.large .switch-paddle:after{height:2rem;left:.25rem;top:.25rem;width:2rem}.switch.large input:checked~.switch-paddle:after{left:2.75rem}table{border-collapse:collapse;border-radius:0;margin-bottom:1rem;width:100%}tbody,tfoot,thead{background-color:#fefefe;border:1px solid #f1f1f1}caption{font-weight:700;padding:.5333333333rem .6666666667rem .6666666667rem}thead{background:transparent}tfoot,thead{color:#0a0a0a}tfoot{background:#f1f1f1}tfoot tr,thead tr{background:transparent}tfoot td,tfoot th,thead td,thead th{font-weight:700;text-align:left}tbody td,tbody th,tfoot td,tfoot th,thead td,thead th{padding:.5333333333rem .6666666667rem .6666666667rem}tbody tr{background-color:#fefefe;border-bottom:1px solid #f1f1f1}@media print,screen and (max-width:63.99875em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;overflow-x:auto;width:100%}table.hover thead tr:hover{background-color:transparent}table.hover tfoot tr:hover{background-color:#ececec}table.hover tbody tr:hover{background-color:#f9f9f9}.table-scroll{overflow-x:auto}.badge{border-radius:50%;display:inline-block;font-size:.6rem;min-width:2.1em;padding:.3em;text-align:center}.badge,.badge.primary{background:#3f729b;color:#fefefe}.badge.secondary{background:#8bc34a;color:#0a0a0a}.badge.success{background:#4caf50;color:#0a0a0a}.badge.warning{background:#ffae00;color:#0a0a0a}.badge.alert{background:#cc4b37;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs:after,.breadcrumbs:before{content:" ";display:table;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.breadcrumbs:after{clear:both}.breadcrumbs li{color:#0a0a0a;cursor:default;float:left;font-size:.7333333333rem;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{color:#cacaca;content:"/";margin:0 .75rem;opacity:1;position:relative}.breadcrumbs a{color:#3f729b}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.callout{background-color:#fff;border:1px solid hsla(0,0%,4%,.25);border-radius:0;color:#0a0a0a;margin:0 0 1rem;padding:1rem;position:relative}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#e0eaf2;color:#0a0a0a}.callout.secondary{background-color:#eef6e4;color:#0a0a0a}.callout.success{background-color:#e4f3e5;color:#0a0a0a}.callout.warning{background-color:#fff3d9;color:#0a0a0a}.callout.alert{background-color:#f7e4e1;color:#0a0a0a}.callout.small{padding:.5rem}.callout.large{padding:3rem}.card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex-positive:1;background:#fefefe;border:1px solid #e6e6e6;border-radius:0;-webkit-box-shadow:none;box-shadow:none;color:#0a0a0a;flex-grow:1;margin-bottom:1rem;overflow:hidden}.card>:last-child{margin-bottom:0}.card-divider{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;background:#e6e6e6;-ms-flex:0 1 auto;flex:0 1 auto;padding:1rem}.card-divider>:last-child{margin-bottom:0}.card-section{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;padding:1rem}.card-section>:last-child{margin-bottom:0}.card-image{min-height:1px}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:none;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:10}.dropdown-pane.is-opening{display:block}.dropdown-pane.is-open{display:block;visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.pagination{margin-bottom:1rem;margin-left:0}.pagination:after,.pagination:before{content:" ";display:table;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.pagination:after{clear:both}.pagination li{border-radius:0;display:none;font-size:.9333333333rem;margin-right:.0666666667rem}.pagination li:first-child,.pagination li:last-child{display:inline-block}@media print,screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{border-radius:0;color:#0a0a0a;display:block;padding:.2rem .6666666667rem}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{background:#3f729b;color:#fefefe;cursor:default;padding:.2rem .6666666667rem}.pagination .disabled{color:#cacaca;cursor:not-allowed;padding:.2rem .6666666667rem}.pagination .disabled:hover{background:transparent}.pagination .ellipsis:after{color:#0a0a0a;content:"…";padding:.2rem .6666666667rem}.pagination-previous a:before,.pagination-previous.disabled:before{content:"«";display:inline-block;margin-right:.5rem}.pagination-next a:after,.pagination-next.disabled:after{content:"»";display:inline-block;margin-left:.5rem}.has-tip{border-bottom:1px dotted #8a8a8a;cursor:help;display:inline-block;font-weight:700;position:relative}.tooltip{background-color:#0a0a0a;border-radius:0;color:#fefefe;font-size:80%;max-width:10rem;padding:.75rem;top:calc(100% + .6495rem);z-index:1200}.tooltip,.tooltip:before{position:absolute}.tooltip.bottom:before{border-color:transparent transparent #0a0a0a;border-style:solid;border-width:0 .75rem .75rem;bottom:100%;content:"";display:block;height:0;width:0}.tooltip.bottom.align-center:before{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top:before{border-color:#0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem 0;bottom:auto;content:"";display:block;height:0;top:100%;width:0}.tooltip.top.align-center:before{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.left:before{border-color:transparent transparent transparent #0a0a0a;border-style:solid;border-width:.75rem 0 .75rem .75rem;content:"";display:block;height:0;left:100%;width:0}.tooltip.left.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right:before{border-color:transparent #0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem .75rem 0;content:"";display:block;height:0;left:auto;right:100%;width:0}.tooltip.right.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.align-top:before{bottom:auto;top:10%}.tooltip.align-bottom:before{bottom:10%;top:auto}.tooltip.align-left:before{left:10%;right:auto}.tooltip.align-right:before{left:auto;right:10%}.accordion{background:#fefefe;list-style-type:none;margin-left:0}.accordion[disabled] .accordion-title{cursor:not-allowed}.accordion-item:first-child>:first-child,.accordion-item:last-child>:last-child{border-radius:0 0 0 0}.accordion-title{border:1px solid #e6e6e6;border-bottom:0;color:#3f729b;display:block;font-size:.8rem;line-height:1;padding:1.25rem 1rem;position:relative}:last-child:not(.is-active)>.accordion-title{border-bottom:1px solid #e6e6e6;border-radius:0 0 0 0}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title:before{content:"+";margin-top:-.5rem;position:absolute;right:1rem;top:50%}.is-active>.accordion-title:before{content:"–"}.accordion-content{background-color:#fefefe;border:1px solid #e6e6e6;border-bottom:0;color:#0a0a0a;display:none;padding:1rem}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.media-object{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;margin-bottom:0}.media-object img{max-width:none}@media print,screen and (max-width:39.99875em){.media-object.stack-for-small{-ms-flex-wrap:wrap;flex-wrap:wrap}}.media-object-section{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}@media print,screen and (max-width:39.99875em){.stack-for-small .media-object-section{padding:0 0 1rem;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.stack-for-small .media-object-section img{width:100%}}.media-object-section.main-section{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}.orbit,.orbit-container{position:relative}.orbit-container{height:0;list-style:none;margin:0;overflow:hidden}.orbit-slide{position:absolute;width:100%}.orbit-slide.no-motionui.is-active{left:0;top:0}.orbit-figure{margin:0}.orbit-image{margin:0;max-width:100%;width:100%}.orbit-caption{background-color:hsla(0,0%,4%,.5);bottom:0;margin-bottom:0;width:100%}.orbit-caption,.orbit-next,.orbit-previous{color:#fefefe;padding:1rem;position:absolute}.orbit-next,.orbit-previous{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:10}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:hsla(0,0%,4%,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{margin-bottom:.8rem;margin-top:.8rem;position:relative;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{background-color:#cacaca;border-radius:50%;height:1.2rem;margin:.1rem;width:1.2rem}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.flex-video,.responsive-embed{height:0;margin-bottom:1.0666666667rem;overflow:hidden;padding-bottom:75%;position:relative}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video,.responsive-embed embed,.responsive-embed iframe,.responsive-embed object,.responsive-embed video{height:100%;left:0;position:absolute;top:0;width:100%}.flex-video.widescreen,.responsive-embed.widescreen{padding-bottom:56.25%}.tabs{background:#fefefe;border:1px solid #e6e6e6;list-style-type:none;margin:0}.tabs:after,.tabs:before{content:" ";display:table;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.tabs:after{clear:both}.tabs.vertical>li{display:block;float:none;width:auto}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:transparent}.tabs.primary{background:#3f729b}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#3c6c93}.tabs-title{float:left}.tabs-title>a{color:#3f729b;display:block;font-size:.9333333333rem;line-height:1;padding:1.25rem 1.5rem}[data-whatinput=mouse] .tabs-title>a{outline:0}.tabs-title>a:hover{background:#fefefe;color:#366285}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#3f729b;color:#fefefe}.tabs-content{background:#fefefe;border:1px solid #e6e6e6;border-top:0;color:#0a0a0a;-webkit-transition:all .5s ease;transition:all .5s ease}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:4px solid #fefefe;border-radius:0;-webkit-box-shadow:0 0 0 1px hsla(0,0%,4%,.2);box-shadow:0 0 0 1px hsla(0,0%,4%,.2);display:inline-block;line-height:0;margin-bottom:1rem;max-width:100%}a.thumbnail{-webkit-transition:-webkit-box-shadow .2s ease-out;transition:-webkit-box-shadow .2s ease-out;transition:box-shadow .2s ease-out;transition:box-shadow .2s ease-out,-webkit-box-shadow .2s ease-out}a.thumbnail:focus,a.thumbnail:hover{-webkit-box-shadow:0 0 6px 1px rgba(63,114,155,.5);box-shadow:0 0 6px 1px rgba(63,114,155,.5)}a.thumbnail image{-webkit-box-shadow:none;box-shadow:none}.menu{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin:0;padding:0;position:relative}[data-whatinput=mouse] .menu li{outline:0}.menu .button,.menu a{display:block;line-height:1;padding:.7rem 1rem;text-decoration:none}.menu a,.menu button,.menu input,.menu select{margin-bottom:0}.menu input{display:inline-block}.menu,.menu.horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.menu.vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.menu.vertical.icon-bottom li a i,.menu.vertical.icon-bottom li a img,.menu.vertical.icon-bottom li a svg,.menu.vertical.icon-top li a i,.menu.vertical.icon-top li a img,.menu.vertical.icon-top li a svg{text-align:left}.menu.expanded li{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}.menu.expanded.icon-bottom li a i,.menu.expanded.icon-bottom li a img,.menu.expanded.icon-bottom li a svg,.menu.expanded.icon-top li a i,.menu.expanded.icon-top li a img,.menu.expanded.icon-top li a svg{text-align:left}.menu.simple{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.menu.simple li+li{margin-left:1rem}.menu.simple a{padding:0}@media print,screen and (min-width:40em){.menu.medium-horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.menu.medium-vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.menu.medium-expanded li,.menu.medium-simple li{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}}@media print,screen and (min-width:64em){.menu.large-horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.menu.large-vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.menu.large-expanded li,.menu.large-simple li{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}}@media screen and (min-width:75em){.menu.xlarge-horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.menu.xlarge-vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.menu.xlarge-expanded li,.menu.xlarge-simple li{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}}@media screen and (min-width:90em){.menu.xxlarge-horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.menu.xxlarge-vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.menu.xxlarge-expanded li,.menu.xxlarge-simple li{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}}.menu.nested{margin-left:1rem;margin-right:0}.menu.icon-bottom a,.menu.icon-left a,.menu.icon-right a,.menu.icon-top a,.menu.icons a{display:-webkit-box;display:-ms-flexbox;display:flex}.menu.icon-left li a,.menu.nested.icon-left li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-left li a i,.menu.icon-left li a img,.menu.icon-left li a svg,.menu.nested.icon-left li a i,.menu.nested.icon-left li a img,.menu.nested.icon-left li a svg{margin-right:.25rem}.menu.icon-right li a,.menu.nested.icon-right li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-right li a i,.menu.icon-right li a img,.menu.icon-right li a svg,.menu.nested.icon-right li a i,.menu.nested.icon-right li a img,.menu.nested.icon-right li a svg{margin-left:.25rem}.menu.icon-top li a,.menu.nested.icon-top li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-top li a i,.menu.icon-top li a img,.menu.icon-top li a svg,.menu.nested.icon-top li a i,.menu.nested.icon-top li a img,.menu.nested.icon-top li a svg{-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu.icon-bottom li a,.menu.nested.icon-bottom li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-bottom li a i,.menu.icon-bottom li a img,.menu.icon-bottom li a svg,.menu.nested.icon-bottom li a i,.menu.nested.icon-bottom li a img,.menu.nested.icon-bottom li a svg{-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu .active>a,.menu .is-active>a{background:#3f729b;color:#fefefe}.menu.align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.menu.align-right li .submenu li{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right.vertical li{display:block;text-align:right}.menu.align-right.icon-bottom li a i,.menu.align-right.icon-bottom li a img,.menu.align-right.icon-bottom li a svg,.menu.align-right.icon-top li a i,.menu.align-right.icon-top li a img,.menu.align-right.icon-top li a svg,.menu.align-right.vertical li .submenu li{text-align:right}.menu.align-right .nested{margin-left:0;margin-right:1rem}.menu.align-center li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.menu.align-center li .submenu li{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.menu .menu-text{color:inherit;font-weight:700;line-height:1;padding:.7rem 1rem}.menu-centered>.menu,.menu-centered>.menu li{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.menu-centered>.menu li{display:-webkit-box;display:-ms-flexbox;display:flex}.menu-centered>.menu li .submenu li{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.no-js [data-responsive-menu] ul{display:none}.menu-icon{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon:after{background:#fefefe;-webkit-box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon:hover:after{background:#cacaca;-webkit-box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.menu-icon.dark{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon.dark:after{background:#0a0a0a;-webkit-box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon.dark:hover:after{background:#8a8a8a;-webkit-box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.accordion-menu li{width:100%}.accordion-menu .is-accordion-submenu a,.accordion-menu a{padding:.7rem 1rem}.accordion-menu .nested.is-accordion-submenu{margin-left:1rem;margin-right:0}.accordion-menu.align-right .nested.is-accordion-submenu{margin-left:0;margin-right:1rem}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a{position:relative}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;margin-top:-3px;position:absolute;right:1rem;top:50%;width:0}.accordion-menu.align-left .is-accordion-submenu-parent>a:after{left:auto;right:1rem}.accordion-menu.align-right .is-accordion-submenu-parent>a:after{left:1rem;right:auto}.accordion-menu .is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}.is-accordion-submenu-parent{position:relative}.has-submenu-toggle>a{margin-right:40px}.submenu-toggle{cursor:pointer;height:40px;position:absolute;right:0;top:0;width:40px}.submenu-toggle:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;bottom:0;content:"";display:block;height:0;margin:auto;top:0;width:0}.submenu-toggle[aria-expanded=true]:after{-webkit-transform:scaleY(-1);transform:scaleY(-1);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}.submenu-toggle-text{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.is-drilldown{overflow:hidden;position:relative}.is-drilldown li{display:block}.is-drilldown.animate-height{-webkit-transition:height .5s;transition:height .5s}.drilldown a{background:#fefefe;padding:.7rem 1rem}.drilldown .is-drilldown-submenu{background:#fefefe;left:100%;position:absolute;top:0;-webkit-transition:-webkit-transform .15s linear;transition:-webkit-transform .15s linear;transition:transform .15s linear;transition:transform .15s linear,-webkit-transform .15s linear;width:100%;z-index:-1}.drilldown .is-drilldown-submenu.is-active{display:block;-webkit-transform:translateX(-100%);transform:translateX(-100%);z-index:1}.drilldown .is-drilldown-submenu.is-closing{-webkit-transform:translateX(100%);transform:translateX(100%)}.drilldown .is-drilldown-submenu a{padding:.7rem 1rem}.drilldown .nested.is-drilldown-submenu{margin-left:0;margin-right:0}.drilldown .drilldown-submenu-cover-previous{min-height:100%}.drilldown .is-drilldown-submenu-parent>a{position:relative}.drilldown .is-drilldown-submenu-parent>a:after{margin-top:-6px;position:absolute;top:50%}.drilldown .is-drilldown-submenu-parent>a:after,.drilldown.align-left .is-drilldown-submenu-parent>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;right:1rem;width:0}.drilldown.align-left .is-drilldown-submenu-parent>a:after{left:auto}.drilldown.align-right .is-drilldown-submenu-parent>a:after{left:1rem;right:auto}.drilldown .js-drilldown-back>a:before,.drilldown.align-right .is-drilldown-submenu-parent>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;width:0}.drilldown .js-drilldown-back>a:before{display:inline-block;margin-right:.75rem;vertical-align:middle}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}[data-whatinput=mouse] .dropdown.menu a{outline:0}.dropdown.menu>li>a{background:#fefefe;padding:.7rem 1rem}.dropdown.menu>li.is-active>a{background:transparent;color:#3f729b}.no-js .dropdown.menu ul{display:none}.dropdown.menu .nested.is-dropdown-submenu{margin-left:0;margin-right:0}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.vertical>li>a:after{right:14px}.dropdown.menu.vertical>li.opens-left>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.vertical>li.opens-right>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}@media print,screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.medium-vertical>li>a:after{right:14px}.dropdown.menu.medium-vertical>li.opens-left>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.medium-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}@media print,screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.large-vertical>li>a:after{right:14px}.dropdown.menu.large-vertical>li.opens-left>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.large-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}@media screen and (min-width:75em){.dropdown.menu.xlarge-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.xlarge-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.xlarge-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.xlarge-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.xlarge-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.xlarge-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.xlarge-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.xlarge-vertical>li>a:after{right:14px}.dropdown.menu.xlarge-vertical>li.opens-left>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.xlarge-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}@media screen and (min-width:90em){.dropdown.menu.xxlarge-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.xxlarge-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.xxlarge-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.xxlarge-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.xxlarge-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.xxlarge-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.xxlarge-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.xxlarge-vertical>li>a:after{right:14px}.dropdown.menu.xxlarge-vertical>li.opens-left>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.xxlarge-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{left:auto;right:0;top:100%}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{left:auto;margin-top:-6px;position:absolute;right:5px;top:50%}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{left:auto;top:100%}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{left:100%;right:auto}.is-dropdown-submenu{background:#fefefe;border:1px solid #cacaca;display:none;left:100%;min-width:200px;position:absolute;top:0;z-index:1}.dropdown .is-dropdown-submenu a{padding:.7rem 1rem}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{right:14px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.is-off-canvas-open{overflow:hidden}.js-off-canvas-overlay{background:hsla(0,0%,100%,.25);height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;-webkit-transition:opacity .5s ease,visibility .5s ease;transition:opacity .5s ease,visibility .5s ease;visibility:hidden;width:100%;z-index:11}.js-off-canvas-overlay.is-visible{opacity:1;visibility:visible}.js-off-canvas-overlay.is-closable{cursor:pointer}.js-off-canvas-overlay.is-overlay-absolute{position:absolute}.js-off-canvas-overlay.is-overlay-fixed{position:fixed}.off-canvas-wrapper{overflow:hidden;position:relative}.off-canvas{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:fixed;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.is-transition-push{z-index:12}.off-canvas.is-closed{visibility:hidden}.off-canvas.is-transition-overlap{z-index:13}.off-canvas.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas.is-open{-webkit-transform:translate(0);transform:translate(0)}.off-canvas-absolute{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:absolute;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas-absolute{outline:0}.off-canvas-absolute.is-transition-push{z-index:12}.off-canvas-absolute.is-closed{visibility:hidden}.off-canvas-absolute.is-transition-overlap{z-index:13}.off-canvas-absolute.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas-absolute.is-open{-webkit-transform:translate(0);transform:translate(0)}.position-left{height:100%;left:0;overflow-y:auto;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-left,.position-left{-webkit-transform:translateX(-250px);transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open{-webkit-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-left.has-transition-push{-webkit-transform:translateX(250px);transform:translateX(250px)}.position-left.is-transition-push{-webkit-box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25)}.position-right{height:100%;overflow-y:auto;right:0;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-right,.position-right{-webkit-transform:translateX(250px);transform:translateX(250px)}.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open{-webkit-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-right.has-transition-push{-webkit-transform:translateX(-250px);transform:translateX(-250px)}.position-right.is-transition-push{-webkit-box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25)}.position-top{left:0;overflow-x:auto;top:0;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-top,.position-top{-webkit-transform:translateY(-250px);transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open{-webkit-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-top.has-transition-push{-webkit-transform:translateY(250px);transform:translateY(250px)}.position-top.is-transition-push{-webkit-box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25)}.position-bottom{bottom:0;left:0;overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-bottom,.position-bottom{-webkit-transform:translateY(250px);transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open{-webkit-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-bottom.has-transition-push{-webkit-transform:translateY(-250px);transform:translateY(-250px)}.position-bottom.is-transition-push{-webkit-box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25)}.off-canvas-content{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:none;transform:none}.off-canvas-content.has-transition-overlap,.off-canvas-content.has-transition-push{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.off-canvas-content .off-canvas.is-open,.off-canvas-content.has-transition-push{-webkit-transform:translate(0);transform:translate(0)}@media print,screen and (min-width:40em){.position-left.reveal-for-medium{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-medium .close-button{display:none}.off-canvas-content .position-left.reveal-for-medium{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-medium .close-button{display:none}.off-canvas-content .position-right.reveal-for-medium{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}.position-top.reveal-for-medium{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-medium .close-button{display:none}.off-canvas-content .position-top.reveal-for-medium{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-medium~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-medium{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-medium .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-medium{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-medium~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:64em){.position-left.reveal-for-large{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-large .close-button{display:none}.off-canvas-content .position-left.reveal-for-large{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-large .close-button{display:none}.off-canvas-content .position-right.reveal-for-large{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}.position-top.reveal-for-large{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-large .close-button{display:none}.off-canvas-content .position-top.reveal-for-large{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-large~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-large{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-large .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-large{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-large~.off-canvas-content{margin-bottom:250px}}@media screen and (min-width:75em){.position-left.reveal-for-xlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-xlarge .close-button{display:none}.off-canvas-content .position-left.reveal-for-xlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-xlarge~.off-canvas-content{margin-left:250px}.position-right.reveal-for-xlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-xlarge .close-button{display:none}.off-canvas-content .position-right.reveal-for-xlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-xlarge~.off-canvas-content{margin-right:250px}.position-top.reveal-for-xlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-xlarge .close-button{display:none}.off-canvas-content .position-top.reveal-for-xlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-xlarge~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-xlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-xlarge .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-xlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-xlarge~.off-canvas-content{margin-bottom:250px}}@media screen and (min-width:90em){.position-left.reveal-for-xxlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-xxlarge .close-button{display:none}.off-canvas-content .position-left.reveal-for-xxlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-xxlarge~.off-canvas-content{margin-left:250px}.position-right.reveal-for-xxlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-xxlarge .close-button{display:none}.off-canvas-content .position-right.reveal-for-xxlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-xxlarge~.off-canvas-content{margin-right:250px}.position-top.reveal-for-xxlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-xxlarge .close-button{display:none}.off-canvas-content .position-top.reveal-for-xxlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-xxlarge~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-xxlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-xxlarge .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-xxlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-xxlarge~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:40em){.off-canvas.in-canvas-for-medium{background:none;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-medium.position-bottom,.off-canvas.in-canvas-for-medium.position-left,.off-canvas.in-canvas-for-medium.position-right,.off-canvas.in-canvas-for-medium.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;transform:none}.off-canvas.in-canvas-for-medium .close-button{display:none}}@media print,screen and (min-width:64em){.off-canvas.in-canvas-for-large{background:none;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-large.position-bottom,.off-canvas.in-canvas-for-large.position-left,.off-canvas.in-canvas-for-large.position-right,.off-canvas.in-canvas-for-large.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;transform:none}.off-canvas.in-canvas-for-large .close-button{display:none}}@media screen and (min-width:75em){.off-canvas.in-canvas-for-xlarge{background:none;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-xlarge.position-bottom,.off-canvas.in-canvas-for-xlarge.position-left,.off-canvas.in-canvas-for-xlarge.position-right,.off-canvas.in-canvas-for-xlarge.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;transform:none}.off-canvas.in-canvas-for-xlarge .close-button{display:none}}@media screen and (min-width:90em){.off-canvas.in-canvas-for-xxlarge{background:none;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-xxlarge.position-bottom,.off-canvas.in-canvas-for-xxlarge.position-left,.off-canvas.in-canvas-for-xxlarge.position-right,.off-canvas.in-canvas-for-xxlarge.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;transform:none}.off-canvas.in-canvas-for-xxlarge .close-button{display:none}}html.is-reveal-open{overflow-y:hidden;position:fixed;width:100%}html.is-reveal-open.zf-has-scroll{overflow-y:scroll;-webkit-overflow-scrolling:touch}html.is-reveal-open body{overflow-y:hidden}.reveal-overlay{background-color:hsla(0,0%,4%,.45);bottom:0;left:0;position:fixed;right:0;top:0;z-index:1005}.reveal,.reveal-overlay{display:none;overflow-y:auto;-webkit-overflow-scrolling:touch}.reveal{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:#fefefe;border:1px solid #cacaca;border-radius:10px;margin-left:auto;margin-right:auto;padding:1rem;position:relative;top:100px;z-index:1006}[data-whatinput=mouse] .reveal{outline:0}@media print,screen and (min-width:40em){.reveal{min-height:0}}.reveal .column{min-width:0}.reveal>:last-child{margin-bottom:0}@media print,screen and (min-width:40em){.reveal{max-width:80rem;width:600px}}.reveal.collapse{padding:0}@media print,screen and (min-width:40em){.reveal.tiny{max-width:80rem;width:30%}.reveal.small{max-width:80rem;width:50%}.reveal.large{max-width:80rem;width:90%}}.reveal.full{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}@media print,screen and (max-width:39.99875em){.reveal{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}}.reveal.without-overlay{position:fixed}.sticky,.sticky-container{position:relative}.sticky{-webkit-transform:translateZ(0);transform:translateZ(0);z-index:0}.sticky.is-stuck{position:fixed;width:100%;z-index:5}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{left:auto;position:relative;right:auto}.sticky.is-anchored.is-at-bottom{bottom:0}.title-bar{background:#3f729b;color:#fefefe;display:-webkit-box;display:-ms-flexbox;display:flex;padding:.5rem;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left,.title-bar-right{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}.title-bar-right{text-align:right}.title-bar-title{display:inline-block;font-weight:700;vertical-align:middle}.top-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;flex-wrap:nowrap;padding:.5rem}.top-bar,.top-bar ul{background-color:#fefefe}.top-bar input{margin-right:1rem;max-width:200px}.top-bar .input-group-field{margin-right:0;width:100%}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.top-bar .top-bar-left{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin-right:auto}.top-bar .top-bar-right{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;margin-left:auto}@media print,screen and (max-width:63.99875em){.top-bar.stacked-for-medium{-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media print,screen and (max-width:74.99875em){.top-bar.stacked-for-large{-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media print,screen and (max-width:89.99875em){.top-bar.stacked-for-xlarge{-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-xlarge .top-bar-left,.top-bar.stacked-for-xlarge .top-bar-right{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.top-bar.stacked-for-xxlarge{-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-xxlarge .top-bar-left,.top-bar.stacked-for-xxlarge .top-bar-right{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.top-bar-title{margin:.45rem 1rem 0}.top-bar-left,.top-bar-right,.top-bar-title{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:" ";display:table;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.clearfix:after{clear:both}.align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.align-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.align-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.align-justify{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.align-spaced{-ms-flex-pack:distribute;justify-content:space-around}.align-left.vertical.menu>li>a{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.align-right.vertical.menu>li>a{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.align-center.vertical.menu>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.align-top{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.align-self-top{-ms-flex-item-align:start;align-self:flex-start}.align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.align-self-bottom{-ms-flex-item-align:end;align-self:flex-end}.align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.align-self-middle{-ms-flex-item-align:center;align-self:center}.align-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.align-self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.align-center-middle{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.small-order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.small-order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.small-order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.small-order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.small-order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.small-order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}@media print,screen and (min-width:40em){.medium-order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.medium-order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.medium-order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.medium-order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.medium-order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.medium-order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}}@media print,screen and (min-width:64em){.large-order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.large-order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.large-order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.large-order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.large-order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.large-order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}}@media screen and (min-width:75em){.xlarge-order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.xlarge-order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.xlarge-order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.xlarge-order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.xlarge-order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.xlarge-order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}}@media screen and (min-width:90em){.xxlarge-order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.xxlarge-order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.xxlarge-order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.xxlarge-order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.xxlarge-order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.xxlarge-order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}}.flex-container{display:-webkit-box;display:-ms-flexbox;display:flex}.flex-child-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-child-grow{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.flex-child-shrink{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}@media print,screen and (min-width:40em){.medium-flex-container{display:-webkit-box;display:-ms-flexbox;display:flex}.medium-flex-child-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.medium-flex-child-grow{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.medium-flex-child-shrink{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.medium-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.medium-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.medium-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.medium-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media print,screen and (min-width:64em){.large-flex-container{display:-webkit-box;display:-ms-flexbox;display:flex}.large-flex-child-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.large-flex-child-grow{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.large-flex-child-shrink{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.large-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.large-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.large-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.large-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media screen and (min-width:75em){.xlarge-flex-container{display:-webkit-box;display:-ms-flexbox;display:flex}.xlarge-flex-child-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.xlarge-flex-child-grow{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.xlarge-flex-child-shrink{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.xlarge-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.xlarge-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.xlarge-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.xlarge-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media screen and (min-width:90em){.xxlarge-flex-container{display:-webkit-box;display:-ms-flexbox;display:flex}.xxlarge-flex-child-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.xxlarge-flex-child-grow{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.xxlarge-flex-child-shrink{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.xxlarge-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.xxlarge-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.xxlarge-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.xxlarge-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.hide{display:none!important}.invisible{visibility:hidden}.visible{visibility:visible}@media print,screen and (max-width:39.99875em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media print,screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.99875em){.show-for-medium{display:none!important}}@media print,screen and (min-width:40em) and (max-width:63.99875em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.99875em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media print,screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.99875em){.show-for-large{display:none!important}}@media print,screen and (min-width:64em) and (max-width:74.99875em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.99875em),screen and (min-width:75em){.show-for-large-only{display:none!important}}@media screen and (min-width:75em){.hide-for-xlarge{display:none!important}}@media screen and (max-width:74.99875em){.show-for-xlarge{display:none!important}}@media screen and (min-width:75em) and (max-width:89.99875em){.hide-for-xlarge-only{display:none!important}}@media screen and (max-width:74.99875em),screen and (min-width:90em){.show-for-xlarge-only{display:none!important}}@media screen and (min-width:90em){.hide-for-xxlarge{display:none!important}}@media screen and (max-width:89.99875em){.show-for-xxlarge{display:none!important}}@media screen and (min-width:90em){.hide-for-xxlarge-only{display:none!important}}@media screen and (max-width:89.99875em){.show-for-xxlarge-only{display:none!important}}.show-for-sr,.show-on-focus{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.show-on-focus:active,.show-on-focus:focus{height:auto!important;overflow:visible!important;position:static!important;width:auto!important;clip:auto!important;white-space:normal!important}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.show-for-dark-mode{display:none}.hide-for-dark-mode{display:block}@media screen and (prefers-color-scheme:dark){.show-for-dark-mode{display:block!important}.hide-for-dark-mode{display:none!important}}.show-for-ie{display:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.show-for-ie{display:block!important}.hide-for-ie{display:none!important}}.show-for-sticky{display:none}.is-stuck .show-for-sticky{display:block}.is-stuck .hide-for-sticky{display:none}.grey{color:#8a8a8a;font-weight:400}.txt-gray-light{color:#e6e6e6}.txt-gray-mid{color:#cacaca}.txt-gray-dark{color:#8a8a8a}.primary-color{color:#3f729b}.padding-bottom{padding-bottom:1rem}.center{text-align:center}.float-right{float:right}.full-width{width:100%}html{--primary-color:#3f729b;--secondary-color:#8bc34a;--success-color:#4caf50;--warning-color:#ffae00;--alert-color:#cc4b37}body{background-color:#e2e2e2}footer .copyright{padding-left:1em}.top-border{border-top:1px solid #ccc}.bottom-border{border-bottom:1px solid #ccc}.tall-4{height:4em}.pin-to-bottom{bottom:0;position:absolute;width:95%}object{height:100%;width:100%}.vertical-line{display:inline-block;height:15px;margin-right:5px}.no-margin{margin:0}.button.icon-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dt-tooltip{display:inline-block;position:relative}.dt-action-button{background-color:#eee;color:#000;margin:0}.dt-action-button:focus,.dt-action-button:hover{background-color:#7a7a7a;color:#000}.dt-tooltip .tooltiptext{background-color:#555;border-radius:6px;bottom:130%;color:#fff;left:50%;margin-left:-75px;opacity:1;padding:5px;position:absolute;text-align:center;-webkit-transition:opacity .3s;transition:opacity .3s;visibility:hidden;width:140px;z-index:1}.dt-tooltip .tooltiptext:after{border:5px solid transparent;border-top-color:#555;content:"";left:50%;margin-left:-5px;position:absolute;top:100%}.dt-tooltip:hover .tooltiptext{opacity:1;overflow-wrap:break-word;-webkit-transition:opacity .3s;transition:opacity .3s;visibility:visible}a:link,a:visited:link{-webkit-tap-highlight-color:rgba(0,0,0,.3)}.top-bar{border-bottom:1px solid #e6e6e6}.top-bar,.top-bar ul{background-color:#3f729b}.top-bar a{color:#fff}.top-bar .active a{background:#224f72}.top-bar .logo{-webkit-margin-end:2vw;height:20px;margin-inline-end:2vw}#top-bar-menu{border:none;margin-top:0!important;padding:0 20px;z-index:999}#top-bar-menu .logo-link{-webkit-padding-start:0;padding-inline-start:0;padding:0;vertical-align:middle}#top-bar-menu .top-bar-right .dropdown.menu{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}#top-bar-menu .top-bar-right .dropdown.menu>li{margin:0 10px}@media screen and (max-width:775px){#top-bar-menu .top-bar-right .dropdown.menu li{margin-bottom:.5rem}#top-bar-menu .top-bar-right .dropdown.menu li:first-of-type{text-align:end;width:100%}}#top-bar-menu .dropdown.menu a{background-color:#3f729b}#top-bar-menu .dropdown.menu li.active>a{background:#005a87}#top-bar-menu .top-bar-left .dropdown.menu{-ms-flex-wrap:nowrap;flex-wrap:nowrap}#top-bar-menu .top-bar-left .dropdown.menu a:hover{background-color:#224f72}#top-bar-menu .top-bar-left .dropdown.menu>li.is-dropdown-submenu-parent>a:after{border-color:#fefefe transparent transparent}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:none}@media screen and (max-width:1040px){#top-bar-menu .top-bar-left .dropdown.menu>li:nth-child(n+4){display:none}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:inherit}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button>ul>li:nth-child(-n+3){display:none}}@media screen and (min-width:1041px) and (max-width:1140px){#top-bar-menu .top-bar-left .dropdown.menu>li:nth-child(n+6){display:none}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:inherit}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button>ul>li:nth-child(-n+5){display:none}}@media screen and (min-width:1141px) and (max-width:1240px){#top-bar-menu .top-bar-left .dropdown.menu>li:nth-child(n+7){display:none}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:inherit}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button>ul>li:nth-child(-n+6){display:none}}@media screen and (min-width:1241px) and (max-width:1300px){#top-bar-menu .top-bar-left .dropdown.menu>li:nth-child(n+8){display:none}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:inherit}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button>ul>li:nth-child(-n+7){display:none}}@media screen and (min-width:1301px) and (max-width:1400px){#top-bar-menu .top-bar-left .dropdown.menu>li:nth-child(n+9){display:none}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:inherit}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button>ul>li:nth-child(-n+8){display:none}}@media screen and (min-width:1401px) and (max-width:1600px){#top-bar-menu .top-bar-left .dropdown.menu>li:nth-child(n+9){display:none}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:inherit}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button>ul>li:nth-child(-n+8){display:none}}#top-bar-menu a{color:#fefefe;font-weight:700;padding:1rem}#top-bar-menu .image-menu-nav img{height:24px}#top-bar-menu .image-menu-nav a{font-weight:700;padding:4px 5px;vertical-align:middle}#top-bar-menu .image-menu-nav a span{vertical-align:middle}#top-bar-menu .submenu.menu.vertical{display:none}#top-bar-menu .submenu.menu.vertical.is-dropdown-submenu.js-dropdown-active{display:block}html[dir=rtl] #top-bar-menu .dropdown.menu>li.is-dropdown-submenu-parent>a:after{left:5px;right:auto}.notifications-menu-item .notification-count{display:none;margin-left:-15px;position:relative;top:-5px;vertical-align:top}.notification-count-offcanvas{display:none;margin-left:10px;position:relative;top:0;vertical-align:middle}.top-bar .is-submenu-item{background-color:#3f729b;text-align:left}.top-bar .is-submenu-item a{color:#fff;font-weight:700;vertical-align:middle}.top-bar .is-submenu-item a img{margin:0 10px 0 0;width:25px}nav.second-bar{background-color:#fff;-webkit-box-shadow:0 4px 4px rgba(0,0,0,.25);box-shadow:0 4px 4px rgba(0,0,0,.25);padding:.5em;top:auto;-webkit-transform:translateX(0);transform:translateX(0);width:100%}nav.second-bar .title{font-weight:700}nav.second-bar .breadcrumbs{margin-bottom:0}nav.second-bar .buttons-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-column-gap:.3rem;-moz-column-gap:.3rem;column-gap:.3rem;justify-content:center}nav.second-bar .button{padding:.4em .75em}nav.second-bar .button img{height:17px;padding-right:5px}@media screen and (max-width:639px){nav.second-bar .button.follow{padding:0 .75em}nav.second-bar .button.follow .fi-eye{font-size:22px;line-height:16px}nav.second-bar .button img{padding-right:0}}nav.second-bar .button.favorite{background:none;padding:0}nav.second-bar .button.favorite .icon-star{height:1.8em;width:auto;fill:#c7c6c1}nav.second-bar .button.favorite.selected .icon-star{fill:#ffc105}nav.second-bar .dropdown.menu>li>a{padding-bottom:.4em;padding-top:.4em}nav.second-bar input{max-height:30px;padding:.4em .75em}nav.second-bar a,nav.second-bar button,nav.second-bar input{margin:0;vertical-align:middle}nav.second-bar a span,nav.second-bar button span,nav.second-bar input span{vertical-align:middle}.search-input{display:inline-block;margin-right:0;max-width:200px}.search-input__clear-button{border:1px solid #cacaca;border-left:unset;color:#3f729b;cursor:pointer;display:none;font-weight:700;padding:0 .5rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.search-wrapper{max-height:30px;-webkit-transform:translateY(1px);transform:translateY(1px)}.search-wrapper,.text-input-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.text-input-wrapper{width:200px}.text-input-wrapper input{font:inherit;height:100%;margin:0!important;padding:0}nav.second-bar .advanced_search{border:1px solid #cacaca;-webkit-border-start:0;border-inline-start:0;display:inline-block;padding:.15em .5em;position:relative;-webkit-transform:translateX(-5px);transform:translateX(-5px)}html[dir=rtl] nav.second-bar .advanced_search{-webkit-transform:translateX(5px);transform:translateX(5px)}.advancedSearch-count{font-size:.45em;font-weight:700;left:1.15rem;position:absolute;top:0;vertical-align:top}.off-canvas-list ul{margin-left:0}.off-canvas-list ul li a{border-bottom:0}.off-canvas-list ul .dropdown{margin-left:20px}.off-canvas-list ul .off-canvas-padding{padding:0 1rem}#off-canvas span.title{font-size:1.3rem;font-weight:800;padding:2rem 1rem 2rem 0;text-align:center}#off-canvas ul.is-at-top{padding-top:10px}#off-canvas ul.is-at-top li.nav-title div,.menu input{margin-left:1rem}.menu input{margin-right:1rem;width:80%}.center-items{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}div.sticky-container{z-index:1}.title-bar{padding:.7rem}.title-bar .logo-link{-webkit-padding-start:0;padding-inline-start:0;vertical-align:middle}.title-bar .logo{height:20px;margin:0}.title-bar img{vertical-align:middle}.is-dropdown-submenu{z-index:5}#content #inner-content{margin-left:5px;margin-right:5px;padding:1rem 0}#content article{margin-bottom:10px}#content article header,#content article section{padding:10px}#content article footer{padding:10px;text-align:center}#content article a.button{float:left}#content article .article-header .title{text-transform:uppercase}.bordered-box{background-color:#fefefe;border:1px solid #e6e6e6;border-radius:10px;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.25);box-shadow:0 2px 4px rgba(0,0,0,.25);padding:1rem}.bordered-box table.dataTable{margin:.5em -1rem!important;width:calc(100% + 2rem)}i.large{font-size:50px;line-height:50px}i.medium{display:inline-block;font-size:25px;line-height:25px;-webkit-transform:translateY(2px);transform:translateY(2px)}button{cursor:pointer}button.clear{background-color:#fff;border:1px solid #ccc;color:#000}img{vertical-align:inherit}.input-height,.typeahead__field .typeahead__filter input.typeahead__filter-button,.typeahead__field .typeahead__filter textarea.typeahead__filter-button .typeahead__field button.input-height,.typeahead__field .typeahead__filter textarea.typeahead__filter-button .typeahead__field button.typeahead__filter-button,.typeahead__field .typeahead__hint,.typeahead__field [contenteditable],.typeahead__field input.input-height,.typeahead__field textarea.input-height .typeahead__field .typeahead__filter button.typeahead__filter-button,.typeahead__field textarea.input-height .typeahead__field button.input-height,.typeahead__filter .typeahead__field input.typeahead__filter-button,.typeahead__filter .typeahead__field textarea.input-height .typeahead__field button.typeahead__filter-button,.typeahead__filter .typeahead__field textarea.typeahead__filter-button .typeahead__field button.input-height,.typeahead__filter .typeahead__field textarea.typeahead__filter-button .typeahead__field button.typeahead__filter-button,.typeahead__filter .typeahead__filter-button{min-height:2.5rem}.tabs-panel .outer-container{padding:0!important}.tabs a.maginifying-glass{display:block;font-size:1.5rem;line-height:1;padding:.75rem}.section-header{color:#3f729b;font-size:1.5rem}.section-subheader{font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-button.ui-state-active:hover,.ui-button:active,.ui-state-active{background:#3f729b;border-color:#3f729b}button.loader:not(.disabled):before{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:rotate;animation-name:rotate;-webkit-animation-timing-function:linear;animation-timing-function:linear;border:4px solid;border-left:4px solid transparent;border-radius:50%;content:"";display:none;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);height:20px;margin-top:-11px;opacity:0;position:absolute;right:10px;top:50%;-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-property:opacity;transition-property:opacity;width:20px}button.loader:not(.disabled):after{content:"";height:100%;-webkit-transition-delay:.5s;transition-delay:.5s;-webkit-transition-duration:.75s;transition-duration:.75s;-webkit-transition-property:width;transition-property:width;width:0}button.loader:not(.disabled).loading{cursor:not-allowed;padding-right:35px;pointer-events:none;position:relative}button.loader:not(.disabled).loading:not(.expand){text-align:left}button.loader:not(.disabled).loading:before{display:block;filter:progid:DXImageTransform.Microsoft.Alpha(enabled=false);opacity:1;-webkit-transition-delay:.5s;transition-delay:.5s;-webkit-transition-duration:1s;transition-duration:1s}button.loader:not(.disabled).loading:after{-webkit-transition-delay:0s;transition-delay:0s;width:20px}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-spinner.active{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;border:.25rem solid #919191;border-radius:50%;border-top-color:#000;display:inline-block;height:24px;width:24px}.scrollable-typeahead .typeahead__list{max-height:300px;overflow-x:hidden;overflow-y:auto}.typeahead__container.result .typeahead__list{-webkit-box-shadow:5px 6px 5px rgba(0,0,0,.4);box-shadow:5px 6px 5px rgba(0,0,0,.4)}.typeahead-margin-when-active .typeahead__container.result .typeahead__result{margin-bottom:350px}.typeahead__container{margin-bottom:10px}.typeahead__container .typeahead__image_button{padding-bottom:3px;padding-top:3px;vertical-align:middle}.typeahead__container .typeahead__image_button img{height:20px;min-height:15px;min-width:15px;width:20px}.last-typeahead-in-section{margin-bottom:150px}.typeahead__dropdown>li>a,.typeahead__list>li>a{clear:both;color:#333;display:block;padding:.5rem .75rem;text-decoration:none}.typeahead__item .typeahead-user-row img{border-radius:3px;padding:1px;vertical-align:text-bottom;width:20px}.typeahead__label{max-width:-webkit-fill-available;max-width:-moz-available}.typeahead__label a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar img{height:16px}.clearfix{clear:both}.header{position:relative;z-index:10}.profile-input{margin:0}.half-opacity{opacity:.5}.typeahead__cancel-button{padding:4px 6px!important}html[dir=rtl] .typeahead__label{margin-left:4px;margin-right:0;padding-left:0;padding-right:4px}html[dir=rtl] .typeahead__label .typeahead__cancel-button{border-left:none;border-right:1px solid #c2e0ff;margin-left:0;margin-right:4px}html[dir=rtl] .typeahead__cancel-button{left:0;right:auto}html[dir=rtl] .typeahead__container .typeahead__field .typeahead__hint,html[dir=rtl] .typeahead__container .typeahead__field .typeahead__label-container,html[dir=rtl] .typeahead__container .typeahead__field [contenteditable],html[dir=rtl] .typeahead__container .typeahead__field input,html[dir=rtl] .typeahead__container .typeahead__field textarea{padding-left:32px;padding-right:6px}html[dir=rtl] .float-right{float:left!important}html[dir=rtl] .float-left{float:right!important}html[dir=rtl] .notifications-menu-item .notification-count{left:0;margin-left:-15px;right:-15px}html[dir=rtl] .notification-count-offcanvas{left:0;margin-left:10px;right:0}html[dir=rtl] .title-bar-right{text-align:left}.empty-notification-message{font-weight:700;margin:20px}.dt-green,a.dt-green:hover{background-color:#4caf50}#content,.container-width{margin-left:auto;margin-right:auto;max-width:1440px}#notification-list .new-button,#notification-list .read-button{padding:.85em}#notification-list .unread-notification-row{background-color:rgba(63,114,155,.19)}#notification-list .notification-group-header{background-color:#3f729b;color:#fff;font-weight:600;padding:.7rem}#notification-dropdown{background-color:unset;border:none;padding:0;width:500px}#notification-dropdown .sized-box{height:6px}#notification-dropdown .bordered-box{border-top-left-radius:0;border-top-right-radius:0;padding:1rem 0}#notification-dropdown .header{margin-bottom:1rem;padding:0 1rem}#notification-dropdown .button-group{margin-bottom:0}#notification-dropdown .button-group .button{font-size:1rem;padding:.5em 1em}#notification-dropdown #notification-list{margin:0}#notification-dropdown .notification-group-header{padding:.3rem .7rem}.new-notification-label{margin-left:5px}@media screen and (max-width:1024px){#notification-dropdown .sized-box{height:16px}}@media screen and (max-width:640px){#notification-dropdown{width:300px}#notification-dropdown .button-group .button{font-size:.75rem;padding:.75em 1em}#notification-dropdown .notification-row .cell{margin-left:.7rem;margin-right:0}#notification-dropdown #notification-list{margin-right:-1px}}.notifications-page #notification-list{margin:0 -10px}.notifications-page div.button-group{text-align:center}.notifications-page div.button-group .button{margin-right:.25rem}.help-icon{-webkit-filter:invert(69%) sepia(1%) saturate(0) hue-rotate(239deg) brightness(94%) contrast(86%);filter:invert(69%) sepia(1%) saturate(0) hue-rotate(239deg) brightness(94%) contrast(86%);height:15px}.help-button{margin-left:3px;margin-right:3px}.help-button-tile{margin-left:6px;margin-right:6px}.help-button-field{margin-left:3px;margin-right:3px}.help-section h3{font-size:1.6rem}.help-section h4{font-size:1.2rem}.help-modal-icon ul{margin-left:5%}.help-modal-icon li{list-style:none;margin-bottom:3%}.help-modal-icon img{height:40px;margin-right:5%;width:40px}div.help-more{float:right}div.help-more h5{font-size:1rem}.dropdown.menu>li.is-dropdown-submenu-parent>a.menu-white-dropdown-arrow:after{border-color:#fff transparent transparent}.dropdown.menu .is-submenu-item:hover{background-color:#3f729b;color:#fff}.dropdown.menu .is-submenu-item a:hover{color:#fff}.dropdown.menu .is-submenu-item a:hover img{-webkit-filter:invert(100%) sepia(100%) saturate(6%) hue-rotate(105deg) brightness(102%) contrast(102%);filter:invert(100%) sepia(100%) saturate(6%) hue-rotate(105deg) brightness(102%) contrast(102%)}@media screen and (max-width:640px){table.js-list tbody tr:nth-child(2n){background-color:#f1f1f1;border-bottom:0}#content #inner-content{margin:0}.bordered-box.list-box{padding-left:2px;padding-right:2px}}@media screen and (min-width:640px){.left-border-grey{border-left:1px solid #e6e6e6}}.dt_caret{border:solid #000;border-width:0 2px 2px 0;display:inline-block;padding:3px}.dt_caret.down{transform:rotate(45deg);-webkit-transform:rotate(45deg)}.dt_caret.right{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}.dt_caret.left{transform:rotate(135deg);-webkit-transform:rotate(135deg)}.dt_caret.up{transform:rotate(-135deg);-webkit-transform:rotate(-135deg)}.scrolling-wrapper{overflow-x:scroll;overflow-y:hidden;white-space:nowrap}#generation_map ul{background:url(../../../dt-assets/images/vline.png) repeat-y;list-style:none;margin:0 0 0 50px;padding:0}#generation_map ul.ul-gen-0{margin-left:0}#generation_map li{background:url(../../../dt-assets/images/node.png) no-repeat;color:#369;font-weight:700;line-height:20px;margin:0;padding:0 12px}#generation_map ul li.last{background:#fff url(../../../dt-assets/images/lastnode.png) no-repeat}#generation_map .first-section{margin-top:.5em}.inactive-gray,.inactive-gray a,.not-church-gray,.not-church-gray a{color:#d3d3d3}.accordion-menu .is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform:none!important;transform:none!important;-webkit-transform-origin:50% 50%!important;transform-origin:50% 50%!important}.accordion-menu .is-accordion-submenu-parent[aria-expanded=false]>a:after{-webkit-transform:rotate(90deg)!important;transform:rotate(90deg)!important;-webkit-transform-origin:50% 50%!important;transform-origin:50% 50%!important}.date_range_picker{background:#fff;border:1px solid #ccc;cursor:pointer;display:inline-block;padding:5px 10px;width:250px}.date_range_picker .dt_caret{float:right;margin:5px}.daterangepicker td,.daterangepicker th{padding:0}#metrics-sidemenu ul.menu.vertical.nested{display:none}.drill_down{list-style-type:none;margin-bottom:0}.drill_down li{display:inline;margin-right:3px}.drill_down li select{width:150px}input.dt-switch[type=checkbox]{display:none;height:0;visibility:hidden;width:0}label.dt-switch{background:grey;border-radius:100px;cursor:pointer;display:inline-block;height:20px;margin:0;position:relative;text-indent:-9999px;width:41px}label.dt-switch:after{background:#fff;border-radius:90px;content:"";height:16px;left:3px;position:absolute;top:2px;-webkit-transition:.3s;transition:.3s;width:16px}input.dt-switch:checked+label{background:#3f729b}input.dt-switch:checked+label:after{left:calc(100% - 3px);-webkit-transform:translateX(-100%);transform:translateX(-100%)}label.dt-switch:active:after{width:20px}.ul-no-bullets{list-style-type:none;margin:0}#user_modal_content .bordered-box{margin-bottom:20px}#user_modal_content #hero_stats .bordered-box{-ms-flex-preferred-size:19%;flex-basis:19%}#user_modal_content .user_modal_column{-ms-flex-preferred-size:50%;flex-basis:50%}@media screen and (max-width:640px){#user_modal_content #hero_stats .bordered-box{margin:5px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}#user_modal_content #hero_stats{margin-bottom:20px}#user_modal_content .user_modal_column{-ms-flex-preferred-size:100%;flex-basis:100%;padding:0!important}}.template-settings #multiplier .section-subheader{margin-bottom:4px}.template-settings #multiplier .section-subheader img{height:15px}.dt-status-square{border-radius:2px;display:inline-block;height:13px;width:13px}img.dt-icon{height:15px;width:15px}i.dt-icon,img.dt-icon{-webkit-filter:invert(18%) sepia(0) saturate(19%) hue-rotate(170deg) brightness(108%) contrast(98%);filter:invert(18%) sepia(0) saturate(19%) hue-rotate(170deg) brightness(108%) contrast(98%)}i.dt-icon{font-size:15px}i.dt-blue-icon,img.dt-blue-icon{-webkit-filter:invert(41%) sepia(42%) saturate(518%) hue-rotate(164deg) brightness(94%) contrast(100%);filter:invert(41%) sepia(42%) saturate(518%) hue-rotate(164deg) brightness(94%) contrast(100%)}i.dt-white-icon,img.dt-white-icon{-webkit-filter:invert(100%) sepia(100%) saturate(6%) hue-rotate(105deg) brightness(102%) contrast(102%);filter:invert(100%) sepia(100%) saturate(6%) hue-rotate(105deg) brightness(102%) contrast(102%)}i.dt-green-icon,img.dt-green-icon{-webkit-filter:invert(52%) sepia(77%) saturate(383%) hue-rotate(73deg) brightness(98%) contrast(83%);filter:invert(52%) sepia(77%) saturate(383%) hue-rotate(73deg) brightness(98%) contrast(83%)}i.dt-red-icon,img.dt-red-icon{-webkit-filter:invert(23%) sepia(34%) saturate(4972%) hue-rotate(343deg) brightness(121%) contrast(92%);filter:invert(23%) sepia(34%) saturate(4972%) hue-rotate(343deg) brightness(121%) contrast(92%)}i.dt-black-icon,img.dt-black-icon{-webkit-filter:invert(0) sepia(0) saturate(17%) hue-rotate(193deg) brightness(99%) contrast(101%);filter:invert(0) sepia(0) saturate(17%) hue-rotate(193deg) brightness(99%) contrast(101%)}.dt-metrics-plus-count{font-size:12px;font-weight:700;vertical-align:text-bottom}.dt-metrics-node-icon-small{font-size:15px;max-height:15px;max-width:15px;min-height:15px;min-width:15px}.error-text{color:red}.template-new-post .type-options{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:15px}.template-new-post .type-option.selected .type-option-border,.template-new-post .type-option:hover .type-option-border{background-color:#ecf5fc;border:1px solid #c2e0ff;border-radius:15px}.template-new-post .type-option{display:-webkit-box;display:-ms-flexbox;display:flex;padding-right:10px;-ms-flex-preferred-size:25%;flex-basis:25%}.template-new-post .type-option .type-option-border{border:1px solid #c2e0ff;border-radius:15px;padding:5px 10px;width:100%}.template-new-post .type-option input{-ms-flex-item-align:center;align-self:center;margin-bottom:0;margin-right:5px}.template-new-post .type-option .type-option-title{color:#3f729b;font-size:larger}.template-new-post .type-option .type-option-rows{display:inline-block}.template-new-post .type-option .type-option-rows div{display:block;margin-bottom:5px}.template-new-post .error-text{text-align:center}@media screen and (max-width:640px){.template-new-post .type-option{-ms-flex-preferred-size:100%;flex-basis:100%;margin-bottom:1.25em}}#record_history_activities{max-height:500px;min-height:500px;overflow-y:auto;padding-right:20px}.record-history-activity-block{border:1px solid #e8e8e8;border-radius:5px;margin-bottom:10px;max-height:70px;min-height:70px;padding:10px}.record-history-activity-block .record-history-activity-block-body{font-family:Arial,Helvetica,sans-serif}.record-history-activity-block .record-history-activity-block-body .record-history-activity-heading{font-size:14px;font-weight:700}.record-history-activity-block .record-history-activity-block-body .record-history-activity-gravatar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.record-history-activity-block .record-history-activity-block-body .record-history-activity-gravatar img{margin-right:10px}.record-history-activity-block .record-history-activity-block-body .record-history-activity-owner{font-size:13px;font-weight:700}.record-history-activity-block .record-history-activity-block-body .record-history-activity-date{color:#989898;font-size:13px;font-weight:400}.record-history-activity-block:hover{border:1px solid #000;color:#989898;cursor:pointer}.advanced-search-modal-form table tbody,.advanced-search-modal-form table tbody tr{border:none}.advanced-search-modal-form table tbody tr td{vertical-align:middle}.advanced-search-modal-form a,.advanced-search-modal-form input{margin-bottom:0}.advanced-search-modal-form-input{display:inline-block;margin-right:0;min-width:450px}.advanced-search-modal-form-button{max-height:40px;max-width:40px;min-height:40px;min-width:40px;padding:10px 5px 5px}.advanced-search-modal-form-button img{max-height:20px;max-width:20px;min-height:20px;min-width:20px}.advanced-search-modal-results-div{display:none}.advanced-search-modal-results-div table,.advanced-search-modal-results-div table tbody,.advanced-search-modal-results-div table tbody tr{border:none}.advanced-search-modal-results-div-col-results-list{max-width:450px;min-width:450px;vertical-align:top}.advanced-search-modal-results-div-col-post-type{max-width:150px;min-width:150px;alignment:right;vertical-align:top}.advanced-search-modal-results-div-col-post-type label{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results{height:400px;overflow-x:hidden;overflow-y:scroll;text-align:center}.advanced-search-modal-results-table,.advanced-search-modal-results-table tbody{border:none}.advanced-search-modal-results-table tbody tr{background:#fff;cursor:pointer;padding:0}.advanced-search-modal-results-table tbody tr:hover{background-color:#f5f5f5}.advanced-search-modal-results-table-section-head-options{background-color:#f5f5f5;cursor:default;padding:10px;text-align:left}.advanced-search-modal-results-table-section-head-options a{margin:0;max-height:20px;min-height:20px;padding:2px 5px}.advanced-search-modal-results-table-section-head-post-type{background-color:#f5f5f5;cursor:default;text-align:right}.advanced-search-modal-results-table-col-hits{min-width:250px;text-align:left}.advanced-search-modal-results-table-col-hits span{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-table-col-hits-type{min-width:50px;text-align:right}.advanced-search-modal-results-post-types-view-at-top{display:none}.advanced-search-modal-results-post-types-view-at-side{display:inline}@media screen and (max-width:840px){.advanced-search-modal-form td{padding:1px}.advanced-search-modal-form a,.advanced-search-modal-form input{margin-bottom:0}.advanced-search-modal-results-div td{padding:4px}.advanced-search-modal-form-input{display:inline-block;margin-right:0;min-width:250px}.advanced-search-modal-results-div-col-results-list{max-width:300px;min-width:300px;vertical-align:top}.advanced-search-modal-results-div-col-post-type{max-width:0;min-width:0}.advanced-search-modal-results-table-col-hits{min-width:250px;text-align:left}.advanced-search-modal-results-table-col-hits span{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-table-col-hits-type{min-width:50px;text-align:right}.advanced-search-modal-results-post-types-view-at-top{display:inline}.advanced-search-modal-results-post-types-view-at-top label{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-button{max-width:345px;min-width:345px}.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-button img{float:right;padding:5px 5px 2px}.advanced-search-modal-results-post-types-view-at-side,.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-content{display:none}}@media screen and (max-width:375px){.advanced-search-modal-form td{padding:1px}.advanced-search-modal-form a,.advanced-search-modal-form input{margin-bottom:0}.advanced-search-modal-results-div td{padding:4px}.advanced-search-modal-form-input{display:inline-block;margin-right:0;min-width:150px}.advanced-search-modal-results-div-col-results-list{max-width:250px;min-width:250px;vertical-align:top}.advanced-search-modal-results-div-col-post-type{max-width:0;min-width:0}.advanced-search-modal-results-table-col-hits{min-width:200px;text-align:left}.advanced-search-modal-results-table-col-hits span{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-table-col-hits-type{min-width:50px;text-align:right}.advanced-search-modal-results-post-types-view-at-top{display:inline}.advanced-search-modal-results-post-types-view-at-top label{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-button{max-width:300px;min-width:300px}.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-button img{float:right;padding:5px 5px 2px}.advanced-search-modal-results-post-types-view-at-side,.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-content{display:none}}@media screen and (max-width:340px){.advanced-search-modal-form td{padding:1px}.advanced-search-modal-form a,.advanced-search-modal-form input{margin-bottom:0}.advanced-search-modal-results-div td{padding:4px}.advanced-search-modal-form-input{display:inline-block;margin-right:0;min-width:150px}.advanced-search-modal-results-div-col-results-list{max-width:290px;min-width:290px;vertical-align:top}.advanced-search-modal-results-div-col-post-type{max-width:0;min-width:0}.advanced-search-modal-results-table-col-hits{min-width:190px;text-align:left}.advanced-search-modal-results-table-col-hits span{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-table-col-hits-type{min-width:50px;text-align:right}.advanced-search-modal-results-post-types-view-at-top{display:inline}.advanced-search-modal-results-post-types-view-at-top label{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-button{max-width:270px;min-width:270px}.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-button img{float:right;padding:5px 5px 2px}.advanced-search-modal-results-post-types-view-at-side,.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-content{display:none}}#release-modal{outline:transparent}#release-modal p img{display:block;margin:auto}#release-modal .release-banner{background:-webkit-gradient(linear,left bottom,left top,from(#79a2c2),to(#3e729a));background:linear-gradient(0deg,#79a2c2,#3e729a);border-bottom:1px solid #cacaca;color:#fff;display:block;left:0;position:absolute;top:0;width:100%}#release-modal .release-banner-text{margin:8px}#release-modal #release-modal-content{margin-top:75px}#release-modal .white-button{color:#f4f4f4}.dt-tab-wrapper{border-bottom:1px solid #d3d3d3}.dt-tab{background-color:#fff;border:1px solid #d3d3d3;line-height:1.71428571;padding:5px 10px}.dt-tab:hover{background-color:#d3d3d3}.dt-tab-active{border-bottom:1px solid #fff;border-top:1px solid gray}.dt-tab-active:hover{background-color:#fff}.dt-tab-content{margin:20px 10px 0}.dt-tab-content-heading{font-weight:bolder}.dt-hide-content{display:none}.side-menu-item-highlight{font-weight:700}.communication-channel-error{color:red;font-style:italic;margin:-12px 0 12px}#form_fields_records{overflow-x:auto!important}#form_fields_records .form-fields-record{display:-webkit-box;display:-ms-flexbox;display:flex}#form_fields_records .record-divider{background-color:#ecf5fc;display:none;margin:3px -15px 15px;text-align:center}#form_fields_records .record-divider span{margin:0;padding:0}#form_fields_records .record-removal-button{margin:5px;min-width:25px!important}#form_fields_records .landscape-record-removal-button{display:block}#form_fields_records .landscape-record-removal-button .record-removal-button{margin:10px 0 0}#form_fields_records .form-field{-webkit-margin-end:10px;margin-inline-end:10px;-ms-flex-preferred-size:200px;flex-basis:200px;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}#form_fields_records .form-fields-record-subsequent .field-value-copy-controls,#form_fields_records .form-fields-record-subsequent .help-text,#form_fields_records .form-fields-record-subsequent .section-subheader{display:none!important}#form_fields_records .dt_location_grid .typeahead__container button{overflow:hidden;white-space:nowrap;width:65px}@media only screen and (max-width:782px){#form_fields_records .form-fields-record{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#form_fields_records .form-field{-ms-flex-preferred-size:50px;flex-basis:50px}#form_fields_records .record-divider{display:block}#form_fields_records .landscape-record-removal-button{display:none}#form_fields_records .form-fields-record-subsequent .help-text,#form_fields_records .form-fields-record-subsequent .section-subheader{display:block!important}#form_fields_records .form-fields-record-subsequent .field-value-copy-controls{display:none!important}#form_fields_records .dt_location_grid .typeahead__container button{width:auto}}.button.select-button{border-radius:5px;margin-bottom:5px;margin-right:5px}.button.select-button:hover{background-color:#4caf50;color:#fff;opacity:.5}.button.select-button.empty-select-button,.button.select-button.empty-select-button:focus,.button.select-button[disabled]{background-color:#eee;color:#000}.button.select-button.selected-select-button,.button.select-button.selected-select-button:focus{background-color:#4caf50;color:#fff}.dt_multi_select .dt-icon{-webkit-filter:none;filter:none;margin-right:5px}.submitting-select-button{opacity:.5}.button.clear-date-button{background:#eee;border:1px solid #cacaca;border-left:0;color:#cc4b37}.button.clear-date-button:hover{background-color:#cc4b37;color:#fefefe}html[dir=rtl] .button.clear-date-button{border:1px solid #cacaca;border-right:0}.button.delete-button-style{background:#eee;border:1px solid #cacaca;border-left:0;border-radius:0;color:#cc4b37}.button.delete-button-style:hover{background-color:#cc4b37;color:#fefefe}html[dir=rtl] .button.delete-button-style{border:1px solid #cacaca;border-radius:0;border-right:0}.item-details-header{font-size:1.7rem}.item-details-header-row{margin-bottom:15px}.item-details-header-row .button{padding:.45em 1em}.item-details-header-row .label{font-size:.9rem}.contact-quick-button-number{background-color:#3f729b;border-radius:20px;color:#fff;font-size:10px;margin-left:3px;padding:2px 4px;position:absolute;top:0}.contact-quick-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-content:center;width:100%}.contact-quick-buttons img{height:20px;width:20px}.contact-quick-button{position:relative;width:-webkit-min-content;width:-moz-min-content;width:min-content;-webkit-box-flex:0;-ms-flex:0 1 100px;flex:0 1 100px;margin:5px 0 10px}.contact-quick-button p{font-size:12px;margin-bottom:0;word-spacing:100vw}.quick-action-menu a{vertical-align:middle}.quick-action-menu a img{height:20px;width:20px}#comment-activity-section{scroll-margin-top:60px;scroll-snap-margin-top:60px}#comment-activity-section .button.select-button:hover,#comment-activity-section .selected-select-button,#comment-activity-section .selected-select-button :focus{background-color:#3f729b}#comment-activity-section li{list-style-type:none}#comment-activity-section .tabs-title{margin-right:10px}#comment-activity-section .tabs-title input{margin:0}#comment-activity-section .tabs-title button{color:#3f729b;font-size:12px}#comment-activity-section .tabs-content{border:none}#comment-activity-section p{line-height:1.4}#comment-activity-section .gravatar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:center;align-self:center}#comment-activity-section .gravatar img{height:16px}#comment-activity-section .activity-block .comment-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;grid-gap:5px}#comment-activity-section #add-comment-button{height:3rem;margin-bottom:0}#comment-activity-section #add-comment-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}#comment-activity-section .comment-bubble{word-wrap:break-word;padding-bottom:2px}#comment-activity-section .comment-bubble .comment-text{min-height:1em}#comment-activity-section .comment-bubble .comment-text ul li{list-style:disc!important}#comment-activity-section .comment-bubble .comment-text ol br,#comment-activity-section .comment-bubble .comment-text ul br{display:none}#comment-activity-section .emoji{height:1.4rem;width:1.4rem}#comment-activity-section .edit-comment-controls a{font-size:12px}#comment-activity-section .edit-comment-controls img{height:10px}#comment-activity-section .edit-comment-controls object path{fill:red}#comment-activity-section .comment-reactions{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}#comment-activity-section .comment-reaction,#comment-activity-section .reactions__button{background-color:#f8f8f8;border-radius:100px;display:-webkit-box;display:-ms-flexbox;display:flex;margin-right:4px;margin-top:4px;padding:.1rem .5rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid transparent;cursor:pointer}#comment-activity-section .comment-reaction:hover,#comment-activity-section .reactions__button:hover{border-color:#8a8a8a}#comment-activity-section .comment-reaction{background-color:#f8f8f8;border-radius:100px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.9rem;height:1.6rem;line-height:.9rem;padding:.1rem .5rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid transparent;cursor:pointer}#comment-activity-section .comment-reaction *{pointer-events:none}#comment-activity-section .comment-reaction .emoji{height:1rem;width:1rem}#comment-activity-section .comment-reaction span+span{font-size:.8rem;padding-left:4px}#comment-activity-section .comment-reaction[data-own-reaction=true]{background-color:#def1ff;border-color:#3f729b}#comment-activity-section .comment-reaction[data-own-reaction=true]:hover{border-color:#3f729b}#comment-activity-section .comment-reaction:active{-webkit-transform:scale(.9);transform:scale(.9)}#comment-activity-section .reaction-controls{-webkit-box-align:center;-ms-flex-align:center;align-items:center}#comment-activity-section .add-reaction-svg,#comment-activity-section .reaction-controls{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}#comment-activity-section .add-reaction-svg:before{background-color:#fff;border-radius:100px;content:"+";font-size:.8rem;font-weight:600;line-height:.8rem;padding:0 .1rem;pointer-events:none;position:absolute;right:-7px;text-align:center;top:3px}#comment-activity-section .reactions__button{color:#8a8a8a;height:100%;padding-right:.7rem}#comment-activity-section .reactions__button[open]:before{background:transparent;bottom:0;content:" ";cursor:default;display:block;left:0;position:fixed;right:0;top:0;z-index:8}#comment-activity-section .reactions__dropdown{border-radius:6px;bottom:35px;-webkit-box-shadow:0 8px 24px 0 hsla(210,8%,62%,.2);box-shadow:0 8px 24px 0 hsla(210,8%,62%,.2);left:8px;-webkit-transform:translate(-20px,5px);transform:translate(-20px,5px);width:215px;z-index:9}#comment-activity-section .reactions__dropdown:after{border:7px solid transparent;border-top-color:#fff;bottom:-14px;content:"";left:20px;position:absolute}#comment-activity-section .reactions__dropdown:before{border:8px solid transparent;border-top-color:#cacaca;bottom:-16px;content:"";left:19px;position:absolute}#comment-activity-section .add-reaction{margin:0 .2rem}#comment-activity-section .add-reaction:hover{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-transition:all .1s ease;transition:all .1s ease}#comment-activity-section .comment-controls{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-content:space-between}#comment-activity-section .comment-controls>audio{width:100%}#comment-activity-section .edit-comment-controls{margin-right:10px;margin-top:4px}#comment-activity-section .comment-bubble,#comment-activity-section .comment-controls{margin:0 0 0 2em;padding:0 0 0 15px;text-align:left}#comment-activity-section html[dir=rtl] .comment-bubble,#comment-activity-section html[dir=rtl] .comment-controls{margin:0 2em 0 0;padding:0 15px 0 0;text-align:right}#comment-activity-section .comment-date{font-size:12px;margin-right:20px}#comment-activity-section .translation-bubble{border:0;border-left:2px solid #8a8a8a;margin:0 0 0 2em;padding-left:1em}#comment-activity-section .translate-button{font-size:.85em;margin:0 0 0 2em;padding:0 0 0 15px}#comment-activity-section html[dir=rtl] .translation-bubble{border:0;border-right:2px solid #8a8a8a;margin:0 2em 0 0;padding-right:1em}#comment-activity-section html[dir=rtl] .translate-button{margin:0 2em 0 0;padding:0 15px 0 0}#comment-activity-section .activity-block{margin-top:15px}#comment-activity-section .activity-bubble{word-wrap:break-word;color:gray;font-style:italic;-webkit-border-start:3px solid #dcdcdc;border-inline-start:3px solid #dcdcdc;-webkit-padding-start:15px;margin:0;padding-inline-start:15px;-webkit-margin-start:2em;margin-inline-start:2em;padding-bottom:2px}#comment-activity-section .revert-activity{float:right}#comment-activity-section .revert-arrow-img{height:17px;margin-right:15px;padding-top:2px}#comment-activity-section .mentions-input-box textarea.loading-gif{background:url(../../../dt-assets/images/ajax-loader.gif) no-repeat 99% 6px}#comment-activity-section .mentions-input-box .mentions strong span{font-weight:300}#comment-activity-section #add-comment-section{border:1px solid #dcdcdc;border-radius:3px;margin:0 0 1.06667rem}#comment-activity-section #add-comment-section select,#comment-activity-section #add-comment-section textarea{border:none;margin-bottom:0}#comment-activity-section #add-comment-section select{-webkit-box-shadow:none;box-shadow:none}#comment-activity-section #add-comment-section .section-subheader{padding-left:.5rem;padding-right:.15rem;padding-top:.53333rem}.display-fields ul{list-style-type:none;margin-left:0}.display-fields img{height:15px}#details-tile .detail-snippet-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}#details-tile .detail-snippet{display:none;margin-bottom:5px;overflow:hidden;padding-right:15px;text-overflow:ellipsis;white-space:nowrap}#details-tile .detail-snippet img{height:15px;margin-right:3px;vertical-align:middle;width:15px}#details-tile .detail-snippet .snippet-field-name{font-size:small}@media screen and (max-width:640px){#details-tile .detail-snippet{max-width:100%}}#details-tile .phone-open-with-container{background:#fefefe;border:1px solid #cacaca;border-radius:5px;padding:.5em}#details-tile .phone-open-with-container ul{margin:0}#details-tile .phone-open-with-container ul li{list-style:none}html[dir=rtl] .input-group-field{text-align:right}.group-progress-button-wrapper{text-align:center;-webkit-box-flex:1;-ms-flex:1 0 80px;flex:1 0 80px}.group-progress-button{background-color:#3f729b;border-radius:5px;height:60px;opacity:.5;padding:10px;text-align:center;width:65px}.members-section{border:1px solid #ccc}.members-section #empty-members-list-message{padding:10px}.members-section .member-row{display:-webkit-box;display:-ms-flexbox;display:flex;padding:10px}.members-section .member-row:hover{background-color:hsla(0,0%,80%,.5)}.members-section .member-row .member-row-actions{color:grey;margin:0;padding:0 5px}.members-section .member-row i{padding:0 2px}.members-section .member-row .dt-icon{margin-right:5px;vertical-align:text-top}.members-header button{border:1px solid #ccc;border-bottom:2px solid #fff;height:36px;margin-bottom:-1px;padding:5px 10px;vertical-align:bottom;width:-webkit-max-content;width:-moz-max-content;width:max-content}.members-header button img{margin-left:2px}.detail-notification-box{border:none;color:#fff;text-align:center}.detail-notification-box h4{font-weight:700}.detail-notification-box img{margin:0 10px}.accept-contact .bordered-box{background-color:#3f729b}.accept-contact .bordered-box .accept-button{background-color:#4caf50}.accept-contact .bordered-box .decline-button{background-color:#f43636}.accept-contact .bordered-box .button{margin:0 10px}select.color-select{background-image:url("data:image/svg+xml;utf8,");border-radius:10px;color:#fff;font-weight:700;text-shadow:rgba(0,0,0,.45) 0 0 6px}select.color-select option{background-color:#fff;color:#000}.bordered-box .section-header{display:-webkit-box;display:-ms-flexbox;display:flex}.bordered-box .section-chevron{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:0;margin-inline-end:0}.bordered-box .section-chevron img{vertical-align:middle;width:20px}.bordered-box .chevron_down,.bordered-box.collapsed .chevron_up{display:none}.bordered-box.collapsed .chevron_down{display:block}.bordered-box.collapsed .section-body,.hidden-grid-item{display:none}.typeahead__query{z-index:1!important}.assigned-to-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.assigned-to-row .status-square{border-radius:2px;display:inline-block;height:13px;width:13px}.assigned-to-row>span{margin-right:10px}.dt_user_select .typeahead__cancel-button{line-height:1.5;visibility:inherit}#tasks-modal .existing-task-action{color:#3f729b;font-size:10px;margin:0 5px}.details-second-bar a,.details-second-bar button,.details-second-bar span{font-size:12px}.details-second-bar .title{font-size:15px}.details-second-bar .record-name-tagline{display:inline-block;font-size:10px}.details-second-bar .record-name-tagline a,.details-second-bar .record-name-tagline span{font-size:10px;margin:0;vertical-align:baseline}.details-second-bar .dt-record-type-icon{height:10px;vertical-align:baseline;width:10px}.details-second-bar .control-buttons{grid-gap:.3em}.details-second-bar .details-bar-picture{cursor:pointer;vertical-align:middle}.details-second-bar img.details-bar-picture{border-radius:5px;height:55px;min-width:55px;-o-object-fit:cover;object-fit:cover;width:55px}.details-second-bar i.details-bar-picture{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:55px;height:40px;opacity:.3}.details-second-bar i.details-bar-picture:before{-ms-flex-item-align:center;align-self:center}.is-stuck #second-bar-small{border-top:.5rem solid #3f729b}.is-stuck #second-bar-small img.details-bar-picture{height:40px;min-width:40px;width:40px}.is-stuck #second-bar-small i.details-bar-picture{font-size:40px;height:40px}.is-stuck #second-bar-small .mobile-nav-actions{display:none}.is-stuck #second-bar-small #record-tagline{display:none;height:0;opacity:0}.is-stuck .hide-on-scroll{display:none}#second-bar-small{border-top:none}#second-bar-small #record-tagline{opacity:1;-webkit-transition:all .3s;transition:all .3s}#second-bar-small .mobile-nav-actions{margin-bottom:5px;grid-gap:5px}.dt_user_select{margin-bottom:15px}.add-link-dropdown{display:inline-block;margin:0 5px;position:absolute}.add-link-dropdown:before{content:"";cursor:pointer;height:25px;position:absolute;-webkit-transform:translate(-18px,-3px);transform:translate(-18px,-3px);width:50px}.add-link-dropdown__content{background-color:#fff;border:1px solid #cacaca;-webkit-box-shadow:0 8px 16px 0 rgba(0,0,0,.2);box-shadow:0 8px 16px 0 rgba(0,0,0,.2);display:none;min-width:160px;position:absolute;-webkit-transform:translateX(-15%);transform:translateX(-15%);z-index:1}html[dir=rtl] .add-link-dropdown__content{-webkit-transform:translateX(15%);transform:translateX(15%)}.add-link-dropdown:hover .add-link-dropdown__content,.add-link-dropdown__content:hover{display:block}.add-link__option{cursor:pointer;padding:5px 10px}.add-link__option:hover{background-color:#3f729b;color:#fff}.link-section .section-subheader{display:none}.link-section .section-subheader:has(+div){display:block}.link-section .input-group{margin-bottom:5px}#assigned_to_user_modal #filter-tabs img{display:inline-block;height:20px;margin-right:2px;vertical-align:middle;width:20px}.dispatcher-tile .populated-list .assigned-to-row>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dispatcher-tile .populated-list .assigned-to-row:hover{background-color:#f2f2f2}.dispatcher-tile .populated-list .assigned-to-row{border-bottom:1px solid hsla(0,0%,50%,.31);padding:5px 5px 0}.dispatcher-tile .populated-list{max-height:250px;overflow-y:scroll}.health-item{border-radius:100%;color:#000;cursor:pointer;display:none;font-size:16px;font-style:italic;height:50px;margin:auto;position:absolute;text-align:center;width:50px}.health-item img{-webkit-filter:grayscale(1) opacity(.75);filter:grayscale(1) opacity(.75);height:50px;width:50px}.health-item i{-webkit-filter:grayscale(1) opacity(.2);filter:grayscale(1) opacity(.2);font-size:50px}.practiced-item{-webkit-filter:none!important;filter:none!important}.practiced-button{background-color:#3f729b!important;opacity:unset!important}.practiced-button img{-webkit-filter:none!important;filter:none!important}.health-circle{border:3px dashed #a9a9a9;border-radius:100%;display:block;height:280px;margin:auto;width:280px}.health-grid{display:inline-block;height:100%;margin-left:auto;margin-right:auto;position:relative;width:100%}.committed{border:3px solid #4caf50!important}.group-progress-button img{-webkit-filter:grayscale(1) contrast(1.35);filter:grayscale(1) contrast(1.35)}.empty-health{height:35px;margin-left:auto;margin-right:auto;margin-top:40%;width:35px}.empty-health-text{font-style:italic;margin-left:-15%;margin-top:-15%;text-align:center}#content.template-merge-post-details table,#content.template-merge-post-details tbody,#content.template-merge-post-details td,#content.template-merge-post-details tr{border:none}#content.template-merge-post-details #main_header{margin-bottom:10px}#content.template-merge-post-details #main_header .bordered-box{text-align:center}#content.template-merge-post-details #main_header #select_current_primary_record{max-width:60%;min-width:60%}#content.template-merge-post-details #main_archiving{margin-bottom:10px}#content.template-merge-post-details #main_archiving .main-archiving-primary-switch-but-div{text-align:center}#content.template-merge-post-details #main_archiving #main_archiving_fields_div{max-height:800px!important;min-height:500px!important;overflow:auto}#content.template-merge-post-details #main_primary{margin-bottom:10px}#content.template-merge-post-details #main_primary #main_primary_fields_div{max-height:800px!important;min-height:500px!important;overflow:auto}#content.template-merge-post-details #main_updated{margin-bottom:10px}#content.template-merge-post-details #main_updated #main_updated_fields_div{max-height:800px!important;min-height:500px!important;overflow:auto}#content.template-merge-post-details #main_footer .bordered-box{text-align:center}.merge-modal{border:1px solid #3f729b;border-radius:10px;padding:0}.merge-modal-header{background-color:#3f729b;color:#fff;text-align:center}.merge-modal-heading{font-size:1.5rem;padding:10px 0}.merge-modal-subheading{display:inline-block;font-size:1.25rem;font-weight:700;margin-bottom:0;padding:10px 0;text-align:center;width:100%}.merge-modal-spinner{display:inline-block}.merge-modal-no-dups-message{display:none;margin-top:20px;text-align:center}.merge-modal-close{float:right;margin-top:15px}.merge-modal-contact-row{background-color:#f2f2f2;overflow:hidden;padding:2%}.merge-modal-contact-name{color:#3f729b;font-weight:700}.merge-modal-contact-info{font-size:16px;font-weight:400}.merge-modal-contact-row img{max-height:1em;max-width:1em}.merge-modal-button{float:right;padding-left:10%}.duplicates-detected-button{margin-bottom:0;padding:.5em}#content.archive-template{max-width:100%}.filter{border-bottom:1px solid #e2e2e2;border-top:1px solid #e2e2e2;margin:0 -1rem;padding:0 1rem 10px;width:calc(100% + 2rem)}.filter--closed{padding-bottom:0}.filter__title:hover{color:#2196f3}.filter__title:before{content:"▼";float:right}.filter--closed .filter__title:before{content:"▶";float:right}.filter--closed :not(.filter__title){display:none}.filter__title{cursor:pointer}.filter input,.list-views input{margin:0 .2rem 0 0}.typeahead__query.disabled{position:relative}.typeahead__query.disabled:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:100}.filter label:hover,.list-views label:hover{color:#2196f3}.list-views{margin-bottom:.5rem}.list-views__sub{margin-left:20px}.list-view{-webkit-column-gap:.2rem;-moz-column-gap:.2rem;column-gap:.2rem;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex}.list-view__count{float:right}.filter-list-name,.list-view__text{text-overflow:ellipsis;-webkit-box-flex:1;-ms-flex-positive:1;display:inline-block;flex-grow:1;overflow:hidden;white-space:nowrap}.js-filter-checkbox-label{-webkit-column-gap:.2rem;-moz-column-gap:.2rem;column-gap:.2rem;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex}.priorities-show-all{float:right}.priorities-show-all>span{font-size:60%}#records-table th{cursor:pointer}#list-filter-tabs{margin-top:10px}#list-filter-tabs .is-active a,#list-filter-tabs .is-active a:focus{background-color:#3f729b;color:#fff}#list-filter-tabs .accordion-title{font-size:inherit;font-weight:700;padding:.75rem 1rem}#list-filter-tabs .accordion-title .tab-count-span{font-size:12px;font-weight:100}.show-closed-switch{display:inline-block}.show-closed-switch .switch{display:inline-block;margin-bottom:0;vertical-align:middle}table.table-remove-top-border thead{border-top:0}table.js-list{table-layout:auto;word-wrap:break-word;white-space:nowrap;width:100%}@media screen and (min-width:1024px){table.js-list td{max-width:250px}}.table-container{display:block;overflow-x:auto}.table-container,.table-container #records-table{transform:rotateX(180deg);-ms-transform:rotateX(180deg);-webkit-transform:rotateX(180deg)}table.js-list th[data-id=name]{background-color:#fff;left:32px;position:sticky}table.js-list td[data-id=name]{background-color:inherit;left:32px;position:sticky;z-index:101}table.js-list th[data-id=index]{background-color:#fff;left:-1px;position:sticky}table.js-list td[data-id=index]{background-color:inherit;left:-1px;position:sticky;z-index:100}table.js-list th[data-id=profile_pic]{background-color:#fff;left:32px;position:sticky}table.js-list td[data-id=profile_pic]{background-color:inherit;left:32px;position:sticky}table.js-list img.list-image{border-radius:5px;height:32px;min-width:32px;-o-object-fit:cover;object-fit:cover;vertical-align:middle;width:32px}table.js-list i.list-image{font-size:32px;opacity:.125}.current-filter-list{background:#ecf5fc;border:1px solid #c2e0ff;border-radius:2px;font-size:.875rem;margin-bottom:.375rem;margin-right:4px;padding:4px 0 4px 4px;position:relative}.current-filter-list-close{border-left:1px solid #c2e0ff;cursor:pointer;font-family:Arial,sans-serif;font-weight:300;margin-left:5px;padding:7px 5px}.current-filter-list-close:hover{background:#c2e0ff;color:#fff}.current-filter-list-excluded{background:#fcecec;border:1px solid #ffc2c2;border-radius:2px;font-size:.875rem;margin-bottom:.375rem;margin-right:4px;padding:4px 0 4px 4px;position:relative}.current-filter-list-excluded .current-filter-list-close{border-left:1px solid #ffc2c2}.current-filter-list-excluded .current-filter-list-close:hover{background:#ffc2c2;color:#fff}.current-filter{background:#ecf5fc;border:1px solid #c2e0ff;border-radius:2px;font-size:.875rem;margin-bottom:.375rem;margin-right:4px;padding:4px;position:relative}.current-filter-label-button{color:#000;cursor:default;margin:0 0 0 4px}.current-filter-label-button:hover{color:#cecece;cursor:pointer;margin:0 0 0 4px}.current-filter-excluded{background:#fcecec;border:1px solid #ffc2c2;border-radius:2px;font-size:.875rem;margin-bottom:.375rem;margin-right:4px;padding:4px;position:relative}#content table thead .sortable th{background-image:url(../../../dt-assets/images/sort_both.png);background-position:100%;background-repeat:no-repeat;padding-right:1.5rem}#content table thead .sortable .sorting_desc{background-image:url(../../../dt-assets/images/sort_desc.png)}#content table thead .sortable .sorting_asc{background-image:url(../../../dt-assets/images/sort_asc.png)}#filter-modal{padding:10px 0 0}#filter-modal .tabs-title>a{display:-webkit-box;display:-ms-flexbox;display:flex;padding:1.25rem 0 1.25rem 15px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#filter-modal .tabs-title__icon{height:1rem;margin-right:.7rem;width:1.2rem}#filter-modal h3{margin-left:10px}#filter-modal .vertical.tabs{background-color:#3f729b;border:none;max-height:500px;overflow-x:hidden;overflow-y:auto}#filter-modal .vertical.tabs .tabs-title>a{color:#fff}#filter-modal .vertical.tabs .tabs-title>a:hover{background-color:#224f72}#filter-modal .vertical.tabs .tabs-title>a:focus,#filter-modal .vertical.tabs .tabs-title>a[aria-selected=true]{background-color:#224f72;color:#fff}#filter-modal .tabs-content{min-height:400px}#filter-modal .filter-modal-left{background-color:#3f729b}#filter-modal .filter-modal-right{background-color:#f2f2f2;border:none}#filter-modal .button-cancel{background-color:#f2f2f2;color:#000;margin:5px 0}#filter-modal .confirm-buttons{text-align:end}#filter-modal .grid-container{padding:0}#filter-modal #new-filter-name,#filter-modal .confirm-filter-records{margin:5px 0}.list-name-link{display:inline-block;min-height:1.5em;width:100%}.status--unassigned{color:#999}.status--accepted{color:#4caf50}.status--paused{color:#ff9800}.status--closed{color:#333}.status--unassignable{color:#ff9800}.milestone--belief{color:#4caf50}.milestone--baptized,.milestone--baptizing{color:#2196f3}.milestone--can_share,.milestone--in_group,.milestone--sharing{color:#4caf50}.milestone--planting{color:#9c27b0}.group-status--no_value{color:#000}.group-status--active_pre_group{color:#ff9800}.group-status--active_church,.group-status--active_group{color:#4caf50}.group-status--inactive_church,.group-status--inactive_group,.group-status--inactive_pre_group{color:#f43636}#table-content tr{cursor:pointer}#table-content tr ul{list-style:none;margin:0;max-height:100px}#table-content tr ul,#table-content tr ul li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#table-content tr:hover{background-color:#ecf5fc}.list_field_picker ul{-webkit-column-count:1;-moz-column-count:1;column-count:1;margin-bottom:10px}@media screen and (min-width:640px){.list_field_picker ul{-webkit-column-count:4;-moz-column-count:4;column-count:4}}.bulk_edit_checkbox{cursor:default;display:none}.bulk_edit_checkbox input[type=checkbox]{margin:0}.bulk_edit_on .bulk_edit_checkbox{display:table-cell}#bulk_edit_picker .button-group.small .button{border:1px solid #ccc}#bulk_edit_picker .button-group.small .button.selected-select-button{border:none}#bulk_add-comment-section{background:#fefefe;border:1px solid #dcdcdc;border-radius:3px;margin:0 0 1.06667rem}#bulk_add-comment-section select,#bulk_add-comment-section textarea{border:none;margin-bottom:0}#bulk_add-comment-section select{-webkit-box-shadow:none;box-shadow:none}#bulk_add-comment-section .section-subheader{padding-left:.5rem;padding-right:.15rem;padding-top:.53333rem}#bulk_comment-input{margin:0}.icon-star{height:1em;width:1em;fill:#c7c6c1}.icon-star.selected{fill:#ffc105}@media screen and (max-width:1024px){#table-content tr{cursor:pointer;padding:10px}#table-content tr td{padding:0}#table-content tr .mobile-list-field-name{display:inline-block;font-size:10px;line-height:20px;margin-right:5%;overflow:hidden;vertical-align:top;white-space:nowrap;width:20%}#table-content tr .mobile-list-field-value{display:inline-block;overflow:hidden;white-space:nowrap;width:70%}#table-content tr .mobile-list-field-value ul{white-space:normal}#table-content tr ul li{display:inline}#table-content tr:hover{background-color:#ecf5fc}}.dt-radio.button-group label{background-color:transparent;color:#000;display:inline;padding:0 20px 0 5px}.small-text{font-size:.8rem}.list-dropdown-submenu-icon{height:15px;margin-right:6px;vertical-align:bottom;width:15px}.list_action_section{background-color:#ecf5fc;border-radius:5px;display:none;margin:30px 0;padding:10px 30px 5px}.list_action_section .list-action-close-button,.list_action_section .list-action-event-buttons{float:right;position:relative}#user-management-tools{padding:15px}#user-management-tools #user-chart{padding-left:15px;padding-right:15px;position:relative}#user-management-tools #user-chart #page-title{position:absolute}#user-management-tools #user-chart #multipliers_table{width:100%}#user-management-tools #user-chart #multipliers_table .user_row{cursor:pointer}#user-management-tools #user-chart #multipliers_table select,#user-management-tools #user-chart #multipliers_table_filter input{margin-bottom:0}#user_modal{background-color:#e2e2e2;max-width:100%}#user_modal #hero_status p{font-size:2rem}#user_modal .tabs-content{padding:0}#user_modal .tabs,#user_modal .tabs-content{background:none;border:none}#user-add-user label{font-weight:700}#user-add-user .grid-x{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media print,screen and (min-width:40em){#user-add-user .grid-x>.medium-6{width:48%}}#map-wrapper{position:relative}#map,#map-wrapper{height:800px;width:100%}#map{left:0;top:0;z-index:1}#legend,#map{position:absolute}#legend{left:10px;right:10px;top:10px;z-index:2}#data{word-wrap:break-word}.legend{background-color:#fff;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);font:12px/20px Roboto,Arial,sans-serif;opacity:.9;padding:10px}.legend h4{margin:0 0 10px}#spinner{display:none;left:50%;position:absolute;top:50%;z-index:20}.spinner-image{width:30px}.info-bar-font{font-size:1.5em;padding-top:9px}.border-left{border-left:1px solid #d3d3d3;padding:0 10px}#add_records_div{left:10px;max-height:100%;overflow-x:auto;position:absolute;top:90px;z-index:2}.add-records-div{background-color:#fff;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);display:none;font:12px/20px Roboto,Arial,sans-serif;opacity:.9;padding:10px;width:300px}.close-add-records-div{cursor:pointer}#geocode-details{position:absolute;right:10px;top:15%;z-index:2}.geocode-details{background-color:#fff;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);display:none;font:12px/20px Roboto,Arial,sans-serif;opacity:.9;padding:10px;width:300px}.close-details{cursor:pointer}#map-wrapper #legend img{height:30px;width:30px}#map-wrapper #legend #map-type{padding:0 10px}#map-wrapper #legend #map-type button{margin-bottom:0;padding:2px}#map-wrapper #legend #map-type button.selected-select-button img{-webkit-filter:invert(100%) sepia(0) saturate(7481%) hue-rotate(180deg) brightness(109%) contrast(100%);filter:invert(100%) sepia(0) saturate(7481%) hue-rotate(180deg) brightness(109%) contrast(100%)}#map-wrapper #legend .map-option-buttons button{margin:0 0 0 3px}#map-wrapper #legend #loading-legend span{font-size:14px;margin:0 5px;vertical-align:middle}.timechart{height:400px}.day-activities__title{background-color:#3f729b;color:#fff;font-size:1.1rem;padding:.1rem .3rem}.post-activities{margin-bottom:.5rem}.post-activities__icon{color:#3f729b;margin-right:.1rem}.post-activities__title{color:#3f729b;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.post-activities__item{padding-left:1.4rem}.post-activities__item--no-title{background-color:rgba(63,114,155,.19);padding-left:1.4rem}.activity__more-state,.fields__more-state{display:none}.fields__less-link,.fields__more-link{color:#3f729b;cursor:pointer;display:inline;padding:0 .5rem;text-decoration:underline}.activity__less-link,.fields__less-link{display:none}.activity__more-details,.fields__more-details{font-size:0;max-height:0;opacity:0;-webkit-transition:.25s ease;transition:.25s ease}.fields__more-state:checked~.fields__more-details{font-size:inherit;max-height:100em;opacity:1}.fields__more-state:checked~.fields__more-link{display:none}.fields__more-state:checked~.fields__less-link{display:inline}.activity__more-state:checked~.post-activities__item .activity__more-details{font-size:inherit;max-height:100em;opacity:1}.activity__more-state:checked+.post-activities__title .activity__more-link{display:none}.activity__more-state:checked+.post-activities__title .activity__less-link{display:inline}#activity_highlights .highlights-table{table-layout:fixed}#activity_highlights .highlights-table tr td:first-child{width:90%}#activity_highlights .highlights-table.striped tr:nth-child(2n){background-color:#ecf5fc;border-bottom:0}#activity_highlights h4{color:#3f729b;margin-top:1em}#activity_highlights #comment-filter{width:60px}#activity_highlights .left-margin{margin-left:.6666666667rem}#activity_highlights .comment{margin-bottom:.5rem}@media print{*{background:transparent!important;color:#000!important;-webkit-filter:none!important;filter:none!important;-ms-filter:none!important;text-shadow:none!important}a,a:visited{color:#444!important;text-decoration:underline}a:after,a:visited:after{content:" (" attr(href) ")"}a abbr[title]:after,a:visited abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.page-navigation,.respond-form,.sidebar,.wp-prev-next,nav{display:none}} \ No newline at end of file +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}[data-whatinput=mouse] *,[data-whatinput=mouse] :focus,[data-whatinput=touch] *,[data-whatinput=touch] :focus,[data-whatintent=mouse] *,[data-whatintent=mouse] :focus,[data-whatintent=touch] *,[data-whatintent=touch] :focus{outline:none}[draggable=false]{-webkit-touch-callout:none;-webkit-user-select:none}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:.9375rem}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}body{background:#fefefe;color:#0a0a0a;font-family:Helvetica,Arial,sans-serif;font-weight:300;line-height:1.5;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;height:auto;max-width:100%;vertical-align:middle;-ms-interpolation-mode:bicubic}textarea{border-radius:0;height:auto;min-height:50px}select{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-radius:0;cursor:auto;line-height:1;padding:0}[data-whatinput=mouse] button{outline:0}pre{overflow:auto;-webkit-overflow-scrolling:touch}button,input,optgroup,select,textarea{font-family:inherit}.is-visible{display:block!important}.is-hidden{display:none!important}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;border:1px solid #cacaca;border-radius:0;-webkit-box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);-webkit-box-sizing:border-box;box-sizing:border-box;color:#0a0a0a;display:block;font-family:inherit;font-size:1rem;font-weight:300;height:2.5rem;line-height:1.5;margin:0 0 1.0666666667rem;padding:.5333333333rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s;width:100%}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:none;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}textarea{max-width:100%}textarea[rows]{height:auto}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}input[type=search]{-webkit-box-sizing:border-box;box-sizing:border-box}::-webkit-input-placeholder{color:#cacaca}::-moz-placeholder{color:#cacaca}:-ms-input-placeholder{color:#cacaca}::-ms-input-placeholder{color:#cacaca}::placeholder{color:#cacaca}[type=checkbox],[type=file],[type=radio]{margin:0 0 1.0666666667rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-bottom:0;margin-left:.5333333333rem;margin-right:1.0666666667rem;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5333333333rem}[type=file]{width:100%}label{color:#0a0a0a;display:block;font-size:.9333333333rem;font-weight:300;line-height:1.8;margin:0}label.middle{line-height:1.5;margin:0 0 1.0666666667rem;padding:.6rem 0}.help-text{color:#0a0a0a;font-size:.8666666667rem;font-style:italic;margin-top:-.5333333333rem}.input-group{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:1.0666666667rem;width:100%;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.input-group>:first-child,.input-group>:first-child.input-group-button>*,.input-group>:last-child,.input-group>:last-child.input-group-button>*{border-radius:0 0 0 0}.input-group-button,.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label,.input-group-field,.input-group-label{margin:0;white-space:nowrap}.input-group-label{background:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 1rem;text-align:center;white-space:nowrap;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px;min-width:0}.input-group-button{display:-webkit-box;display:-ms-flexbox;display:flex;padding-bottom:0;padding-top:0;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label{-ms-flex-item-align:stretch;align-self:stretch;font-size:1rem;height:auto;padding-bottom:0;padding-top:0}fieldset{border:0;margin:0;padding:0}legend{margin-bottom:.5333333333rem;max-width:100%}.fieldset{border:1px solid #cacaca;margin:1.2rem 0;padding:1.3333333333rem}.fieldset legend{margin:0 0 0 -.2rem;padding:0 .2rem}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;background-image:url('data:image/svg+xml;utf8,');background-origin:content-box;background-position:right -1.0666666667rem center;background-repeat:no-repeat;background-size:9px 6px;border:1px solid #cacaca;border-radius:0;color:#0a0a0a;font-family:inherit;font-size:1rem;font-weight:300;height:2.5rem;line-height:1.5;margin:0 0 1.0666666667rem;padding:.5333333333rem 1.6rem .5333333333rem .5333333333rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}@media screen and (min-width:0\0){select{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==")}}select:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:none;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{background-image:none;height:auto}select:not([multiple]){padding-bottom:0;padding-top:0}.is-invalid-input:not(:focus){background-color:#f9ecea;border-color:#cc4b37}.is-invalid-input:not(:focus)::-webkit-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-moz-placeholder{color:#cc4b37}.is-invalid-input:not(:focus):-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::placeholder{color:#cc4b37}.form-error,.is-invalid-label{color:#cc4b37}.form-error{display:none;font-size:.8rem;font-weight:700;margin-bottom:1.0666666667rem;margin-top:-.5333333333rem}.form-error.is-visible{display:block}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{font-size:inherit;line-height:1.6;margin-bottom:1rem;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:inherit;font-family:Helvetica,Arial,sans-serif;font-style:normal;font-weight:300;text-rendering:optimizeLegibility}.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}.h1,h1{font-size:1.6rem}.h1,.h2,h1,h2{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h2,h2{font-size:1.3333333333rem}.h3,h3{font-size:1.2666666667rem}.h3,.h4,h3,h4{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h4,h4{font-size:1.2rem}.h5,h5{font-size:1.1333333333rem}.h5,.h6,h5,h6{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h6,h6{font-size:1.0666666667rem}@media print,screen and (min-width:40em){.h1,h1{font-size:2rem}.h2,h2{font-size:1.6rem}.h3,h3{font-size:1.3333333333rem}.h4,h4{font-size:1.2rem}.h5,h5{font-size:1.1333333333rem}.h6,h6{font-size:1.0666666667rem}}a{color:#3f729b;cursor:pointer;line-height:inherit;text-decoration:none}a:focus,a:hover{color:#366285}a img,hr{border:0}hr{border-bottom:1px solid #cacaca;clear:both;height:0;margin:1.3333333333rem auto;max-width:100%}dl,ol,ul{line-height:1.6;list-style-position:outside;margin-bottom:1rem}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0;margin-left:1.25rem}dl{margin-bottom:1rem}dl dt{font-weight:700;margin-bottom:.3rem}blockquote{border-left:1px solid #cacaca;margin:0 0 1rem;padding:.6rem 1.3333333333rem 0 1.2666666667rem}blockquote,blockquote p{color:#8a8a8a;line-height:1.6}abbr,abbr[title]{border-bottom:1px dotted #0a0a0a;cursor:help;text-decoration:none}figure,kbd{margin:0}kbd{background-color:#e6e6e6;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;padding:.1333333333rem .2666666667rem 0}.subheader{color:#8a8a8a;font-weight:300;line-height:1.4;margin-bottom:.5rem;margin-top:.2rem}.lead{font-size:1.171875rem;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}ol.no-bullet,ul.no-bullet{list-style:none;margin-left:0}.cite-block,cite{color:#8a8a8a;display:block;font-size:.8666666667rem}.cite-block:before,cite:before{content:"— "}.code-inline,code{display:inline;max-width:100%;word-wrap:break-word;padding:.1333333333rem .3333333333rem .0666666667rem}.code-block,.code-inline,code{background-color:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;font-weight:300}.code-block{display:block;margin-bottom:1.5rem;overflow:auto;padding:1rem;white-space:pre}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media print,screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print,screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}@media screen and (min-width:75em){.xlarge-text-left{text-align:left}.xlarge-text-right{text-align:right}.xlarge-text-center{text-align:center}.xlarge-text-justify{text-align:justify}}@media screen and (min-width:90em){.xxlarge-text-left{text-align:left}.xxlarge-text-right{text-align:right}.xxlarge-text-center{text-align:center}.xxlarge-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:#000!important;-webkit-print-color-adjust:economy;print-color-adjust:economy;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.print-break-inside{page-break-inside:auto}}.grid-container{margin-left:auto;margin-right:auto;max-width:80rem;padding-left:.3333333333rem;padding-right:.3333333333rem}@media print,screen and (min-width:40em){.grid-container{padding-left:.7rem;padding-right:.7rem}}@media print,screen and (min-width:64em){.grid-container{padding-left:.7rem;padding-right:.7rem}}@media screen and (min-width:75em){.grid-container{padding-left:.7rem;padding-right:.7rem}}@media screen and (min-width:90em){.grid-container{padding-left:.7rem;padding-right:.7rem}}.grid-container.fluid{margin-left:auto;margin-right:auto;max-width:100%;padding-left:.3333333333rem;padding-right:.3333333333rem}@media print,screen and (min-width:40em){.grid-container.fluid{padding-left:.7rem;padding-right:.7rem}}@media print,screen and (min-width:64em){.grid-container.fluid{padding-left:.7rem;padding-right:.7rem}}@media screen and (min-width:75em){.grid-container.fluid{padding-left:.7rem;padding-right:.7rem}}@media screen and (min-width:90em){.grid-container.fluid{padding-left:.7rem;padding-right:.7rem}}.grid-container.full{margin-left:auto;margin-right:auto;max-width:100%;padding-left:0;padding-right:0}.grid-x{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.cell{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;min-height:0;min-width:0;width:100%}.cell.auto{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.cell.shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.auto,.grid-x>.shrink{width:auto}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9,.grid-x>.small-full,.grid-x>.small-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-full,.grid-x>.medium-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-full,.grid-x>.large-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}@media screen and (min-width:75em){.grid-x>.xlarge-1,.grid-x>.xlarge-10,.grid-x>.xlarge-11,.grid-x>.xlarge-12,.grid-x>.xlarge-2,.grid-x>.xlarge-3,.grid-x>.xlarge-4,.grid-x>.xlarge-5,.grid-x>.xlarge-6,.grid-x>.xlarge-7,.grid-x>.xlarge-8,.grid-x>.xlarge-9,.grid-x>.xlarge-full,.grid-x>.xlarge-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}@media screen and (min-width:90em){.grid-x>.xxlarge-1,.grid-x>.xxlarge-10,.grid-x>.xxlarge-11,.grid-x>.xxlarge-12,.grid-x>.xxlarge-2,.grid-x>.xxlarge-3,.grid-x>.xxlarge-4,.grid-x>.xxlarge-5,.grid-x>.xxlarge-6,.grid-x>.xxlarge-7,.grid-x>.xxlarge-8,.grid-x>.xxlarge-9,.grid-x>.xxlarge-full,.grid-x>.xxlarge-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.small-1{width:8.3333333333%}.grid-x>.small-2{width:16.6666666667%}.grid-x>.small-3{width:25%}.grid-x>.small-4{width:33.3333333333%}.grid-x>.small-5{width:41.6666666667%}.grid-x>.small-6{width:50%}.grid-x>.small-7{width:58.3333333333%}.grid-x>.small-8{width:66.6666666667%}.grid-x>.small-9{width:75%}.grid-x>.small-10{width:83.3333333333%}.grid-x>.small-11{width:91.6666666667%}.grid-x>.small-12{width:100%}@media print,screen and (min-width:40em){.grid-x>.medium-auto{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.medium-shrink{width:auto}.grid-x>.medium-1{width:8.3333333333%}.grid-x>.medium-2{width:16.6666666667%}.grid-x>.medium-3{width:25%}.grid-x>.medium-4{width:33.3333333333%}.grid-x>.medium-5{width:41.6666666667%}.grid-x>.medium-6{width:50%}.grid-x>.medium-7{width:58.3333333333%}.grid-x>.medium-8{width:66.6666666667%}.grid-x>.medium-9{width:75%}.grid-x>.medium-10{width:83.3333333333%}.grid-x>.medium-11{width:91.6666666667%}.grid-x>.medium-12{width:100%}}@media print,screen and (min-width:64em){.grid-x>.large-auto{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.large-shrink{width:auto}.grid-x>.large-1{width:8.3333333333%}.grid-x>.large-2{width:16.6666666667%}.grid-x>.large-3{width:25%}.grid-x>.large-4{width:33.3333333333%}.grid-x>.large-5{width:41.6666666667%}.grid-x>.large-6{width:50%}.grid-x>.large-7{width:58.3333333333%}.grid-x>.large-8{width:66.6666666667%}.grid-x>.large-9{width:75%}.grid-x>.large-10{width:83.3333333333%}.grid-x>.large-11{width:91.6666666667%}.grid-x>.large-12{width:100%}}@media screen and (min-width:75em){.grid-x>.xlarge-auto{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.xlarge-1,.grid-x>.xlarge-10,.grid-x>.xlarge-11,.grid-x>.xlarge-12,.grid-x>.xlarge-2,.grid-x>.xlarge-3,.grid-x>.xlarge-4,.grid-x>.xlarge-5,.grid-x>.xlarge-6,.grid-x>.xlarge-7,.grid-x>.xlarge-8,.grid-x>.xlarge-9,.grid-x>.xlarge-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.xlarge-shrink{width:auto}.grid-x>.xlarge-1{width:8.3333333333%}.grid-x>.xlarge-2{width:16.6666666667%}.grid-x>.xlarge-3{width:25%}.grid-x>.xlarge-4{width:33.3333333333%}.grid-x>.xlarge-5{width:41.6666666667%}.grid-x>.xlarge-6{width:50%}.grid-x>.xlarge-7{width:58.3333333333%}.grid-x>.xlarge-8{width:66.6666666667%}.grid-x>.xlarge-9{width:75%}.grid-x>.xlarge-10{width:83.3333333333%}.grid-x>.xlarge-11{width:91.6666666667%}.grid-x>.xlarge-12{width:100%}}@media screen and (min-width:90em){.grid-x>.xxlarge-auto{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.xxlarge-1,.grid-x>.xxlarge-10,.grid-x>.xxlarge-11,.grid-x>.xxlarge-12,.grid-x>.xxlarge-2,.grid-x>.xxlarge-3,.grid-x>.xxlarge-4,.grid-x>.xxlarge-5,.grid-x>.xxlarge-6,.grid-x>.xxlarge-7,.grid-x>.xxlarge-8,.grid-x>.xxlarge-9,.grid-x>.xxlarge-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.xxlarge-shrink{width:auto}.grid-x>.xxlarge-1{width:8.3333333333%}.grid-x>.xxlarge-2{width:16.6666666667%}.grid-x>.xxlarge-3{width:25%}.grid-x>.xxlarge-4{width:33.3333333333%}.grid-x>.xxlarge-5{width:41.6666666667%}.grid-x>.xxlarge-6{width:50%}.grid-x>.xxlarge-7{width:58.3333333333%}.grid-x>.xxlarge-8{width:66.6666666667%}.grid-x>.xxlarge-9{width:75%}.grid-x>.xxlarge-10{width:83.3333333333%}.grid-x>.xxlarge-11{width:91.6666666667%}.grid-x>.xxlarge-12{width:100%}}.grid-margin-x:not(.grid-x)>.cell{width:auto}.grid-margin-y:not(.grid-y)>.cell{height:auto}.grid-margin-x{margin-left:-.3333333333rem;margin-right:-.3333333333rem}@media print,screen and (min-width:40em){.grid-margin-x{margin-left:-.7rem;margin-right:-.7rem}}@media print,screen and (min-width:64em){.grid-margin-x{margin-left:-.7rem;margin-right:-.7rem}}@media screen and (min-width:75em){.grid-margin-x{margin-left:-.7rem;margin-right:-.7rem}}@media screen and (min-width:90em){.grid-margin-x{margin-left:-.7rem;margin-right:-.7rem}}.grid-margin-x>.cell{margin-left:.3333333333rem;margin-right:.3333333333rem;width:calc(100% - .66667rem)}@media print,screen and (min-width:40em){.grid-margin-x>.cell{margin-left:.7rem;margin-right:.7rem;width:calc(100% - 1.4rem)}}@media print,screen and (min-width:64em){.grid-margin-x>.cell{margin-left:.7rem;margin-right:.7rem;width:calc(100% - 1.4rem)}}@media screen and (min-width:75em){.grid-margin-x>.cell{margin-left:.7rem;margin-right:.7rem;width:calc(100% - 1.4rem)}}@media screen and (min-width:90em){.grid-margin-x>.cell{margin-left:.7rem;margin-right:.7rem;width:calc(100% - 1.4rem)}}.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - .66667rem)}.grid-margin-x>.small-2{width:calc(16.66667% - .66667rem)}.grid-margin-x>.small-3{width:calc(25% - .66667rem)}.grid-margin-x>.small-4{width:calc(33.33333% - .66667rem)}.grid-margin-x>.small-5{width:calc(41.66667% - .66667rem)}.grid-margin-x>.small-6{width:calc(50% - .66667rem)}.grid-margin-x>.small-7{width:calc(58.33333% - .66667rem)}.grid-margin-x>.small-8{width:calc(66.66667% - .66667rem)}.grid-margin-x>.small-9{width:calc(75% - .66667rem)}.grid-margin-x>.small-10{width:calc(83.33333% - .66667rem)}.grid-margin-x>.small-11{width:calc(91.66667% - .66667rem)}.grid-margin-x>.small-12{width:calc(100% - .66667rem)}@media print,screen and (min-width:40em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.small-3{width:calc(25% - 1.4rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.small-6{width:calc(50% - 1.4rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.small-9{width:calc(75% - 1.4rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.small-12{width:calc(100% - 1.4rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.4rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.4rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.4rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.4rem)}}@media print,screen and (min-width:64em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.small-3{width:calc(25% - 1.4rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.small-6{width:calc(50% - 1.4rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.small-9{width:calc(75% - 1.4rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.small-12{width:calc(100% - 1.4rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.4rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.4rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.4rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.4rem)}.grid-margin-x>.large-auto,.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.large-3{width:calc(25% - 1.4rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.large-6{width:calc(50% - 1.4rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.large-9{width:calc(75% - 1.4rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.large-12{width:calc(100% - 1.4rem)}}@media screen and (min-width:75em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.small-3{width:calc(25% - 1.4rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.small-6{width:calc(50% - 1.4rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.small-9{width:calc(75% - 1.4rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.small-12{width:calc(100% - 1.4rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.4rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.4rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.4rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.4rem)}.grid-margin-x>.large-auto,.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.large-3{width:calc(25% - 1.4rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.large-6{width:calc(50% - 1.4rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.large-9{width:calc(75% - 1.4rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.large-12{width:calc(100% - 1.4rem)}.grid-margin-x>.xlarge-auto,.grid-margin-x>.xlarge-shrink{width:auto}.grid-margin-x>.xlarge-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.xlarge-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.xlarge-3{width:calc(25% - 1.4rem)}.grid-margin-x>.xlarge-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.xlarge-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.xlarge-6{width:calc(50% - 1.4rem)}.grid-margin-x>.xlarge-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.xlarge-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.xlarge-9{width:calc(75% - 1.4rem)}.grid-margin-x>.xlarge-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.xlarge-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.xlarge-12{width:calc(100% - 1.4rem)}}@media screen and (min-width:90em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.small-3{width:calc(25% - 1.4rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.small-6{width:calc(50% - 1.4rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.small-9{width:calc(75% - 1.4rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.small-12{width:calc(100% - 1.4rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.4rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.4rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.4rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.4rem)}.grid-margin-x>.large-auto,.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.large-3{width:calc(25% - 1.4rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.large-6{width:calc(50% - 1.4rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.large-9{width:calc(75% - 1.4rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.large-12{width:calc(100% - 1.4rem)}.grid-margin-x>.xlarge-auto,.grid-margin-x>.xlarge-shrink{width:auto}.grid-margin-x>.xlarge-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.xlarge-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.xlarge-3{width:calc(25% - 1.4rem)}.grid-margin-x>.xlarge-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.xlarge-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.xlarge-6{width:calc(50% - 1.4rem)}.grid-margin-x>.xlarge-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.xlarge-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.xlarge-9{width:calc(75% - 1.4rem)}.grid-margin-x>.xlarge-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.xlarge-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.xlarge-12{width:calc(100% - 1.4rem)}.grid-margin-x>.xxlarge-auto,.grid-margin-x>.xxlarge-shrink{width:auto}.grid-margin-x>.xxlarge-1{width:calc(8.33333% - 1.4rem)}.grid-margin-x>.xxlarge-2{width:calc(16.66667% - 1.4rem)}.grid-margin-x>.xxlarge-3{width:calc(25% - 1.4rem)}.grid-margin-x>.xxlarge-4{width:calc(33.33333% - 1.4rem)}.grid-margin-x>.xxlarge-5{width:calc(41.66667% - 1.4rem)}.grid-margin-x>.xxlarge-6{width:calc(50% - 1.4rem)}.grid-margin-x>.xxlarge-7{width:calc(58.33333% - 1.4rem)}.grid-margin-x>.xxlarge-8{width:calc(66.66667% - 1.4rem)}.grid-margin-x>.xxlarge-9{width:calc(75% - 1.4rem)}.grid-margin-x>.xxlarge-10{width:calc(83.33333% - 1.4rem)}.grid-margin-x>.xxlarge-11{width:calc(91.66667% - 1.4rem)}.grid-margin-x>.xxlarge-12{width:calc(100% - 1.4rem)}}.grid-padding-x .grid-padding-x{margin-left:-.3333333333rem;margin-right:-.3333333333rem}@media print,screen and (min-width:40em){.grid-padding-x .grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}@media print,screen and (min-width:64em){.grid-padding-x .grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}@media screen and (min-width:75em){.grid-padding-x .grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}@media screen and (min-width:90em){.grid-padding-x .grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}.grid-container:not(.full)>.grid-padding-x{margin-left:-.3333333333rem;margin-right:-.3333333333rem}@media print,screen and (min-width:40em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}@media print,screen and (min-width:64em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}@media screen and (min-width:75em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}@media screen and (min-width:90em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.7rem;margin-right:-.7rem}}.grid-padding-x>.cell{padding-left:.3333333333rem;padding-right:.3333333333rem}@media print,screen and (min-width:40em){.grid-padding-x>.cell{padding-left:.7rem;padding-right:.7rem}}@media print,screen and (min-width:64em){.grid-padding-x>.cell{padding-left:.7rem;padding-right:.7rem}}@media screen and (min-width:75em){.grid-padding-x>.cell{padding-left:.7rem;padding-right:.7rem}}@media screen and (min-width:90em){.grid-padding-x>.cell{padding-left:.7rem;padding-right:.7rem}}.small-up-1>.cell{width:100%}.small-up-2>.cell{width:50%}.small-up-3>.cell{width:33.3333333333%}.small-up-4>.cell{width:25%}.small-up-5>.cell{width:20%}.small-up-6>.cell{width:16.6666666667%}.small-up-7>.cell{width:14.2857142857%}.small-up-8>.cell{width:12.5%}@media print,screen and (min-width:40em){.medium-up-1>.cell{width:100%}.medium-up-2>.cell{width:50%}.medium-up-3>.cell{width:33.3333333333%}.medium-up-4>.cell{width:25%}.medium-up-5>.cell{width:20%}.medium-up-6>.cell{width:16.6666666667%}.medium-up-7>.cell{width:14.2857142857%}.medium-up-8>.cell{width:12.5%}}@media print,screen and (min-width:64em){.large-up-1>.cell{width:100%}.large-up-2>.cell{width:50%}.large-up-3>.cell{width:33.3333333333%}.large-up-4>.cell{width:25%}.large-up-5>.cell{width:20%}.large-up-6>.cell{width:16.6666666667%}.large-up-7>.cell{width:14.2857142857%}.large-up-8>.cell{width:12.5%}}@media screen and (min-width:75em){.xlarge-up-1>.cell{width:100%}.xlarge-up-2>.cell{width:50%}.xlarge-up-3>.cell{width:33.3333333333%}.xlarge-up-4>.cell{width:25%}.xlarge-up-5>.cell{width:20%}.xlarge-up-6>.cell{width:16.6666666667%}.xlarge-up-7>.cell{width:14.2857142857%}.xlarge-up-8>.cell{width:12.5%}}@media screen and (min-width:90em){.xxlarge-up-1>.cell{width:100%}.xxlarge-up-2>.cell{width:50%}.xxlarge-up-3>.cell{width:33.3333333333%}.xxlarge-up-4>.cell{width:25%}.xxlarge-up-5>.cell{width:20%}.xxlarge-up-6>.cell{width:16.6666666667%}.xxlarge-up-7>.cell{width:14.2857142857%}.xxlarge-up-8>.cell{width:12.5%}}.grid-margin-x.small-up-1>.cell{width:calc(100% - .66667rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - .66667rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - .66667rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - .66667rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - .66667rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - .66667rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - .66667rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - .66667rem)}@media print,screen and (min-width:40em){.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.4rem)}.grid-margin-x.medium-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.medium-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.medium-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.medium-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.medium-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.medium-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.medium-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.medium-up-8>.cell{width:calc(12.5% - 1.4rem)}}@media print,screen and (min-width:64em){.grid-margin-x.medium-up-1>.cell,.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.medium-up-2>.cell,.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.medium-up-3>.cell,.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.medium-up-4>.cell,.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.medium-up-5>.cell,.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.medium-up-6>.cell,.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.medium-up-7>.cell,.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.medium-up-8>.cell,.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.4rem)}.grid-margin-x.large-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.large-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.large-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.large-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.large-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.large-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.large-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.large-up-8>.cell{width:calc(12.5% - 1.4rem)}}@media screen and (min-width:75em){.grid-margin-x.large-up-1>.cell,.grid-margin-x.medium-up-1>.cell,.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.large-up-2>.cell,.grid-margin-x.medium-up-2>.cell,.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.large-up-3>.cell,.grid-margin-x.medium-up-3>.cell,.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.large-up-4>.cell,.grid-margin-x.medium-up-4>.cell,.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.large-up-5>.cell,.grid-margin-x.medium-up-5>.cell,.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.large-up-6>.cell,.grid-margin-x.medium-up-6>.cell,.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.large-up-7>.cell,.grid-margin-x.medium-up-7>.cell,.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.large-up-8>.cell,.grid-margin-x.medium-up-8>.cell,.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.4rem)}.grid-margin-x.xlarge-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.xlarge-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.xlarge-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.xlarge-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.xlarge-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.xlarge-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.xlarge-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.xlarge-up-8>.cell{width:calc(12.5% - 1.4rem)}}@media screen and (min-width:90em){.grid-margin-x.large-up-1>.cell,.grid-margin-x.medium-up-1>.cell,.grid-margin-x.small-up-1>.cell,.grid-margin-x.xlarge-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.large-up-2>.cell,.grid-margin-x.medium-up-2>.cell,.grid-margin-x.small-up-2>.cell,.grid-margin-x.xlarge-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.large-up-3>.cell,.grid-margin-x.medium-up-3>.cell,.grid-margin-x.small-up-3>.cell,.grid-margin-x.xlarge-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.large-up-4>.cell,.grid-margin-x.medium-up-4>.cell,.grid-margin-x.small-up-4>.cell,.grid-margin-x.xlarge-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.large-up-5>.cell,.grid-margin-x.medium-up-5>.cell,.grid-margin-x.small-up-5>.cell,.grid-margin-x.xlarge-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.large-up-6>.cell,.grid-margin-x.medium-up-6>.cell,.grid-margin-x.small-up-6>.cell,.grid-margin-x.xlarge-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.large-up-7>.cell,.grid-margin-x.medium-up-7>.cell,.grid-margin-x.small-up-7>.cell,.grid-margin-x.xlarge-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.large-up-8>.cell,.grid-margin-x.medium-up-8>.cell,.grid-margin-x.small-up-8>.cell,.grid-margin-x.xlarge-up-8>.cell{width:calc(12.5% - 1.4rem)}.grid-margin-x.xxlarge-up-1>.cell{width:calc(100% - 1.4rem)}.grid-margin-x.xxlarge-up-2>.cell{width:calc(50% - 1.4rem)}.grid-margin-x.xxlarge-up-3>.cell{width:calc(33.33333% - 1.4rem)}.grid-margin-x.xxlarge-up-4>.cell{width:calc(25% - 1.4rem)}.grid-margin-x.xxlarge-up-5>.cell{width:calc(20% - 1.4rem)}.grid-margin-x.xxlarge-up-6>.cell{width:calc(16.66667% - 1.4rem)}.grid-margin-x.xxlarge-up-7>.cell{width:calc(14.28571% - 1.4rem)}.grid-margin-x.xxlarge-up-8>.cell{width:calc(12.5% - 1.4rem)}}.small-margin-collapse,.small-margin-collapse>.cell{margin-left:0;margin-right:0}.small-margin-collapse>.small-1{width:8.3333333333%}.small-margin-collapse>.small-2{width:16.6666666667%}.small-margin-collapse>.small-3{width:25%}.small-margin-collapse>.small-4{width:33.3333333333%}.small-margin-collapse>.small-5{width:41.6666666667%}.small-margin-collapse>.small-6{width:50%}.small-margin-collapse>.small-7{width:58.3333333333%}.small-margin-collapse>.small-8{width:66.6666666667%}.small-margin-collapse>.small-9{width:75%}.small-margin-collapse>.small-10{width:83.3333333333%}.small-margin-collapse>.small-11{width:91.6666666667%}.small-margin-collapse>.small-12{width:100%}@media print,screen and (min-width:40em){.small-margin-collapse>.medium-1{width:8.3333333333%}.small-margin-collapse>.medium-2{width:16.6666666667%}.small-margin-collapse>.medium-3{width:25%}.small-margin-collapse>.medium-4{width:33.3333333333%}.small-margin-collapse>.medium-5{width:41.6666666667%}.small-margin-collapse>.medium-6{width:50%}.small-margin-collapse>.medium-7{width:58.3333333333%}.small-margin-collapse>.medium-8{width:66.6666666667%}.small-margin-collapse>.medium-9{width:75%}.small-margin-collapse>.medium-10{width:83.3333333333%}.small-margin-collapse>.medium-11{width:91.6666666667%}.small-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.small-margin-collapse>.large-1{width:8.3333333333%}.small-margin-collapse>.large-2{width:16.6666666667%}.small-margin-collapse>.large-3{width:25%}.small-margin-collapse>.large-4{width:33.3333333333%}.small-margin-collapse>.large-5{width:41.6666666667%}.small-margin-collapse>.large-6{width:50%}.small-margin-collapse>.large-7{width:58.3333333333%}.small-margin-collapse>.large-8{width:66.6666666667%}.small-margin-collapse>.large-9{width:75%}.small-margin-collapse>.large-10{width:83.3333333333%}.small-margin-collapse>.large-11{width:91.6666666667%}.small-margin-collapse>.large-12{width:100%}}@media screen and (min-width:75em){.small-margin-collapse>.xlarge-1{width:8.3333333333%}.small-margin-collapse>.xlarge-2{width:16.6666666667%}.small-margin-collapse>.xlarge-3{width:25%}.small-margin-collapse>.xlarge-4{width:33.3333333333%}.small-margin-collapse>.xlarge-5{width:41.6666666667%}.small-margin-collapse>.xlarge-6{width:50%}.small-margin-collapse>.xlarge-7{width:58.3333333333%}.small-margin-collapse>.xlarge-8{width:66.6666666667%}.small-margin-collapse>.xlarge-9{width:75%}.small-margin-collapse>.xlarge-10{width:83.3333333333%}.small-margin-collapse>.xlarge-11{width:91.6666666667%}.small-margin-collapse>.xlarge-12{width:100%}}@media screen and (min-width:90em){.small-margin-collapse>.xxlarge-1{width:8.3333333333%}.small-margin-collapse>.xxlarge-2{width:16.6666666667%}.small-margin-collapse>.xxlarge-3{width:25%}.small-margin-collapse>.xxlarge-4{width:33.3333333333%}.small-margin-collapse>.xxlarge-5{width:41.6666666667%}.small-margin-collapse>.xxlarge-6{width:50%}.small-margin-collapse>.xxlarge-7{width:58.3333333333%}.small-margin-collapse>.xxlarge-8{width:66.6666666667%}.small-margin-collapse>.xxlarge-9{width:75%}.small-margin-collapse>.xxlarge-10{width:83.3333333333%}.small-margin-collapse>.xxlarge-11{width:91.6666666667%}.small-margin-collapse>.xxlarge-12{width:100%}}.small-padding-collapse{margin-left:0;margin-right:0}.small-padding-collapse>.cell{padding-left:0;padding-right:0}@media print,screen and (min-width:40em){.medium-margin-collapse,.medium-margin-collapse>.cell{margin-left:0;margin-right:0}.medium-margin-collapse>.small-1{width:8.3333333333%}.medium-margin-collapse>.small-2{width:16.6666666667%}.medium-margin-collapse>.small-3{width:25%}.medium-margin-collapse>.small-4{width:33.3333333333%}.medium-margin-collapse>.small-5{width:41.6666666667%}.medium-margin-collapse>.small-6{width:50%}.medium-margin-collapse>.small-7{width:58.3333333333%}.medium-margin-collapse>.small-8{width:66.6666666667%}.medium-margin-collapse>.small-9{width:75%}.medium-margin-collapse>.small-10{width:83.3333333333%}.medium-margin-collapse>.small-11{width:91.6666666667%}.medium-margin-collapse>.small-12{width:100%}.medium-margin-collapse>.medium-1{width:8.3333333333%}.medium-margin-collapse>.medium-2{width:16.6666666667%}.medium-margin-collapse>.medium-3{width:25%}.medium-margin-collapse>.medium-4{width:33.3333333333%}.medium-margin-collapse>.medium-5{width:41.6666666667%}.medium-margin-collapse>.medium-6{width:50%}.medium-margin-collapse>.medium-7{width:58.3333333333%}.medium-margin-collapse>.medium-8{width:66.6666666667%}.medium-margin-collapse>.medium-9{width:75%}.medium-margin-collapse>.medium-10{width:83.3333333333%}.medium-margin-collapse>.medium-11{width:91.6666666667%}.medium-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.medium-margin-collapse>.large-1{width:8.3333333333%}.medium-margin-collapse>.large-2{width:16.6666666667%}.medium-margin-collapse>.large-3{width:25%}.medium-margin-collapse>.large-4{width:33.3333333333%}.medium-margin-collapse>.large-5{width:41.6666666667%}.medium-margin-collapse>.large-6{width:50%}.medium-margin-collapse>.large-7{width:58.3333333333%}.medium-margin-collapse>.large-8{width:66.6666666667%}.medium-margin-collapse>.large-9{width:75%}.medium-margin-collapse>.large-10{width:83.3333333333%}.medium-margin-collapse>.large-11{width:91.6666666667%}.medium-margin-collapse>.large-12{width:100%}}@media screen and (min-width:75em){.medium-margin-collapse>.xlarge-1{width:8.3333333333%}.medium-margin-collapse>.xlarge-2{width:16.6666666667%}.medium-margin-collapse>.xlarge-3{width:25%}.medium-margin-collapse>.xlarge-4{width:33.3333333333%}.medium-margin-collapse>.xlarge-5{width:41.6666666667%}.medium-margin-collapse>.xlarge-6{width:50%}.medium-margin-collapse>.xlarge-7{width:58.3333333333%}.medium-margin-collapse>.xlarge-8{width:66.6666666667%}.medium-margin-collapse>.xlarge-9{width:75%}.medium-margin-collapse>.xlarge-10{width:83.3333333333%}.medium-margin-collapse>.xlarge-11{width:91.6666666667%}.medium-margin-collapse>.xlarge-12{width:100%}}@media screen and (min-width:90em){.medium-margin-collapse>.xxlarge-1{width:8.3333333333%}.medium-margin-collapse>.xxlarge-2{width:16.6666666667%}.medium-margin-collapse>.xxlarge-3{width:25%}.medium-margin-collapse>.xxlarge-4{width:33.3333333333%}.medium-margin-collapse>.xxlarge-5{width:41.6666666667%}.medium-margin-collapse>.xxlarge-6{width:50%}.medium-margin-collapse>.xxlarge-7{width:58.3333333333%}.medium-margin-collapse>.xxlarge-8{width:66.6666666667%}.medium-margin-collapse>.xxlarge-9{width:75%}.medium-margin-collapse>.xxlarge-10{width:83.3333333333%}.medium-margin-collapse>.xxlarge-11{width:91.6666666667%}.medium-margin-collapse>.xxlarge-12{width:100%}}@media print,screen and (min-width:40em){.medium-padding-collapse{margin-left:0;margin-right:0}.medium-padding-collapse>.cell{padding-left:0;padding-right:0}}@media print,screen and (min-width:64em){.large-margin-collapse,.large-margin-collapse>.cell{margin-left:0;margin-right:0}.large-margin-collapse>.small-1{width:8.3333333333%}.large-margin-collapse>.small-2{width:16.6666666667%}.large-margin-collapse>.small-3{width:25%}.large-margin-collapse>.small-4{width:33.3333333333%}.large-margin-collapse>.small-5{width:41.6666666667%}.large-margin-collapse>.small-6{width:50%}.large-margin-collapse>.small-7{width:58.3333333333%}.large-margin-collapse>.small-8{width:66.6666666667%}.large-margin-collapse>.small-9{width:75%}.large-margin-collapse>.small-10{width:83.3333333333%}.large-margin-collapse>.small-11{width:91.6666666667%}.large-margin-collapse>.small-12{width:100%}.large-margin-collapse>.medium-1{width:8.3333333333%}.large-margin-collapse>.medium-2{width:16.6666666667%}.large-margin-collapse>.medium-3{width:25%}.large-margin-collapse>.medium-4{width:33.3333333333%}.large-margin-collapse>.medium-5{width:41.6666666667%}.large-margin-collapse>.medium-6{width:50%}.large-margin-collapse>.medium-7{width:58.3333333333%}.large-margin-collapse>.medium-8{width:66.6666666667%}.large-margin-collapse>.medium-9{width:75%}.large-margin-collapse>.medium-10{width:83.3333333333%}.large-margin-collapse>.medium-11{width:91.6666666667%}.large-margin-collapse>.medium-12{width:100%}.large-margin-collapse>.large-1{width:8.3333333333%}.large-margin-collapse>.large-2{width:16.6666666667%}.large-margin-collapse>.large-3{width:25%}.large-margin-collapse>.large-4{width:33.3333333333%}.large-margin-collapse>.large-5{width:41.6666666667%}.large-margin-collapse>.large-6{width:50%}.large-margin-collapse>.large-7{width:58.3333333333%}.large-margin-collapse>.large-8{width:66.6666666667%}.large-margin-collapse>.large-9{width:75%}.large-margin-collapse>.large-10{width:83.3333333333%}.large-margin-collapse>.large-11{width:91.6666666667%}.large-margin-collapse>.large-12{width:100%}}@media screen and (min-width:75em){.large-margin-collapse>.xlarge-1{width:8.3333333333%}.large-margin-collapse>.xlarge-2{width:16.6666666667%}.large-margin-collapse>.xlarge-3{width:25%}.large-margin-collapse>.xlarge-4{width:33.3333333333%}.large-margin-collapse>.xlarge-5{width:41.6666666667%}.large-margin-collapse>.xlarge-6{width:50%}.large-margin-collapse>.xlarge-7{width:58.3333333333%}.large-margin-collapse>.xlarge-8{width:66.6666666667%}.large-margin-collapse>.xlarge-9{width:75%}.large-margin-collapse>.xlarge-10{width:83.3333333333%}.large-margin-collapse>.xlarge-11{width:91.6666666667%}.large-margin-collapse>.xlarge-12{width:100%}}@media screen and (min-width:90em){.large-margin-collapse>.xxlarge-1{width:8.3333333333%}.large-margin-collapse>.xxlarge-2{width:16.6666666667%}.large-margin-collapse>.xxlarge-3{width:25%}.large-margin-collapse>.xxlarge-4{width:33.3333333333%}.large-margin-collapse>.xxlarge-5{width:41.6666666667%}.large-margin-collapse>.xxlarge-6{width:50%}.large-margin-collapse>.xxlarge-7{width:58.3333333333%}.large-margin-collapse>.xxlarge-8{width:66.6666666667%}.large-margin-collapse>.xxlarge-9{width:75%}.large-margin-collapse>.xxlarge-10{width:83.3333333333%}.large-margin-collapse>.xxlarge-11{width:91.6666666667%}.large-margin-collapse>.xxlarge-12{width:100%}}@media print,screen and (min-width:64em){.large-padding-collapse{margin-left:0;margin-right:0}.large-padding-collapse>.cell{padding-left:0;padding-right:0}}@media screen and (min-width:75em){.xlarge-margin-collapse,.xlarge-margin-collapse>.cell{margin-left:0;margin-right:0}.xlarge-margin-collapse>.small-1{width:8.3333333333%}.xlarge-margin-collapse>.small-2{width:16.6666666667%}.xlarge-margin-collapse>.small-3{width:25%}.xlarge-margin-collapse>.small-4{width:33.3333333333%}.xlarge-margin-collapse>.small-5{width:41.6666666667%}.xlarge-margin-collapse>.small-6{width:50%}.xlarge-margin-collapse>.small-7{width:58.3333333333%}.xlarge-margin-collapse>.small-8{width:66.6666666667%}.xlarge-margin-collapse>.small-9{width:75%}.xlarge-margin-collapse>.small-10{width:83.3333333333%}.xlarge-margin-collapse>.small-11{width:91.6666666667%}.xlarge-margin-collapse>.small-12{width:100%}.xlarge-margin-collapse>.medium-1{width:8.3333333333%}.xlarge-margin-collapse>.medium-2{width:16.6666666667%}.xlarge-margin-collapse>.medium-3{width:25%}.xlarge-margin-collapse>.medium-4{width:33.3333333333%}.xlarge-margin-collapse>.medium-5{width:41.6666666667%}.xlarge-margin-collapse>.medium-6{width:50%}.xlarge-margin-collapse>.medium-7{width:58.3333333333%}.xlarge-margin-collapse>.medium-8{width:66.6666666667%}.xlarge-margin-collapse>.medium-9{width:75%}.xlarge-margin-collapse>.medium-10{width:83.3333333333%}.xlarge-margin-collapse>.medium-11{width:91.6666666667%}.xlarge-margin-collapse>.medium-12{width:100%}.xlarge-margin-collapse>.large-1{width:8.3333333333%}.xlarge-margin-collapse>.large-2{width:16.6666666667%}.xlarge-margin-collapse>.large-3{width:25%}.xlarge-margin-collapse>.large-4{width:33.3333333333%}.xlarge-margin-collapse>.large-5{width:41.6666666667%}.xlarge-margin-collapse>.large-6{width:50%}.xlarge-margin-collapse>.large-7{width:58.3333333333%}.xlarge-margin-collapse>.large-8{width:66.6666666667%}.xlarge-margin-collapse>.large-9{width:75%}.xlarge-margin-collapse>.large-10{width:83.3333333333%}.xlarge-margin-collapse>.large-11{width:91.6666666667%}.xlarge-margin-collapse>.large-12{width:100%}.xlarge-margin-collapse>.xlarge-1{width:8.3333333333%}.xlarge-margin-collapse>.xlarge-2{width:16.6666666667%}.xlarge-margin-collapse>.xlarge-3{width:25%}.xlarge-margin-collapse>.xlarge-4{width:33.3333333333%}.xlarge-margin-collapse>.xlarge-5{width:41.6666666667%}.xlarge-margin-collapse>.xlarge-6{width:50%}.xlarge-margin-collapse>.xlarge-7{width:58.3333333333%}.xlarge-margin-collapse>.xlarge-8{width:66.6666666667%}.xlarge-margin-collapse>.xlarge-9{width:75%}.xlarge-margin-collapse>.xlarge-10{width:83.3333333333%}.xlarge-margin-collapse>.xlarge-11{width:91.6666666667%}.xlarge-margin-collapse>.xlarge-12{width:100%}}@media screen and (min-width:90em){.xlarge-margin-collapse>.xxlarge-1{width:8.3333333333%}.xlarge-margin-collapse>.xxlarge-2{width:16.6666666667%}.xlarge-margin-collapse>.xxlarge-3{width:25%}.xlarge-margin-collapse>.xxlarge-4{width:33.3333333333%}.xlarge-margin-collapse>.xxlarge-5{width:41.6666666667%}.xlarge-margin-collapse>.xxlarge-6{width:50%}.xlarge-margin-collapse>.xxlarge-7{width:58.3333333333%}.xlarge-margin-collapse>.xxlarge-8{width:66.6666666667%}.xlarge-margin-collapse>.xxlarge-9{width:75%}.xlarge-margin-collapse>.xxlarge-10{width:83.3333333333%}.xlarge-margin-collapse>.xxlarge-11{width:91.6666666667%}.xlarge-margin-collapse>.xxlarge-12{width:100%}}@media screen and (min-width:75em){.xlarge-padding-collapse{margin-left:0;margin-right:0}.xlarge-padding-collapse>.cell{padding-left:0;padding-right:0}}@media screen and (min-width:90em){.xxlarge-margin-collapse,.xxlarge-margin-collapse>.cell{margin-left:0;margin-right:0}.xxlarge-margin-collapse>.small-1{width:8.3333333333%}.xxlarge-margin-collapse>.small-2{width:16.6666666667%}.xxlarge-margin-collapse>.small-3{width:25%}.xxlarge-margin-collapse>.small-4{width:33.3333333333%}.xxlarge-margin-collapse>.small-5{width:41.6666666667%}.xxlarge-margin-collapse>.small-6{width:50%}.xxlarge-margin-collapse>.small-7{width:58.3333333333%}.xxlarge-margin-collapse>.small-8{width:66.6666666667%}.xxlarge-margin-collapse>.small-9{width:75%}.xxlarge-margin-collapse>.small-10{width:83.3333333333%}.xxlarge-margin-collapse>.small-11{width:91.6666666667%}.xxlarge-margin-collapse>.small-12{width:100%}.xxlarge-margin-collapse>.medium-1{width:8.3333333333%}.xxlarge-margin-collapse>.medium-2{width:16.6666666667%}.xxlarge-margin-collapse>.medium-3{width:25%}.xxlarge-margin-collapse>.medium-4{width:33.3333333333%}.xxlarge-margin-collapse>.medium-5{width:41.6666666667%}.xxlarge-margin-collapse>.medium-6{width:50%}.xxlarge-margin-collapse>.medium-7{width:58.3333333333%}.xxlarge-margin-collapse>.medium-8{width:66.6666666667%}.xxlarge-margin-collapse>.medium-9{width:75%}.xxlarge-margin-collapse>.medium-10{width:83.3333333333%}.xxlarge-margin-collapse>.medium-11{width:91.6666666667%}.xxlarge-margin-collapse>.medium-12{width:100%}.xxlarge-margin-collapse>.large-1{width:8.3333333333%}.xxlarge-margin-collapse>.large-2{width:16.6666666667%}.xxlarge-margin-collapse>.large-3{width:25%}.xxlarge-margin-collapse>.large-4{width:33.3333333333%}.xxlarge-margin-collapse>.large-5{width:41.6666666667%}.xxlarge-margin-collapse>.large-6{width:50%}.xxlarge-margin-collapse>.large-7{width:58.3333333333%}.xxlarge-margin-collapse>.large-8{width:66.6666666667%}.xxlarge-margin-collapse>.large-9{width:75%}.xxlarge-margin-collapse>.large-10{width:83.3333333333%}.xxlarge-margin-collapse>.large-11{width:91.6666666667%}.xxlarge-margin-collapse>.large-12{width:100%}.xxlarge-margin-collapse>.xlarge-1{width:8.3333333333%}.xxlarge-margin-collapse>.xlarge-2{width:16.6666666667%}.xxlarge-margin-collapse>.xlarge-3{width:25%}.xxlarge-margin-collapse>.xlarge-4{width:33.3333333333%}.xxlarge-margin-collapse>.xlarge-5{width:41.6666666667%}.xxlarge-margin-collapse>.xlarge-6{width:50%}.xxlarge-margin-collapse>.xlarge-7{width:58.3333333333%}.xxlarge-margin-collapse>.xlarge-8{width:66.6666666667%}.xxlarge-margin-collapse>.xlarge-9{width:75%}.xxlarge-margin-collapse>.xlarge-10{width:83.3333333333%}.xxlarge-margin-collapse>.xlarge-11{width:91.6666666667%}.xxlarge-margin-collapse>.xlarge-12{width:100%}.xxlarge-margin-collapse>.xxlarge-1{width:8.3333333333%}.xxlarge-margin-collapse>.xxlarge-2{width:16.6666666667%}.xxlarge-margin-collapse>.xxlarge-3{width:25%}.xxlarge-margin-collapse>.xxlarge-4{width:33.3333333333%}.xxlarge-margin-collapse>.xxlarge-5{width:41.6666666667%}.xxlarge-margin-collapse>.xxlarge-6{width:50%}.xxlarge-margin-collapse>.xxlarge-7{width:58.3333333333%}.xxlarge-margin-collapse>.xxlarge-8{width:66.6666666667%}.xxlarge-margin-collapse>.xxlarge-9{width:75%}.xxlarge-margin-collapse>.xxlarge-10{width:83.3333333333%}.xxlarge-margin-collapse>.xxlarge-11{width:91.6666666667%}.xxlarge-margin-collapse>.xxlarge-12{width:100%}.xxlarge-padding-collapse{margin-left:0;margin-right:0}.xxlarge-padding-collapse>.cell{padding-left:0;padding-right:0}}.small-offset-0{margin-left:0}.grid-margin-x>.small-offset-0{margin-left:.33333rem}.small-offset-1{margin-left:8.3333333333%}.grid-margin-x>.small-offset-1{margin-left:calc(8.33333% + .33333rem)}.small-offset-2{margin-left:16.6666666667%}.grid-margin-x>.small-offset-2{margin-left:calc(16.66667% + .33333rem)}.small-offset-3{margin-left:25%}.grid-margin-x>.small-offset-3{margin-left:calc(25% + .33333rem)}.small-offset-4{margin-left:33.3333333333%}.grid-margin-x>.small-offset-4{margin-left:calc(33.33333% + .33333rem)}.small-offset-5{margin-left:41.6666666667%}.grid-margin-x>.small-offset-5{margin-left:calc(41.66667% + .33333rem)}.small-offset-6{margin-left:50%}.grid-margin-x>.small-offset-6{margin-left:calc(50% + .33333rem)}.small-offset-7{margin-left:58.3333333333%}.grid-margin-x>.small-offset-7{margin-left:calc(58.33333% + .33333rem)}.small-offset-8{margin-left:66.6666666667%}.grid-margin-x>.small-offset-8{margin-left:calc(66.66667% + .33333rem)}.small-offset-9{margin-left:75%}.grid-margin-x>.small-offset-9{margin-left:calc(75% + .33333rem)}.small-offset-10{margin-left:83.3333333333%}.grid-margin-x>.small-offset-10{margin-left:calc(83.33333% + .33333rem)}.small-offset-11{margin-left:91.6666666667%}.grid-margin-x>.small-offset-11{margin-left:calc(91.66667% + .33333rem)}@media print,screen and (min-width:40em){.medium-offset-0{margin-left:0}.grid-margin-x>.medium-offset-0{margin-left:.7rem}.medium-offset-1{margin-left:8.3333333333%}.grid-margin-x>.medium-offset-1{margin-left:calc(8.33333% + .7rem)}.medium-offset-2{margin-left:16.6666666667%}.grid-margin-x>.medium-offset-2{margin-left:calc(16.66667% + .7rem)}.medium-offset-3{margin-left:25%}.grid-margin-x>.medium-offset-3{margin-left:calc(25% + .7rem)}.medium-offset-4{margin-left:33.3333333333%}.grid-margin-x>.medium-offset-4{margin-left:calc(33.33333% + .7rem)}.medium-offset-5{margin-left:41.6666666667%}.grid-margin-x>.medium-offset-5{margin-left:calc(41.66667% + .7rem)}.medium-offset-6{margin-left:50%}.grid-margin-x>.medium-offset-6{margin-left:calc(50% + .7rem)}.medium-offset-7{margin-left:58.3333333333%}.grid-margin-x>.medium-offset-7{margin-left:calc(58.33333% + .7rem)}.medium-offset-8{margin-left:66.6666666667%}.grid-margin-x>.medium-offset-8{margin-left:calc(66.66667% + .7rem)}.medium-offset-9{margin-left:75%}.grid-margin-x>.medium-offset-9{margin-left:calc(75% + .7rem)}.medium-offset-10{margin-left:83.3333333333%}.grid-margin-x>.medium-offset-10{margin-left:calc(83.33333% + .7rem)}.medium-offset-11{margin-left:91.6666666667%}.grid-margin-x>.medium-offset-11{margin-left:calc(91.66667% + .7rem)}}@media print,screen and (min-width:64em){.large-offset-0{margin-left:0}.grid-margin-x>.large-offset-0{margin-left:.7rem}.large-offset-1{margin-left:8.3333333333%}.grid-margin-x>.large-offset-1{margin-left:calc(8.33333% + .7rem)}.large-offset-2{margin-left:16.6666666667%}.grid-margin-x>.large-offset-2{margin-left:calc(16.66667% + .7rem)}.large-offset-3{margin-left:25%}.grid-margin-x>.large-offset-3{margin-left:calc(25% + .7rem)}.large-offset-4{margin-left:33.3333333333%}.grid-margin-x>.large-offset-4{margin-left:calc(33.33333% + .7rem)}.large-offset-5{margin-left:41.6666666667%}.grid-margin-x>.large-offset-5{margin-left:calc(41.66667% + .7rem)}.large-offset-6{margin-left:50%}.grid-margin-x>.large-offset-6{margin-left:calc(50% + .7rem)}.large-offset-7{margin-left:58.3333333333%}.grid-margin-x>.large-offset-7{margin-left:calc(58.33333% + .7rem)}.large-offset-8{margin-left:66.6666666667%}.grid-margin-x>.large-offset-8{margin-left:calc(66.66667% + .7rem)}.large-offset-9{margin-left:75%}.grid-margin-x>.large-offset-9{margin-left:calc(75% + .7rem)}.large-offset-10{margin-left:83.3333333333%}.grid-margin-x>.large-offset-10{margin-left:calc(83.33333% + .7rem)}.large-offset-11{margin-left:91.6666666667%}.grid-margin-x>.large-offset-11{margin-left:calc(91.66667% + .7rem)}}@media screen and (min-width:75em){.xlarge-offset-0{margin-left:0}.grid-margin-x>.xlarge-offset-0{margin-left:.7rem}.xlarge-offset-1{margin-left:8.3333333333%}.grid-margin-x>.xlarge-offset-1{margin-left:calc(8.33333% + .7rem)}.xlarge-offset-2{margin-left:16.6666666667%}.grid-margin-x>.xlarge-offset-2{margin-left:calc(16.66667% + .7rem)}.xlarge-offset-3{margin-left:25%}.grid-margin-x>.xlarge-offset-3{margin-left:calc(25% + .7rem)}.xlarge-offset-4{margin-left:33.3333333333%}.grid-margin-x>.xlarge-offset-4{margin-left:calc(33.33333% + .7rem)}.xlarge-offset-5{margin-left:41.6666666667%}.grid-margin-x>.xlarge-offset-5{margin-left:calc(41.66667% + .7rem)}.xlarge-offset-6{margin-left:50%}.grid-margin-x>.xlarge-offset-6{margin-left:calc(50% + .7rem)}.xlarge-offset-7{margin-left:58.3333333333%}.grid-margin-x>.xlarge-offset-7{margin-left:calc(58.33333% + .7rem)}.xlarge-offset-8{margin-left:66.6666666667%}.grid-margin-x>.xlarge-offset-8{margin-left:calc(66.66667% + .7rem)}.xlarge-offset-9{margin-left:75%}.grid-margin-x>.xlarge-offset-9{margin-left:calc(75% + .7rem)}.xlarge-offset-10{margin-left:83.3333333333%}.grid-margin-x>.xlarge-offset-10{margin-left:calc(83.33333% + .7rem)}.xlarge-offset-11{margin-left:91.6666666667%}.grid-margin-x>.xlarge-offset-11{margin-left:calc(91.66667% + .7rem)}}@media screen and (min-width:90em){.xxlarge-offset-0{margin-left:0}.grid-margin-x>.xxlarge-offset-0{margin-left:.7rem}.xxlarge-offset-1{margin-left:8.3333333333%}.grid-margin-x>.xxlarge-offset-1{margin-left:calc(8.33333% + .7rem)}.xxlarge-offset-2{margin-left:16.6666666667%}.grid-margin-x>.xxlarge-offset-2{margin-left:calc(16.66667% + .7rem)}.xxlarge-offset-3{margin-left:25%}.grid-margin-x>.xxlarge-offset-3{margin-left:calc(25% + .7rem)}.xxlarge-offset-4{margin-left:33.3333333333%}.grid-margin-x>.xxlarge-offset-4{margin-left:calc(33.33333% + .7rem)}.xxlarge-offset-5{margin-left:41.6666666667%}.grid-margin-x>.xxlarge-offset-5{margin-left:calc(41.66667% + .7rem)}.xxlarge-offset-6{margin-left:50%}.grid-margin-x>.xxlarge-offset-6{margin-left:calc(50% + .7rem)}.xxlarge-offset-7{margin-left:58.3333333333%}.grid-margin-x>.xxlarge-offset-7{margin-left:calc(58.33333% + .7rem)}.xxlarge-offset-8{margin-left:66.6666666667%}.grid-margin-x>.xxlarge-offset-8{margin-left:calc(66.66667% + .7rem)}.xxlarge-offset-9{margin-left:75%}.grid-margin-x>.xxlarge-offset-9{margin-left:calc(75% + .7rem)}.xxlarge-offset-10{margin-left:83.3333333333%}.grid-margin-x>.xxlarge-offset-10{margin-left:calc(83.33333% + .7rem)}.xxlarge-offset-11{margin-left:91.6666666667%}.grid-margin-x>.xxlarge-offset-11{margin-left:calc(91.66667% + .7rem)}}.grid-y{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.grid-y>.cell{height:auto;max-height:none}.grid-y>.auto,.grid-y>.shrink{height:auto}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9,.grid-y>.small-full,.grid-y>.small-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-full,.grid-y>.medium-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-full,.grid-y>.large-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}@media screen and (min-width:75em){.grid-y>.xlarge-1,.grid-y>.xlarge-10,.grid-y>.xlarge-11,.grid-y>.xlarge-12,.grid-y>.xlarge-2,.grid-y>.xlarge-3,.grid-y>.xlarge-4,.grid-y>.xlarge-5,.grid-y>.xlarge-6,.grid-y>.xlarge-7,.grid-y>.xlarge-8,.grid-y>.xlarge-9,.grid-y>.xlarge-full,.grid-y>.xlarge-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}@media screen and (min-width:90em){.grid-y>.xxlarge-1,.grid-y>.xxlarge-10,.grid-y>.xxlarge-11,.grid-y>.xxlarge-12,.grid-y>.xxlarge-2,.grid-y>.xxlarge-3,.grid-y>.xxlarge-4,.grid-y>.xxlarge-5,.grid-y>.xxlarge-6,.grid-y>.xxlarge-7,.grid-y>.xxlarge-8,.grid-y>.xxlarge-9,.grid-y>.xxlarge-full,.grid-y>.xxlarge-shrink{-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.small-1{height:8.3333333333%}.grid-y>.small-2{height:16.6666666667%}.grid-y>.small-3{height:25%}.grid-y>.small-4{height:33.3333333333%}.grid-y>.small-5{height:41.6666666667%}.grid-y>.small-6{height:50%}.grid-y>.small-7{height:58.3333333333%}.grid-y>.small-8{height:66.6666666667%}.grid-y>.small-9{height:75%}.grid-y>.small-10{height:83.3333333333%}.grid-y>.small-11{height:91.6666666667%}.grid-y>.small-12{height:100%}@media print,screen and (min-width:40em){.grid-y>.medium-auto{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.medium-shrink{height:auto}.grid-y>.medium-1{height:8.3333333333%}.grid-y>.medium-2{height:16.6666666667%}.grid-y>.medium-3{height:25%}.grid-y>.medium-4{height:33.3333333333%}.grid-y>.medium-5{height:41.6666666667%}.grid-y>.medium-6{height:50%}.grid-y>.medium-7{height:58.3333333333%}.grid-y>.medium-8{height:66.6666666667%}.grid-y>.medium-9{height:75%}.grid-y>.medium-10{height:83.3333333333%}.grid-y>.medium-11{height:91.6666666667%}.grid-y>.medium-12{height:100%}}@media print,screen and (min-width:64em){.grid-y>.large-auto{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.large-shrink{height:auto}.grid-y>.large-1{height:8.3333333333%}.grid-y>.large-2{height:16.6666666667%}.grid-y>.large-3{height:25%}.grid-y>.large-4{height:33.3333333333%}.grid-y>.large-5{height:41.6666666667%}.grid-y>.large-6{height:50%}.grid-y>.large-7{height:58.3333333333%}.grid-y>.large-8{height:66.6666666667%}.grid-y>.large-9{height:75%}.grid-y>.large-10{height:83.3333333333%}.grid-y>.large-11{height:91.6666666667%}.grid-y>.large-12{height:100%}}@media screen and (min-width:75em){.grid-y>.xlarge-auto{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.xlarge-1,.grid-y>.xlarge-10,.grid-y>.xlarge-11,.grid-y>.xlarge-12,.grid-y>.xlarge-2,.grid-y>.xlarge-3,.grid-y>.xlarge-4,.grid-y>.xlarge-5,.grid-y>.xlarge-6,.grid-y>.xlarge-7,.grid-y>.xlarge-8,.grid-y>.xlarge-9,.grid-y>.xlarge-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.xlarge-shrink{height:auto}.grid-y>.xlarge-1{height:8.3333333333%}.grid-y>.xlarge-2{height:16.6666666667%}.grid-y>.xlarge-3{height:25%}.grid-y>.xlarge-4{height:33.3333333333%}.grid-y>.xlarge-5{height:41.6666666667%}.grid-y>.xlarge-6{height:50%}.grid-y>.xlarge-7{height:58.3333333333%}.grid-y>.xlarge-8{height:66.6666666667%}.grid-y>.xlarge-9{height:75%}.grid-y>.xlarge-10{height:83.3333333333%}.grid-y>.xlarge-11{height:91.6666666667%}.grid-y>.xlarge-12{height:100%}}@media screen and (min-width:90em){.grid-y>.xxlarge-auto{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.xxlarge-1,.grid-y>.xxlarge-10,.grid-y>.xxlarge-11,.grid-y>.xxlarge-12,.grid-y>.xxlarge-2,.grid-y>.xxlarge-3,.grid-y>.xxlarge-4,.grid-y>.xxlarge-5,.grid-y>.xxlarge-6,.grid-y>.xxlarge-7,.grid-y>.xxlarge-8,.grid-y>.xxlarge-9,.grid-y>.xxlarge-shrink{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.xxlarge-shrink{height:auto}.grid-y>.xxlarge-1{height:8.3333333333%}.grid-y>.xxlarge-2{height:16.6666666667%}.grid-y>.xxlarge-3{height:25%}.grid-y>.xxlarge-4{height:33.3333333333%}.grid-y>.xxlarge-5{height:41.6666666667%}.grid-y>.xxlarge-6{height:50%}.grid-y>.xxlarge-7{height:58.3333333333%}.grid-y>.xxlarge-8{height:66.6666666667%}.grid-y>.xxlarge-9{height:75%}.grid-y>.xxlarge-10{height:83.3333333333%}.grid-y>.xxlarge-11{height:91.6666666667%}.grid-y>.xxlarge-12{height:100%}}.grid-padding-y .grid-padding-y{margin-bottom:-.3333333333rem;margin-top:-.3333333333rem}@media print,screen and (min-width:40em){.grid-padding-y .grid-padding-y{margin-bottom:-.7rem;margin-top:-.7rem}}@media print,screen and (min-width:64em){.grid-padding-y .grid-padding-y{margin-bottom:-.7rem;margin-top:-.7rem}}@media screen and (min-width:75em){.grid-padding-y .grid-padding-y{margin-bottom:-.7rem;margin-top:-.7rem}}@media screen and (min-width:90em){.grid-padding-y .grid-padding-y{margin-bottom:-.7rem;margin-top:-.7rem}}.grid-padding-y>.cell{padding-bottom:.3333333333rem;padding-top:.3333333333rem}@media print,screen and (min-width:40em){.grid-padding-y>.cell{padding-bottom:.7rem;padding-top:.7rem}}@media print,screen and (min-width:64em){.grid-padding-y>.cell{padding-bottom:.7rem;padding-top:.7rem}}@media screen and (min-width:75em){.grid-padding-y>.cell{padding-bottom:.7rem;padding-top:.7rem}}@media screen and (min-width:90em){.grid-padding-y>.cell{padding-bottom:.7rem;padding-top:.7rem}}.grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .grid-frame{width:100%}.cell-block{max-width:100%;overflow-x:auto}.cell-block,.cell-block-y{-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.cell-block-y{max-height:100%;min-height:100%;overflow-y:auto}.cell-block-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:100%}.cell-block-container>.grid-x{-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}@media print,screen and (min-width:40em){.medium-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .medium-grid-frame{width:100%}.medium-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.medium-cell-block-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:100%}.medium-cell-block-container>.grid-x{-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.medium-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media print,screen and (min-width:64em){.large-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .large-grid-frame{width:100%}.large-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.large-cell-block-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:100%}.large-cell-block-container>.grid-x{-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.large-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media screen and (min-width:75em){.xlarge-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .xlarge-grid-frame{width:100%}.xlarge-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.xlarge-cell-block-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:100%}.xlarge-cell-block-container>.grid-x{-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.xlarge-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media screen and (min-width:90em){.xxlarge-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .xxlarge-grid-frame{width:100%}.xxlarge-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.xxlarge-cell-block-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:100%}.xxlarge-cell-block-container>.grid-x{-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.xxlarge-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}.grid-y.grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}@media print,screen and (min-width:40em){.grid-y.medium-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}@media print,screen and (min-width:64em){.grid-y.large-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}@media screen and (min-width:75em){.grid-y.xlarge-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}@media screen and (min-width:90em){.grid-y.xxlarge-grid-frame{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}.cell .grid-y.grid-frame{height:100%}@media print,screen and (min-width:40em){.cell .grid-y.medium-grid-frame{height:100%}}@media print,screen and (min-width:64em){.cell .grid-y.large-grid-frame{height:100%}}@media screen and (min-width:75em){.cell .grid-y.xlarge-grid-frame{height:100%}}@media screen and (min-width:90em){.cell .grid-y.xxlarge-grid-frame{height:100%}}.grid-margin-y{margin-bottom:-.3333333333rem;margin-top:-.3333333333rem}@media print,screen and (min-width:40em){.grid-margin-y{margin-bottom:-.7rem;margin-top:-.7rem}}@media print,screen and (min-width:64em){.grid-margin-y{margin-bottom:-.7rem;margin-top:-.7rem}}@media screen and (min-width:75em){.grid-margin-y{margin-bottom:-.7rem;margin-top:-.7rem}}@media screen and (min-width:90em){.grid-margin-y{margin-bottom:-.7rem;margin-top:-.7rem}}.grid-margin-y>.cell{height:calc(100% - .66667rem);margin-bottom:.3333333333rem;margin-top:.3333333333rem}@media print,screen and (min-width:40em){.grid-margin-y>.cell{height:calc(100% - 1.4rem);margin-bottom:.7rem;margin-top:.7rem}}@media print,screen and (min-width:64em){.grid-margin-y>.cell{height:calc(100% - 1.4rem);margin-bottom:.7rem;margin-top:.7rem}}@media screen and (min-width:75em){.grid-margin-y>.cell{height:calc(100% - 1.4rem);margin-bottom:.7rem;margin-top:.7rem}}@media screen and (min-width:90em){.grid-margin-y>.cell{height:calc(100% - 1.4rem);margin-bottom:.7rem;margin-top:.7rem}}.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - .66667rem)}.grid-margin-y>.small-2{height:calc(16.66667% - .66667rem)}.grid-margin-y>.small-3{height:calc(25% - .66667rem)}.grid-margin-y>.small-4{height:calc(33.33333% - .66667rem)}.grid-margin-y>.small-5{height:calc(41.66667% - .66667rem)}.grid-margin-y>.small-6{height:calc(50% - .66667rem)}.grid-margin-y>.small-7{height:calc(58.33333% - .66667rem)}.grid-margin-y>.small-8{height:calc(66.66667% - .66667rem)}.grid-margin-y>.small-9{height:calc(75% - .66667rem)}.grid-margin-y>.small-10{height:calc(83.33333% - .66667rem)}.grid-margin-y>.small-11{height:calc(91.66667% - .66667rem)}.grid-margin-y>.small-12{height:calc(100% - .66667rem)}@media print,screen and (min-width:40em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.small-3{height:calc(25% - 1.4rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.small-6{height:calc(50% - 1.4rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.small-9{height:calc(75% - 1.4rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.small-12{height:calc(100% - 1.4rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.4rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.4rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.4rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.4rem)}}@media print,screen and (min-width:64em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.small-3{height:calc(25% - 1.4rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.small-6{height:calc(50% - 1.4rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.small-9{height:calc(75% - 1.4rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.small-12{height:calc(100% - 1.4rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.4rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.4rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.4rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.4rem)}.grid-margin-y>.large-auto,.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.large-3{height:calc(25% - 1.4rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.large-6{height:calc(50% - 1.4rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.large-9{height:calc(75% - 1.4rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.large-12{height:calc(100% - 1.4rem)}}@media screen and (min-width:75em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.small-3{height:calc(25% - 1.4rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.small-6{height:calc(50% - 1.4rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.small-9{height:calc(75% - 1.4rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.small-12{height:calc(100% - 1.4rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.4rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.4rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.4rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.4rem)}.grid-margin-y>.large-auto,.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.large-3{height:calc(25% - 1.4rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.large-6{height:calc(50% - 1.4rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.large-9{height:calc(75% - 1.4rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.large-12{height:calc(100% - 1.4rem)}.grid-margin-y>.xlarge-auto,.grid-margin-y>.xlarge-shrink{height:auto}.grid-margin-y>.xlarge-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.xlarge-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.xlarge-3{height:calc(25% - 1.4rem)}.grid-margin-y>.xlarge-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.xlarge-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.xlarge-6{height:calc(50% - 1.4rem)}.grid-margin-y>.xlarge-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.xlarge-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.xlarge-9{height:calc(75% - 1.4rem)}.grid-margin-y>.xlarge-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.xlarge-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.xlarge-12{height:calc(100% - 1.4rem)}}@media screen and (min-width:90em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.small-3{height:calc(25% - 1.4rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.small-6{height:calc(50% - 1.4rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.small-9{height:calc(75% - 1.4rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.small-12{height:calc(100% - 1.4rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.4rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.4rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.4rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.4rem)}.grid-margin-y>.large-auto,.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.large-3{height:calc(25% - 1.4rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.large-6{height:calc(50% - 1.4rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.large-9{height:calc(75% - 1.4rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.large-12{height:calc(100% - 1.4rem)}.grid-margin-y>.xlarge-auto,.grid-margin-y>.xlarge-shrink{height:auto}.grid-margin-y>.xlarge-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.xlarge-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.xlarge-3{height:calc(25% - 1.4rem)}.grid-margin-y>.xlarge-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.xlarge-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.xlarge-6{height:calc(50% - 1.4rem)}.grid-margin-y>.xlarge-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.xlarge-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.xlarge-9{height:calc(75% - 1.4rem)}.grid-margin-y>.xlarge-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.xlarge-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.xlarge-12{height:calc(100% - 1.4rem)}.grid-margin-y>.xxlarge-auto,.grid-margin-y>.xxlarge-shrink{height:auto}.grid-margin-y>.xxlarge-1{height:calc(8.33333% - 1.4rem)}.grid-margin-y>.xxlarge-2{height:calc(16.66667% - 1.4rem)}.grid-margin-y>.xxlarge-3{height:calc(25% - 1.4rem)}.grid-margin-y>.xxlarge-4{height:calc(33.33333% - 1.4rem)}.grid-margin-y>.xxlarge-5{height:calc(41.66667% - 1.4rem)}.grid-margin-y>.xxlarge-6{height:calc(50% - 1.4rem)}.grid-margin-y>.xxlarge-7{height:calc(58.33333% - 1.4rem)}.grid-margin-y>.xxlarge-8{height:calc(66.66667% - 1.4rem)}.grid-margin-y>.xxlarge-9{height:calc(75% - 1.4rem)}.grid-margin-y>.xxlarge-10{height:calc(83.33333% - 1.4rem)}.grid-margin-y>.xxlarge-11{height:calc(91.66667% - 1.4rem)}.grid-margin-y>.xxlarge-12{height:calc(100% - 1.4rem)}}.grid-frame.grid-margin-y{height:calc(100vh + .66667rem)}@media print,screen and (min-width:40em){.grid-frame.grid-margin-y{height:calc(100vh + 1.4rem)}}@media print,screen and (min-width:64em){.grid-frame.grid-margin-y{height:calc(100vh + 1.4rem)}}@media screen and (min-width:75em){.grid-frame.grid-margin-y{height:calc(100vh + 1.4rem)}}@media screen and (min-width:90em){.grid-frame.grid-margin-y{height:calc(100vh + 1.4rem)}}@media print,screen and (min-width:40em){.grid-margin-y.medium-grid-frame{height:calc(100vh + 1.4rem)}}@media print,screen and (min-width:64em){.grid-margin-y.large-grid-frame{height:calc(100vh + 1.4rem)}}@media screen and (min-width:75em){.grid-margin-y.xlarge-grid-frame{height:calc(100vh + 1.4rem)}}@media screen and (min-width:90em){.grid-margin-y.xxlarge-grid-frame{height:calc(100vh + 1.4rem)}}.button{-webkit-appearance:none;border:1px solid transparent;border-radius:5px;cursor:pointer;display:inline-block;font-family:inherit;font-size:.9rem;line-height:1;margin:0 0 1rem;padding:.85em 1em;text-align:center;-webkit-transition:background-color .25s ease-out,color .25s ease-out;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle}[data-whatinput=mouse] .button{outline:0}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;margin-left:0;margin-right:0;width:100%}.button,.button.disabled,.button.disabled:focus,.button.disabled:hover,.button[disabled],.button[disabled]:focus,.button[disabled]:hover{background-color:#3f729b;color:#fefefe}.button:focus,.button:hover{background-color:#366184;color:#fefefe}.button.primary,.button.primary.disabled,.button.primary.disabled:focus,.button.primary.disabled:hover,.button.primary[disabled],.button.primary[disabled]:focus,.button.primary[disabled]:hover{background-color:#3f729b;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#325b7c;color:#fefefe}.button.secondary,.button.secondary.disabled,.button.secondary.disabled:focus,.button.secondary.disabled:hover,.button.secondary[disabled],.button.secondary[disabled]:focus,.button.secondary[disabled]:hover{background-color:#8bc34a;color:#0a0a0a}.button.secondary:focus,.button.secondary:hover{background-color:#70a236;color:#0a0a0a}.button.success,.button.success.disabled,.button.success.disabled:focus,.button.success.disabled:hover,.button.success[disabled],.button.success[disabled]:focus,.button.success[disabled]:hover{background-color:#4caf50;color:#0a0a0a}.button.success:focus,.button.success:hover{background-color:#3d8c40;color:#0a0a0a}.button.warning,.button.warning.disabled,.button.warning.disabled:focus,.button.warning.disabled:hover,.button.warning[disabled],.button.warning[disabled]:focus,.button.warning[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#0a0a0a}.button.alert,.button.alert.disabled,.button.alert.disabled:focus,.button.alert.disabled:hover,.button.alert[disabled],.button.alert[disabled]:focus,.button.alert[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#a53b2a;color:#fefefe}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow:focus,.button.hollow:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{background-color:transparent}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{border:1px solid #3f729b;color:#3f729b}.button.hollow:focus,.button.hollow:hover{border-color:#20394e;color:#20394e}.button.hollow.primary,.button.hollow.primary.disabled,.button.hollow.primary.disabled:focus,.button.hollow.primary.disabled:hover,.button.hollow.primary[disabled],.button.hollow.primary[disabled]:focus,.button.hollow.primary[disabled]:hover{border:1px solid #3f729b;color:#3f729b}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#20394e;color:#20394e}.button.hollow.secondary,.button.hollow.secondary.disabled,.button.hollow.secondary.disabled:focus,.button.hollow.secondary.disabled:hover,.button.hollow.secondary[disabled],.button.hollow.secondary[disabled]:focus,.button.hollow.secondary[disabled]:hover{border:1px solid #8bc34a;color:#8bc34a}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#466521;color:#466521}.button.hollow.success,.button.hollow.success.disabled,.button.hollow.success.disabled:focus,.button.hollow.success.disabled:hover,.button.hollow.success[disabled],.button.hollow.success[disabled]:focus,.button.hollow.success[disabled]:hover{border:1px solid #4caf50;color:#4caf50}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#265828;color:#265828}.button.hollow.warning,.button.hollow.warning.disabled,.button.hollow.warning.disabled:focus,.button.hollow.warning.disabled:hover,.button.hollow.warning[disabled],.button.hollow.warning[disabled]:focus,.button.hollow.warning[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert,.button.hollow.alert.disabled,.button.hollow.alert.disabled:focus,.button.hollow.alert.disabled:hover,.button.hollow.alert[disabled],.button.hollow.alert[disabled]:focus,.button.hollow.alert[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#67251a;color:#67251a}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear:focus,.button.clear:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{background-color:transparent;border-color:transparent}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{color:#3f729b}.button.clear:focus,.button.clear:hover{color:#20394e}.button.clear.primary,.button.clear.primary.disabled,.button.clear.primary.disabled:focus,.button.clear.primary.disabled:hover,.button.clear.primary[disabled],.button.clear.primary[disabled]:focus,.button.clear.primary[disabled]:hover{color:#3f729b}.button.clear.primary:focus,.button.clear.primary:hover{color:#20394e}.button.clear.secondary,.button.clear.secondary.disabled,.button.clear.secondary.disabled:focus,.button.clear.secondary.disabled:hover,.button.clear.secondary[disabled],.button.clear.secondary[disabled]:focus,.button.clear.secondary[disabled]:hover{color:#8bc34a}.button.clear.secondary:focus,.button.clear.secondary:hover{color:#466521}.button.clear.success,.button.clear.success.disabled,.button.clear.success.disabled:focus,.button.clear.success.disabled:hover,.button.clear.success[disabled],.button.clear.success[disabled]:focus,.button.clear.success[disabled]:hover{color:#4caf50}.button.clear.success:focus,.button.clear.success:hover{color:#265828}.button.clear.warning,.button.clear.warning.disabled,.button.clear.warning.disabled:focus,.button.clear.warning.disabled:hover,.button.clear.warning[disabled],.button.clear.warning[disabled]:focus,.button.clear.warning[disabled]:hover{color:#ffae00}.button.clear.warning:focus,.button.clear.warning:hover{color:#805700}.button.clear.alert,.button.clear.alert.disabled,.button.clear.alert.disabled:focus,.button.clear.alert.disabled:hover,.button.clear.alert[disabled],.button.clear.alert[disabled]:focus,.button.clear.alert[disabled]:hover{color:#cc4b37}.button.clear.alert:focus,.button.clear.alert:hover{color:#67251a}.button.disabled,.button[disabled]{cursor:not-allowed;opacity:.25}.button.dropdown:after{border-color:#fefefe transparent transparent;border-style:solid;border-width:.4em .4em 0;content:"";display:block;display:inline-block;float:right;height:0;margin-left:1em;position:relative;top:.4em;width:0}.button.dropdown.clear.primary:after,.button.dropdown.clear:after,.button.dropdown.hollow.primary:after,.button.dropdown.hollow:after{border-top-color:#3f729b}.button.dropdown.clear.secondary:after,.button.dropdown.hollow.secondary:after{border-top-color:#8bc34a}.button.dropdown.clear.success:after,.button.dropdown.hollow.success:after{border-top-color:#4caf50}.button.dropdown.clear.warning:after,.button.dropdown.hollow.warning:after{border-top-color:#ffae00}.button.dropdown.clear.alert:after,.button.dropdown.hollow.alert:after{border-top-color:#cc4b37}.button.arrow-only:after{float:none;margin-left:0;top:-.1em}a.button:focus,a.button:hover{text-decoration:none}.button-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:1rem;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.button-group:after,.button-group:before{content:" ";display:table;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.button-group:after{clear:both}.button-group:after,.button-group:before{display:none}.button-group .button{font-size:.9rem;margin:0 1px 1px 0;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded .button{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}.button-group.primary .button,.button-group.primary .button.disabled,.button-group.primary .button.disabled:focus,.button-group.primary .button.disabled:hover,.button-group.primary .button[disabled],.button-group.primary .button[disabled]:focus,.button-group.primary .button[disabled]:hover{background-color:#3f729b;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#325b7c;color:#fefefe}.button-group.secondary .button,.button-group.secondary .button.disabled,.button-group.secondary .button.disabled:focus,.button-group.secondary .button.disabled:hover,.button-group.secondary .button[disabled],.button-group.secondary .button[disabled]:focus,.button-group.secondary .button[disabled]:hover{background-color:#8bc34a;color:#0a0a0a}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#70a236;color:#0a0a0a}.button-group.success .button,.button-group.success .button.disabled,.button-group.success .button.disabled:focus,.button-group.success .button.disabled:hover,.button-group.success .button[disabled],.button-group.success .button[disabled]:focus,.button-group.success .button[disabled]:hover{background-color:#4caf50;color:#0a0a0a}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#3d8c40;color:#0a0a0a}.button-group.warning .button,.button-group.warning .button.disabled,.button-group.warning .button.disabled:focus,.button-group.warning .button.disabled:hover,.button-group.warning .button[disabled],.button-group.warning .button[disabled]:focus,.button-group.warning .button[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#0a0a0a}.button-group.alert .button,.button-group.alert .button.disabled,.button-group.alert .button.disabled:focus,.button-group.alert .button.disabled:hover,.button-group.alert .button[disabled],.button-group.alert .button[disabled]:focus,.button-group.alert .button[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#a53b2a;color:#fefefe}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button:focus,.button-group.hollow .button:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{background-color:transparent}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{border:1px solid #3f729b;color:#3f729b}.button-group.hollow .button:focus,.button-group.hollow .button:hover{border-color:#20394e;color:#20394e}.button-group.hollow .button.primary,.button-group.hollow .button.primary.disabled,.button-group.hollow .button.primary.disabled:focus,.button-group.hollow .button.primary.disabled:hover,.button-group.hollow .button.primary[disabled],.button-group.hollow .button.primary[disabled]:focus,.button-group.hollow .button.primary[disabled]:hover,.button-group.hollow.primary .button,.button-group.hollow.primary .button.disabled,.button-group.hollow.primary .button.disabled:focus,.button-group.hollow.primary .button.disabled:hover,.button-group.hollow.primary .button[disabled],.button-group.hollow.primary .button[disabled]:focus,.button-group.hollow.primary .button[disabled]:hover{border:1px solid #3f729b;color:#3f729b}.button-group.hollow .button.primary:focus,.button-group.hollow .button.primary:hover,.button-group.hollow.primary .button:focus,.button-group.hollow.primary .button:hover{border-color:#20394e;color:#20394e}.button-group.hollow .button.secondary,.button-group.hollow .button.secondary.disabled,.button-group.hollow .button.secondary.disabled:focus,.button-group.hollow .button.secondary.disabled:hover,.button-group.hollow .button.secondary[disabled],.button-group.hollow .button.secondary[disabled]:focus,.button-group.hollow .button.secondary[disabled]:hover,.button-group.hollow.secondary .button,.button-group.hollow.secondary .button.disabled,.button-group.hollow.secondary .button.disabled:focus,.button-group.hollow.secondary .button.disabled:hover,.button-group.hollow.secondary .button[disabled],.button-group.hollow.secondary .button[disabled]:focus,.button-group.hollow.secondary .button[disabled]:hover{border:1px solid #8bc34a;color:#8bc34a}.button-group.hollow .button.secondary:focus,.button-group.hollow .button.secondary:hover,.button-group.hollow.secondary .button:focus,.button-group.hollow.secondary .button:hover{border-color:#466521;color:#466521}.button-group.hollow .button.success,.button-group.hollow .button.success.disabled,.button-group.hollow .button.success.disabled:focus,.button-group.hollow .button.success.disabled:hover,.button-group.hollow .button.success[disabled],.button-group.hollow .button.success[disabled]:focus,.button-group.hollow .button.success[disabled]:hover,.button-group.hollow.success .button,.button-group.hollow.success .button.disabled,.button-group.hollow.success .button.disabled:focus,.button-group.hollow.success .button.disabled:hover,.button-group.hollow.success .button[disabled],.button-group.hollow.success .button[disabled]:focus,.button-group.hollow.success .button[disabled]:hover{border:1px solid #4caf50;color:#4caf50}.button-group.hollow .button.success:focus,.button-group.hollow .button.success:hover,.button-group.hollow.success .button:focus,.button-group.hollow.success .button:hover{border-color:#265828;color:#265828}.button-group.hollow .button.warning,.button-group.hollow .button.warning.disabled,.button-group.hollow .button.warning.disabled:focus,.button-group.hollow .button.warning.disabled:hover,.button-group.hollow .button.warning[disabled],.button-group.hollow .button.warning[disabled]:focus,.button-group.hollow .button.warning[disabled]:hover,.button-group.hollow.warning .button,.button-group.hollow.warning .button.disabled,.button-group.hollow.warning .button.disabled:focus,.button-group.hollow.warning .button.disabled:hover,.button-group.hollow.warning .button[disabled],.button-group.hollow.warning .button[disabled]:focus,.button-group.hollow.warning .button[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button-group.hollow .button.warning:focus,.button-group.hollow .button.warning:hover,.button-group.hollow.warning .button:focus,.button-group.hollow.warning .button:hover{border-color:#805700;color:#805700}.button-group.hollow .button.alert,.button-group.hollow .button.alert.disabled,.button-group.hollow .button.alert.disabled:focus,.button-group.hollow .button.alert.disabled:hover,.button-group.hollow .button.alert[disabled],.button-group.hollow .button.alert[disabled]:focus,.button-group.hollow .button.alert[disabled]:hover,.button-group.hollow.alert .button,.button-group.hollow.alert .button.disabled,.button-group.hollow.alert .button.disabled:focus,.button-group.hollow.alert .button.disabled:hover,.button-group.hollow.alert .button[disabled],.button-group.hollow.alert .button[disabled]:focus,.button-group.hollow.alert .button[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button-group.hollow .button.alert:focus,.button-group.hollow .button.alert:hover,.button-group.hollow.alert .button:focus,.button-group.hollow.alert .button:hover{border-color:#67251a;color:#67251a}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button:focus,.button-group.clear .button:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{background-color:transparent;border-color:transparent}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{color:#3f729b}.button-group.clear .button:focus,.button-group.clear .button:hover{color:#20394e}.button-group.clear .button.primary,.button-group.clear .button.primary.disabled,.button-group.clear .button.primary.disabled:focus,.button-group.clear .button.primary.disabled:hover,.button-group.clear .button.primary[disabled],.button-group.clear .button.primary[disabled]:focus,.button-group.clear .button.primary[disabled]:hover,.button-group.clear.primary .button,.button-group.clear.primary .button.disabled,.button-group.clear.primary .button.disabled:focus,.button-group.clear.primary .button.disabled:hover,.button-group.clear.primary .button[disabled],.button-group.clear.primary .button[disabled]:focus,.button-group.clear.primary .button[disabled]:hover{color:#3f729b}.button-group.clear .button.primary:focus,.button-group.clear .button.primary:hover,.button-group.clear.primary .button:focus,.button-group.clear.primary .button:hover{color:#20394e}.button-group.clear .button.secondary,.button-group.clear .button.secondary.disabled,.button-group.clear .button.secondary.disabled:focus,.button-group.clear .button.secondary.disabled:hover,.button-group.clear .button.secondary[disabled],.button-group.clear .button.secondary[disabled]:focus,.button-group.clear .button.secondary[disabled]:hover,.button-group.clear.secondary .button,.button-group.clear.secondary .button.disabled,.button-group.clear.secondary .button.disabled:focus,.button-group.clear.secondary .button.disabled:hover,.button-group.clear.secondary .button[disabled],.button-group.clear.secondary .button[disabled]:focus,.button-group.clear.secondary .button[disabled]:hover{color:#8bc34a}.button-group.clear .button.secondary:focus,.button-group.clear .button.secondary:hover,.button-group.clear.secondary .button:focus,.button-group.clear.secondary .button:hover{color:#466521}.button-group.clear .button.success,.button-group.clear .button.success.disabled,.button-group.clear .button.success.disabled:focus,.button-group.clear .button.success.disabled:hover,.button-group.clear .button.success[disabled],.button-group.clear .button.success[disabled]:focus,.button-group.clear .button.success[disabled]:hover,.button-group.clear.success .button,.button-group.clear.success .button.disabled,.button-group.clear.success .button.disabled:focus,.button-group.clear.success .button.disabled:hover,.button-group.clear.success .button[disabled],.button-group.clear.success .button[disabled]:focus,.button-group.clear.success .button[disabled]:hover{color:#4caf50}.button-group.clear .button.success:focus,.button-group.clear .button.success:hover,.button-group.clear.success .button:focus,.button-group.clear.success .button:hover{color:#265828}.button-group.clear .button.warning,.button-group.clear .button.warning.disabled,.button-group.clear .button.warning.disabled:focus,.button-group.clear .button.warning.disabled:hover,.button-group.clear .button.warning[disabled],.button-group.clear .button.warning[disabled]:focus,.button-group.clear .button.warning[disabled]:hover,.button-group.clear.warning .button,.button-group.clear.warning .button.disabled,.button-group.clear.warning .button.disabled:focus,.button-group.clear.warning .button.disabled:hover,.button-group.clear.warning .button[disabled],.button-group.clear.warning .button[disabled]:focus,.button-group.clear.warning .button[disabled]:hover{color:#ffae00}.button-group.clear .button.warning:focus,.button-group.clear .button.warning:hover,.button-group.clear.warning .button:focus,.button-group.clear.warning .button:hover{color:#805700}.button-group.clear .button.alert,.button-group.clear .button.alert.disabled,.button-group.clear .button.alert.disabled:focus,.button-group.clear .button.alert.disabled:hover,.button-group.clear .button.alert[disabled],.button-group.clear .button.alert[disabled]:focus,.button-group.clear .button.alert[disabled]:hover,.button-group.clear.alert .button,.button-group.clear.alert .button.disabled,.button-group.clear.alert .button.disabled:focus,.button-group.clear.alert .button.disabled:hover,.button-group.clear.alert .button[disabled],.button-group.clear.alert .button[disabled]:focus,.button-group.clear.alert .button[disabled]:hover{color:#cc4b37}.button-group.clear .button.alert:focus,.button-group.clear .button.alert:hover,.button-group.clear.alert .button:focus,.button-group.clear.alert .button:hover{color:#67251a}.button-group.no-gaps .button{margin-right:-.0666666667rem}.button-group.no-gaps .button+.button{border-left-color:transparent}.button-group.stacked,.button-group.stacked-for-medium,.button-group.stacked-for-small{-ms-flex-wrap:wrap;flex-wrap:wrap}.button-group.stacked .button,.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%}.button-group.stacked .button:last-child,.button-group.stacked-for-medium .button:last-child,.button-group.stacked-for-small .button:last-child{margin-bottom:0}.button-group.stacked-for-medium.expanded .button,.button-group.stacked-for-small.expanded .button,.button-group.stacked.expanded .button{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}@media print,screen and (min-width:40em){.button-group.stacked-for-small .button{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (min-width:64em){.button-group.stacked-for-medium .button{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (max-width:39.99875em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}@media print,screen and (max-width:63.99875em){.button-group.stacked-for-medium.expanded{display:block}.button-group.stacked-for-medium.expanded .button{display:block;margin-right:0}}.close-button{color:#8a8a8a;cursor:pointer;position:absolute;z-index:10}[data-whatinput=mouse] .close-button{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.close-button.small{font-size:1.5em;line-height:1;right:.66rem;top:.33em}.close-button,.close-button.medium{font-size:2em;line-height:1;right:1rem;top:.5rem}.label{border-radius:0;cursor:default;display:inline-block;font-size:.8rem;line-height:1;padding:.33333rem .5rem;white-space:nowrap}.label,.label.primary{background:#3f729b;color:#fefefe}.label.secondary{background:#8bc34a;color:#0a0a0a}.label.success{background:#4caf50;color:#0a0a0a}.label.warning{background:#ffae00;color:#0a0a0a}.label.alert{background:#cc4b37;color:#fefefe}.progress{background-color:#cacaca;border-radius:0;height:1rem;margin-bottom:1rem}.progress.primary .progress-meter{background-color:#3f729b}.progress.secondary .progress-meter{background-color:#8bc34a}.progress.success .progress-meter{background-color:#4caf50}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#cc4b37}.progress-meter{background-color:#3f729b;display:block;height:100%;position:relative;width:0}.progress-meter-text{color:#fefefe;font-size:.75rem;font-weight:700;left:50%;margin:0;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);white-space:nowrap}.slider{background-color:#e6e6e6;cursor:pointer;height:.5rem;margin-bottom:2.25rem;margin-top:1.25rem;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.slider-fill{background-color:#cacaca;display:inline-block;height:.5rem;left:0;max-width:100%;position:absolute;top:0;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.slider-fill.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider-handle{background-color:#3f729b;border-radius:0;cursor:-webkit-grab;cursor:grab;display:inline-block;height:1.4rem;left:0;position:absolute;top:50%;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;width:1.4rem;z-index:1}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#366184}.slider-handle.is-dragging{cursor:-webkit-grabbing;cursor:grabbing;-webkit-transition:all 0s linear;transition:all 0s linear}.slider.disabled,.slider[disabled]{cursor:not-allowed;opacity:.25}.slider.vertical{display:inline-block;height:12.5rem;margin:0 1.25rem;-webkit-transform:scaleY(-1);transform:scaleY(-1);width:.5rem}.slider.vertical .slider-fill{max-height:100%;top:0;width:.5rem}.slider.vertical .slider-handle{height:1.4rem;left:50%;position:absolute;top:0;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:1.4rem}.switch{color:#fefefe;font-size:.9333333333rem;font-weight:700;height:2rem;margin-bottom:1rem;outline:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-input{margin-bottom:0;opacity:0;position:absolute}.switch-paddle{background:#cacaca;border-radius:0;color:inherit;cursor:pointer;display:block;font-weight:inherit;height:2rem;position:relative;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:4rem}input+.switch-paddle{margin:0}.switch-paddle:after{background:#fefefe;border-radius:0;content:"";display:block;height:1.5rem;left:.25rem;position:absolute;top:.25rem;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:1.5rem}input:checked~.switch-paddle{background:#3f729b}input:checked~.switch-paddle:after{left:2.25rem}input:disabled~.switch-paddle{cursor:not-allowed;opacity:.5}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{display:none;left:8%}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{font-size:.6666666667rem;height:1.5rem;width:3rem}.switch.tiny .switch-paddle:after{height:1rem;left:.25rem;top:.25rem;width:1rem}.switch.tiny input:checked~.switch-paddle:after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{font-size:.8rem;height:1.75rem;width:3.5rem}.switch.small .switch-paddle:after{height:1.25rem;left:.25rem;top:.25rem;width:1.25rem}.switch.small input:checked~.switch-paddle:after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{font-size:1.0666666667rem;height:2.5rem;width:5rem}.switch.large .switch-paddle:after{height:2rem;left:.25rem;top:.25rem;width:2rem}.switch.large input:checked~.switch-paddle:after{left:2.75rem}table{border-collapse:collapse;border-radius:0;margin-bottom:1rem;width:100%}tbody,tfoot,thead{background-color:#fefefe;border:1px solid #f1f1f1}caption{font-weight:700;padding:.5333333333rem .6666666667rem .6666666667rem}thead{background:transparent}tfoot,thead{color:#0a0a0a}tfoot{background:#f1f1f1}tfoot tr,thead tr{background:transparent}tfoot td,tfoot th,thead td,thead th{font-weight:700;text-align:left}tbody td,tbody th,tfoot td,tfoot th,thead td,thead th{padding:.5333333333rem .6666666667rem .6666666667rem}tbody tr{background-color:#fefefe;border-bottom:1px solid #f1f1f1}@media print,screen and (max-width:63.99875em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;overflow-x:auto;width:100%}table.hover thead tr:hover{background-color:transparent}table.hover tfoot tr:hover{background-color:#ececec}table.hover tbody tr:hover{background-color:#f9f9f9}.table-scroll{overflow-x:auto}.badge{border-radius:50%;display:inline-block;font-size:.6rem;min-width:2.1em;padding:.3em;text-align:center}.badge,.badge.primary{background:#3f729b;color:#fefefe}.badge.secondary{background:#8bc34a;color:#0a0a0a}.badge.success{background:#4caf50;color:#0a0a0a}.badge.warning{background:#ffae00;color:#0a0a0a}.badge.alert{background:#cc4b37;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs:after,.breadcrumbs:before{content:" ";display:table;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.breadcrumbs:after{clear:both}.breadcrumbs li{color:#0a0a0a;cursor:default;float:left;font-size:.7333333333rem;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{color:#cacaca;content:"/";margin:0 .75rem;opacity:1;position:relative}.breadcrumbs a{color:#3f729b}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.callout{background-color:#fff;border:1px solid hsla(0,0%,4%,.25);border-radius:0;color:#0a0a0a;margin:0 0 1rem;padding:1rem;position:relative}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#e0eaf2;color:#0a0a0a}.callout.secondary{background-color:#eef6e4;color:#0a0a0a}.callout.success{background-color:#e4f3e5;color:#0a0a0a}.callout.warning{background-color:#fff3d9;color:#0a0a0a}.callout.alert{background-color:#f7e4e1;color:#0a0a0a}.callout.small{padding:.5rem}.callout.large{padding:3rem}.card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex-positive:1;background:#fefefe;border:1px solid #e6e6e6;border-radius:0;-webkit-box-shadow:none;box-shadow:none;color:#0a0a0a;flex-grow:1;margin-bottom:1rem;overflow:hidden}.card>:last-child{margin-bottom:0}.card-divider{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;background:#e6e6e6;-ms-flex:0 1 auto;flex:0 1 auto;padding:1rem}.card-divider>:last-child{margin-bottom:0}.card-section{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;padding:1rem}.card-section>:last-child{margin-bottom:0}.card-image{min-height:1px}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:none;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:10}.dropdown-pane.is-opening{display:block}.dropdown-pane.is-open{display:block;visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.pagination{margin-bottom:1rem;margin-left:0}.pagination:after,.pagination:before{content:" ";display:table;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.pagination:after{clear:both}.pagination li{border-radius:0;display:none;font-size:.9333333333rem;margin-right:.0666666667rem}.pagination li:first-child,.pagination li:last-child{display:inline-block}@media print,screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{border-radius:0;color:#0a0a0a;display:block;padding:.2rem .6666666667rem}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{background:#3f729b;color:#fefefe;cursor:default;padding:.2rem .6666666667rem}.pagination .disabled{color:#cacaca;cursor:not-allowed;padding:.2rem .6666666667rem}.pagination .disabled:hover{background:transparent}.pagination .ellipsis:after{color:#0a0a0a;content:"…";padding:.2rem .6666666667rem}.pagination-previous a:before,.pagination-previous.disabled:before{content:"«";display:inline-block;margin-right:.5rem}.pagination-next a:after,.pagination-next.disabled:after{content:"»";display:inline-block;margin-left:.5rem}.has-tip{border-bottom:1px dotted #8a8a8a;cursor:help;display:inline-block;font-weight:700;position:relative}.tooltip{background-color:#0a0a0a;border-radius:0;color:#fefefe;font-size:80%;max-width:10rem;padding:.75rem;top:calc(100% + .6495rem);z-index:1200}.tooltip,.tooltip:before{position:absolute}.tooltip.bottom:before{border-color:transparent transparent #0a0a0a;border-style:solid;border-width:0 .75rem .75rem;bottom:100%;content:"";display:block;height:0;width:0}.tooltip.bottom.align-center:before{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top:before{border-color:#0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem 0;bottom:auto;content:"";display:block;height:0;top:100%;width:0}.tooltip.top.align-center:before{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.left:before{border-color:transparent transparent transparent #0a0a0a;border-style:solid;border-width:.75rem 0 .75rem .75rem;content:"";display:block;height:0;left:100%;width:0}.tooltip.left.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right:before{border-color:transparent #0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem .75rem 0;content:"";display:block;height:0;left:auto;right:100%;width:0}.tooltip.right.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.align-top:before{bottom:auto;top:10%}.tooltip.align-bottom:before{bottom:10%;top:auto}.tooltip.align-left:before{left:10%;right:auto}.tooltip.align-right:before{left:auto;right:10%}.accordion{background:#fefefe;list-style-type:none;margin-left:0}.accordion[disabled] .accordion-title{cursor:not-allowed}.accordion-item:first-child>:first-child,.accordion-item:last-child>:last-child{border-radius:0 0 0 0}.accordion-title{border:1px solid #e6e6e6;border-bottom:0;color:#3f729b;display:block;font-size:.8rem;line-height:1;padding:1.25rem 1rem;position:relative}:last-child:not(.is-active)>.accordion-title{border-bottom:1px solid #e6e6e6;border-radius:0 0 0 0}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title:before{content:"+";margin-top:-.5rem;position:absolute;right:1rem;top:50%}.is-active>.accordion-title:before{content:"–"}.accordion-content{background-color:#fefefe;border:1px solid #e6e6e6;border-bottom:0;color:#0a0a0a;display:none;padding:1rem}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.media-object{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;margin-bottom:0}.media-object img{max-width:none}@media print,screen and (max-width:39.99875em){.media-object.stack-for-small{-ms-flex-wrap:wrap;flex-wrap:wrap}}.media-object-section{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}@media print,screen and (max-width:39.99875em){.stack-for-small .media-object-section{padding:0 0 1rem;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.stack-for-small .media-object-section img{width:100%}}.media-object-section.main-section{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}.orbit,.orbit-container{position:relative}.orbit-container{height:0;list-style:none;margin:0;overflow:hidden}.orbit-slide{position:absolute;width:100%}.orbit-slide.no-motionui.is-active{left:0;top:0}.orbit-figure{margin:0}.orbit-image{margin:0;max-width:100%;width:100%}.orbit-caption{background-color:hsla(0,0%,4%,.5);bottom:0;margin-bottom:0;width:100%}.orbit-caption,.orbit-next,.orbit-previous{color:#fefefe;padding:1rem;position:absolute}.orbit-next,.orbit-previous{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:10}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:hsla(0,0%,4%,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{margin-bottom:.8rem;margin-top:.8rem;position:relative;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{background-color:#cacaca;border-radius:50%;height:1.2rem;margin:.1rem;width:1.2rem}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.flex-video,.responsive-embed{height:0;margin-bottom:1.0666666667rem;overflow:hidden;padding-bottom:75%;position:relative}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video,.responsive-embed embed,.responsive-embed iframe,.responsive-embed object,.responsive-embed video{height:100%;left:0;position:absolute;top:0;width:100%}.flex-video.widescreen,.responsive-embed.widescreen{padding-bottom:56.25%}.tabs{background:#fefefe;border:1px solid #e6e6e6;list-style-type:none;margin:0}.tabs:after,.tabs:before{content:" ";display:table;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.tabs:after{clear:both}.tabs.vertical>li{display:block;float:none;width:auto}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:transparent}.tabs.primary{background:#3f729b}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#3c6c93}.tabs-title{float:left}.tabs-title>a{color:#3f729b;display:block;font-size:.9333333333rem;line-height:1;padding:1.25rem 1.5rem}[data-whatinput=mouse] .tabs-title>a{outline:0}.tabs-title>a:hover{background:#fefefe;color:#366285}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#3f729b;color:#fefefe}.tabs-content{background:#fefefe;border:1px solid #e6e6e6;border-top:0;color:#0a0a0a;-webkit-transition:all .5s ease;transition:all .5s ease}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:4px solid #fefefe;border-radius:0;-webkit-box-shadow:0 0 0 1px hsla(0,0%,4%,.2);box-shadow:0 0 0 1px hsla(0,0%,4%,.2);display:inline-block;line-height:0;margin-bottom:1rem;max-width:100%}a.thumbnail{-webkit-transition:-webkit-box-shadow .2s ease-out;transition:-webkit-box-shadow .2s ease-out;transition:box-shadow .2s ease-out;transition:box-shadow .2s ease-out,-webkit-box-shadow .2s ease-out}a.thumbnail:focus,a.thumbnail:hover{-webkit-box-shadow:0 0 6px 1px rgba(63,114,155,.5);box-shadow:0 0 6px 1px rgba(63,114,155,.5)}a.thumbnail image{-webkit-box-shadow:none;box-shadow:none}.menu{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin:0;padding:0;position:relative}[data-whatinput=mouse] .menu li{outline:0}.menu .button,.menu a{display:block;line-height:1;padding:.7rem 1rem;text-decoration:none}.menu a,.menu button,.menu input,.menu select{margin-bottom:0}.menu input{display:inline-block}.menu,.menu.horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.menu.vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.menu.vertical.icon-bottom li a i,.menu.vertical.icon-bottom li a img,.menu.vertical.icon-bottom li a svg,.menu.vertical.icon-top li a i,.menu.vertical.icon-top li a img,.menu.vertical.icon-top li a svg{text-align:left}.menu.expanded li{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}.menu.expanded.icon-bottom li a i,.menu.expanded.icon-bottom li a img,.menu.expanded.icon-bottom li a svg,.menu.expanded.icon-top li a i,.menu.expanded.icon-top li a img,.menu.expanded.icon-top li a svg{text-align:left}.menu.simple{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.menu.simple li+li{margin-left:1rem}.menu.simple a{padding:0}@media print,screen and (min-width:40em){.menu.medium-horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.menu.medium-vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.menu.medium-expanded li,.menu.medium-simple li{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}}@media print,screen and (min-width:64em){.menu.large-horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.menu.large-vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.menu.large-expanded li,.menu.large-simple li{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}}@media screen and (min-width:75em){.menu.xlarge-horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.menu.xlarge-vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.menu.xlarge-expanded li,.menu.xlarge-simple li{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}}@media screen and (min-width:90em){.menu.xxlarge-horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.menu.xxlarge-vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.menu.xxlarge-expanded li,.menu.xxlarge-simple li{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}}.menu.nested{margin-left:1rem;margin-right:0}.menu.icon-bottom a,.menu.icon-left a,.menu.icon-right a,.menu.icon-top a,.menu.icons a{display:-webkit-box;display:-ms-flexbox;display:flex}.menu.icon-left li a,.menu.nested.icon-left li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-left li a i,.menu.icon-left li a img,.menu.icon-left li a svg,.menu.nested.icon-left li a i,.menu.nested.icon-left li a img,.menu.nested.icon-left li a svg{margin-right:.25rem}.menu.icon-right li a,.menu.nested.icon-right li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-right li a i,.menu.icon-right li a img,.menu.icon-right li a svg,.menu.nested.icon-right li a i,.menu.nested.icon-right li a img,.menu.nested.icon-right li a svg{margin-left:.25rem}.menu.icon-top li a,.menu.nested.icon-top li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-top li a i,.menu.icon-top li a img,.menu.icon-top li a svg,.menu.nested.icon-top li a i,.menu.nested.icon-top li a img,.menu.nested.icon-top li a svg{-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu.icon-bottom li a,.menu.nested.icon-bottom li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-bottom li a i,.menu.icon-bottom li a img,.menu.icon-bottom li a svg,.menu.nested.icon-bottom li a i,.menu.nested.icon-bottom li a img,.menu.nested.icon-bottom li a svg{-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu .active>a,.menu .is-active>a{background:#3f729b;color:#fefefe}.menu.align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.menu.align-right li .submenu li{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right.vertical li{display:block;text-align:right}.menu.align-right.icon-bottom li a i,.menu.align-right.icon-bottom li a img,.menu.align-right.icon-bottom li a svg,.menu.align-right.icon-top li a i,.menu.align-right.icon-top li a img,.menu.align-right.icon-top li a svg,.menu.align-right.vertical li .submenu li{text-align:right}.menu.align-right .nested{margin-left:0;margin-right:1rem}.menu.align-center li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.menu.align-center li .submenu li{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.menu .menu-text{color:inherit;font-weight:700;line-height:1;padding:.7rem 1rem}.menu-centered>.menu,.menu-centered>.menu li{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.menu-centered>.menu li{display:-webkit-box;display:-ms-flexbox;display:flex}.menu-centered>.menu li .submenu li{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.no-js [data-responsive-menu] ul{display:none}.menu-icon{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon:after{background:#fefefe;-webkit-box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon:hover:after{background:#cacaca;-webkit-box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.menu-icon.dark{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon.dark:after{background:#0a0a0a;-webkit-box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon.dark:hover:after{background:#8a8a8a;-webkit-box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.accordion-menu li{width:100%}.accordion-menu .is-accordion-submenu a,.accordion-menu a{padding:.7rem 1rem}.accordion-menu .nested.is-accordion-submenu{margin-left:1rem;margin-right:0}.accordion-menu.align-right .nested.is-accordion-submenu{margin-left:0;margin-right:1rem}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a{position:relative}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;margin-top:-3px;position:absolute;right:1rem;top:50%;width:0}.accordion-menu.align-left .is-accordion-submenu-parent>a:after{left:auto;right:1rem}.accordion-menu.align-right .is-accordion-submenu-parent>a:after{left:1rem;right:auto}.accordion-menu .is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}.is-accordion-submenu-parent{position:relative}.has-submenu-toggle>a{margin-right:40px}.submenu-toggle{cursor:pointer;height:40px;position:absolute;right:0;top:0;width:40px}.submenu-toggle:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;bottom:0;content:"";display:block;height:0;margin:auto;top:0;width:0}.submenu-toggle[aria-expanded=true]:after{-webkit-transform:scaleY(-1);transform:scaleY(-1);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}.submenu-toggle-text{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.is-drilldown{overflow:hidden;position:relative}.is-drilldown li{display:block}.is-drilldown.animate-height{-webkit-transition:height .5s;transition:height .5s}.drilldown a{background:#fefefe;padding:.7rem 1rem}.drilldown .is-drilldown-submenu{background:#fefefe;left:100%;position:absolute;top:0;-webkit-transition:-webkit-transform .15s linear;transition:-webkit-transform .15s linear;transition:transform .15s linear;transition:transform .15s linear,-webkit-transform .15s linear;width:100%;z-index:-1}.drilldown .is-drilldown-submenu.is-active{display:block;-webkit-transform:translateX(-100%);transform:translateX(-100%);z-index:1}.drilldown .is-drilldown-submenu.is-closing{-webkit-transform:translateX(100%);transform:translateX(100%)}.drilldown .is-drilldown-submenu a{padding:.7rem 1rem}.drilldown .nested.is-drilldown-submenu{margin-left:0;margin-right:0}.drilldown .drilldown-submenu-cover-previous{min-height:100%}.drilldown .is-drilldown-submenu-parent>a{position:relative}.drilldown .is-drilldown-submenu-parent>a:after{margin-top:-6px;position:absolute;top:50%}.drilldown .is-drilldown-submenu-parent>a:after,.drilldown.align-left .is-drilldown-submenu-parent>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;right:1rem;width:0}.drilldown.align-left .is-drilldown-submenu-parent>a:after{left:auto}.drilldown.align-right .is-drilldown-submenu-parent>a:after{left:1rem;right:auto}.drilldown .js-drilldown-back>a:before,.drilldown.align-right .is-drilldown-submenu-parent>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;width:0}.drilldown .js-drilldown-back>a:before{display:inline-block;margin-right:.75rem;vertical-align:middle}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}[data-whatinput=mouse] .dropdown.menu a{outline:0}.dropdown.menu>li>a{background:#fefefe;padding:.7rem 1rem}.dropdown.menu>li.is-active>a{background:transparent;color:#3f729b}.no-js .dropdown.menu ul{display:none}.dropdown.menu .nested.is-dropdown-submenu{margin-left:0;margin-right:0}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.vertical>li>a:after{right:14px}.dropdown.menu.vertical>li.opens-left>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.vertical>li.opens-right>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}@media print,screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.medium-vertical>li>a:after{right:14px}.dropdown.menu.medium-vertical>li.opens-left>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.medium-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}@media print,screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.large-vertical>li>a:after{right:14px}.dropdown.menu.large-vertical>li.opens-left>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.large-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}@media screen and (min-width:75em){.dropdown.menu.xlarge-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.xlarge-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.xlarge-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.xlarge-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.xlarge-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.xlarge-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.xlarge-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.xlarge-vertical>li>a:after{right:14px}.dropdown.menu.xlarge-vertical>li.opens-left>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.xlarge-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}@media screen and (min-width:90em){.dropdown.menu.xxlarge-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.xxlarge-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.xxlarge-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.xxlarge-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#3f729b transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.xxlarge-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.xxlarge-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.xxlarge-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.xxlarge-vertical>li>a:after{right:14px}.dropdown.menu.xxlarge-vertical>li.opens-left>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.xxlarge-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{left:auto;right:0;top:100%}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{left:auto;margin-top:-6px;position:absolute;right:5px;top:50%}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{left:auto;top:100%}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{left:100%;right:auto}.is-dropdown-submenu{background:#fefefe;border:1px solid #cacaca;display:none;left:100%;min-width:200px;position:absolute;top:0;z-index:1}.dropdown .is-dropdown-submenu a{padding:.7rem 1rem}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{right:14px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{border-color:transparent #3f729b transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{border-color:transparent transparent transparent #3f729b;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.is-off-canvas-open{overflow:hidden}.js-off-canvas-overlay{background:hsla(0,0%,100%,.25);height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;-webkit-transition:opacity .5s ease,visibility .5s ease;transition:opacity .5s ease,visibility .5s ease;visibility:hidden;width:100%;z-index:11}.js-off-canvas-overlay.is-visible{opacity:1;visibility:visible}.js-off-canvas-overlay.is-closable{cursor:pointer}.js-off-canvas-overlay.is-overlay-absolute{position:absolute}.js-off-canvas-overlay.is-overlay-fixed{position:fixed}.off-canvas-wrapper{overflow:hidden;position:relative}.off-canvas{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:fixed;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.is-transition-push{z-index:12}.off-canvas.is-closed{visibility:hidden}.off-canvas.is-transition-overlap{z-index:13}.off-canvas.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas.is-open{-webkit-transform:translate(0);transform:translate(0)}.off-canvas-absolute{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:absolute;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas-absolute{outline:0}.off-canvas-absolute.is-transition-push{z-index:12}.off-canvas-absolute.is-closed{visibility:hidden}.off-canvas-absolute.is-transition-overlap{z-index:13}.off-canvas-absolute.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas-absolute.is-open{-webkit-transform:translate(0);transform:translate(0)}.position-left{height:100%;left:0;overflow-y:auto;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-left,.position-left{-webkit-transform:translateX(-250px);transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open{-webkit-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-left.has-transition-push{-webkit-transform:translateX(250px);transform:translateX(250px)}.position-left.is-transition-push{-webkit-box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25)}.position-right{height:100%;overflow-y:auto;right:0;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-right,.position-right{-webkit-transform:translateX(250px);transform:translateX(250px)}.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open{-webkit-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-right.has-transition-push{-webkit-transform:translateX(-250px);transform:translateX(-250px)}.position-right.is-transition-push{-webkit-box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25)}.position-top{left:0;overflow-x:auto;top:0;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-top,.position-top{-webkit-transform:translateY(-250px);transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open{-webkit-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-top.has-transition-push{-webkit-transform:translateY(250px);transform:translateY(250px)}.position-top.is-transition-push{-webkit-box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25)}.position-bottom{bottom:0;left:0;overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-bottom,.position-bottom{-webkit-transform:translateY(250px);transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open{-webkit-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-bottom.has-transition-push{-webkit-transform:translateY(-250px);transform:translateY(-250px)}.position-bottom.is-transition-push{-webkit-box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25)}.off-canvas-content{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:none;transform:none}.off-canvas-content.has-transition-overlap,.off-canvas-content.has-transition-push{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.off-canvas-content .off-canvas.is-open,.off-canvas-content.has-transition-push{-webkit-transform:translate(0);transform:translate(0)}@media print,screen and (min-width:40em){.position-left.reveal-for-medium{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-medium .close-button{display:none}.off-canvas-content .position-left.reveal-for-medium{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-medium .close-button{display:none}.off-canvas-content .position-right.reveal-for-medium{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}.position-top.reveal-for-medium{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-medium .close-button{display:none}.off-canvas-content .position-top.reveal-for-medium{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-medium~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-medium{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-medium .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-medium{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-medium~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:64em){.position-left.reveal-for-large{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-large .close-button{display:none}.off-canvas-content .position-left.reveal-for-large{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-large .close-button{display:none}.off-canvas-content .position-right.reveal-for-large{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}.position-top.reveal-for-large{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-large .close-button{display:none}.off-canvas-content .position-top.reveal-for-large{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-large~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-large{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-large .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-large{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-large~.off-canvas-content{margin-bottom:250px}}@media screen and (min-width:75em){.position-left.reveal-for-xlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-xlarge .close-button{display:none}.off-canvas-content .position-left.reveal-for-xlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-xlarge~.off-canvas-content{margin-left:250px}.position-right.reveal-for-xlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-xlarge .close-button{display:none}.off-canvas-content .position-right.reveal-for-xlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-xlarge~.off-canvas-content{margin-right:250px}.position-top.reveal-for-xlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-xlarge .close-button{display:none}.off-canvas-content .position-top.reveal-for-xlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-xlarge~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-xlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-xlarge .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-xlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-xlarge~.off-canvas-content{margin-bottom:250px}}@media screen and (min-width:90em){.position-left.reveal-for-xxlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-xxlarge .close-button{display:none}.off-canvas-content .position-left.reveal-for-xxlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-xxlarge~.off-canvas-content{margin-left:250px}.position-right.reveal-for-xxlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-xxlarge .close-button{display:none}.off-canvas-content .position-right.reveal-for-xxlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-xxlarge~.off-canvas-content{margin-right:250px}.position-top.reveal-for-xxlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-xxlarge .close-button{display:none}.off-canvas-content .position-top.reveal-for-xxlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-xxlarge~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-xxlarge{-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-xxlarge .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-xxlarge{-webkit-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-xxlarge~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:40em){.off-canvas.in-canvas-for-medium{background:none;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-medium.position-bottom,.off-canvas.in-canvas-for-medium.position-left,.off-canvas.in-canvas-for-medium.position-right,.off-canvas.in-canvas-for-medium.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;transform:none}.off-canvas.in-canvas-for-medium .close-button{display:none}}@media print,screen and (min-width:64em){.off-canvas.in-canvas-for-large{background:none;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-large.position-bottom,.off-canvas.in-canvas-for-large.position-left,.off-canvas.in-canvas-for-large.position-right,.off-canvas.in-canvas-for-large.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;transform:none}.off-canvas.in-canvas-for-large .close-button{display:none}}@media screen and (min-width:75em){.off-canvas.in-canvas-for-xlarge{background:none;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-xlarge.position-bottom,.off-canvas.in-canvas-for-xlarge.position-left,.off-canvas.in-canvas-for-xlarge.position-right,.off-canvas.in-canvas-for-xlarge.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;transform:none}.off-canvas.in-canvas-for-xlarge .close-button{display:none}}@media screen and (min-width:90em){.off-canvas.in-canvas-for-xxlarge{background:none;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-xxlarge.position-bottom,.off-canvas.in-canvas-for-xxlarge.position-left,.off-canvas.in-canvas-for-xxlarge.position-right,.off-canvas.in-canvas-for-xxlarge.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;transform:none}.off-canvas.in-canvas-for-xxlarge .close-button{display:none}}html.is-reveal-open{overflow-y:hidden;position:fixed;width:100%}html.is-reveal-open.zf-has-scroll{overflow-y:scroll;-webkit-overflow-scrolling:touch}html.is-reveal-open body{overflow-y:hidden}.reveal-overlay{background-color:hsla(0,0%,4%,.45);bottom:0;left:0;position:fixed;right:0;top:0;z-index:1005}.reveal,.reveal-overlay{display:none;overflow-y:auto;-webkit-overflow-scrolling:touch}.reveal{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:#fefefe;border:1px solid #cacaca;border-radius:10px;margin-left:auto;margin-right:auto;padding:1rem;position:relative;top:100px;z-index:1006}[data-whatinput=mouse] .reveal{outline:0}@media print,screen and (min-width:40em){.reveal{min-height:0}}.reveal .column{min-width:0}.reveal>:last-child{margin-bottom:0}@media print,screen and (min-width:40em){.reveal{max-width:80rem;width:600px}}.reveal.collapse{padding:0}@media print,screen and (min-width:40em){.reveal.tiny{max-width:80rem;width:30%}.reveal.small{max-width:80rem;width:50%}.reveal.large{max-width:80rem;width:90%}}.reveal.full{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}@media print,screen and (max-width:39.99875em){.reveal{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}}.reveal.without-overlay{position:fixed}.sticky,.sticky-container{position:relative}.sticky{-webkit-transform:translateZ(0);transform:translateZ(0);z-index:0}.sticky.is-stuck{position:fixed;width:100%;z-index:5}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{left:auto;position:relative;right:auto}.sticky.is-anchored.is-at-bottom{bottom:0}.title-bar{background:#3f729b;color:#fefefe;display:-webkit-box;display:-ms-flexbox;display:flex;padding:.5rem;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left,.title-bar-right{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}.title-bar-right{text-align:right}.title-bar-title{display:inline-block;font-weight:700;vertical-align:middle}.top-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;flex-wrap:nowrap;padding:.5rem}.top-bar,.top-bar ul{background-color:#fefefe}.top-bar input{margin-right:1rem;max-width:200px}.top-bar .input-group-field{margin-right:0;width:100%}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.top-bar .top-bar-left{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin-right:auto}.top-bar .top-bar-right{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;margin-left:auto}@media print,screen and (max-width:63.99875em){.top-bar.stacked-for-medium{-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media print,screen and (max-width:74.99875em){.top-bar.stacked-for-large{-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media print,screen and (max-width:89.99875em){.top-bar.stacked-for-xlarge{-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-xlarge .top-bar-left,.top-bar.stacked-for-xlarge .top-bar-right{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.top-bar.stacked-for-xxlarge{-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-xxlarge .top-bar-left,.top-bar.stacked-for-xxlarge .top-bar-right{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.top-bar-title{margin:.45rem 1rem 0}.top-bar-left,.top-bar-right,.top-bar-title{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:" ";display:table;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.clearfix:after{clear:both}.align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.align-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.align-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.align-justify{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.align-spaced{-ms-flex-pack:distribute;justify-content:space-around}.align-left.vertical.menu>li>a{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.align-right.vertical.menu>li>a{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.align-center.vertical.menu>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.align-top{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.align-self-top{-ms-flex-item-align:start;align-self:flex-start}.align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.align-self-bottom{-ms-flex-item-align:end;align-self:flex-end}.align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.align-self-middle{-ms-flex-item-align:center;align-self:center}.align-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.align-self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.align-center-middle{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.small-order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.small-order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.small-order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.small-order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.small-order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.small-order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}@media print,screen and (min-width:40em){.medium-order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.medium-order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.medium-order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.medium-order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.medium-order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.medium-order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}}@media print,screen and (min-width:64em){.large-order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.large-order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.large-order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.large-order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.large-order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.large-order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}}@media screen and (min-width:75em){.xlarge-order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.xlarge-order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.xlarge-order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.xlarge-order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.xlarge-order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.xlarge-order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}}@media screen and (min-width:90em){.xxlarge-order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.xxlarge-order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.xxlarge-order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.xxlarge-order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.xxlarge-order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.xxlarge-order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}}.flex-container{display:-webkit-box;display:-ms-flexbox;display:flex}.flex-child-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-child-grow{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.flex-child-shrink{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}@media print,screen and (min-width:40em){.medium-flex-container{display:-webkit-box;display:-ms-flexbox;display:flex}.medium-flex-child-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.medium-flex-child-grow{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.medium-flex-child-shrink{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.medium-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.medium-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.medium-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.medium-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media print,screen and (min-width:64em){.large-flex-container{display:-webkit-box;display:-ms-flexbox;display:flex}.large-flex-child-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.large-flex-child-grow{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.large-flex-child-shrink{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.large-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.large-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.large-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.large-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media screen and (min-width:75em){.xlarge-flex-container{display:-webkit-box;display:-ms-flexbox;display:flex}.xlarge-flex-child-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.xlarge-flex-child-grow{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.xlarge-flex-child-shrink{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.xlarge-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.xlarge-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.xlarge-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.xlarge-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media screen and (min-width:90em){.xxlarge-flex-container{display:-webkit-box;display:-ms-flexbox;display:flex}.xxlarge-flex-child-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.xxlarge-flex-child-grow{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.xxlarge-flex-child-shrink{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.xxlarge-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.xxlarge-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.xxlarge-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.xxlarge-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.hide{display:none!important}.invisible{visibility:hidden}.visible{visibility:visible}@media print,screen and (max-width:39.99875em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media print,screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.99875em){.show-for-medium{display:none!important}}@media print,screen and (min-width:40em) and (max-width:63.99875em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.99875em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media print,screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.99875em){.show-for-large{display:none!important}}@media print,screen and (min-width:64em) and (max-width:74.99875em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.99875em),screen and (min-width:75em){.show-for-large-only{display:none!important}}@media screen and (min-width:75em){.hide-for-xlarge{display:none!important}}@media screen and (max-width:74.99875em){.show-for-xlarge{display:none!important}}@media screen and (min-width:75em) and (max-width:89.99875em){.hide-for-xlarge-only{display:none!important}}@media screen and (max-width:74.99875em),screen and (min-width:90em){.show-for-xlarge-only{display:none!important}}@media screen and (min-width:90em){.hide-for-xxlarge{display:none!important}}@media screen and (max-width:89.99875em){.show-for-xxlarge{display:none!important}}@media screen and (min-width:90em){.hide-for-xxlarge-only{display:none!important}}@media screen and (max-width:89.99875em){.show-for-xxlarge-only{display:none!important}}.show-for-sr,.show-on-focus{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.show-on-focus:active,.show-on-focus:focus{height:auto!important;overflow:visible!important;position:static!important;width:auto!important;clip:auto!important;white-space:normal!important}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.show-for-dark-mode{display:none}.hide-for-dark-mode{display:block}@media screen and (prefers-color-scheme:dark){.show-for-dark-mode{display:block!important}.hide-for-dark-mode{display:none!important}}.show-for-ie{display:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.show-for-ie{display:block!important}.hide-for-ie{display:none!important}}.show-for-sticky{display:none}.is-stuck .show-for-sticky{display:block}.is-stuck .hide-for-sticky{display:none}.grey{color:#8a8a8a;font-weight:400}.txt-gray-light{color:#e6e6e6}.txt-gray-mid{color:#cacaca}.txt-gray-dark{color:#8a8a8a}.primary-color{color:#3f729b}.padding-bottom{padding-bottom:1rem}.center{text-align:center}.float-right{float:right}.full-width{width:100%}html{--primary-color:#3f729b;--secondary-color:#8bc34a;--success-color:#4caf50;--warning-color:#ffae00;--alert-color:#cc4b37}body{background-color:#e2e2e2}footer .copyright{padding-left:1em}.top-border{border-top:1px solid #ccc}.bottom-border{border-bottom:1px solid #ccc}.tall-4{height:4em}.pin-to-bottom{bottom:0;position:absolute;width:95%}object{height:100%;width:100%}.vertical-line{display:inline-block;height:15px;margin-right:5px}.no-margin{margin:0}.button.icon-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dt-tooltip{display:inline-block;position:relative}.dt-action-button{background-color:#eee;color:#000;margin:0}.dt-action-button:focus,.dt-action-button:hover{background-color:#7a7a7a;color:#000}.dt-tooltip .tooltiptext{background-color:#555;border-radius:6px;bottom:130%;color:#fff;left:50%;margin-left:-75px;opacity:1;padding:5px;position:absolute;text-align:center;-webkit-transition:opacity .3s;transition:opacity .3s;visibility:hidden;width:140px;z-index:1}.dt-tooltip .tooltiptext:after{border:5px solid transparent;border-top-color:#555;content:"";left:50%;margin-left:-5px;position:absolute;top:100%}.dt-tooltip:hover .tooltiptext{opacity:1;overflow-wrap:break-word;-webkit-transition:opacity .3s;transition:opacity .3s;visibility:visible}a:link,a:visited:link{-webkit-tap-highlight-color:rgba(0,0,0,.3)}.top-bar{border-bottom:1px solid #e6e6e6}.top-bar,.top-bar ul{background-color:#3f729b}.top-bar a{color:#fff}.top-bar .active a{background:#224f72}.top-bar .logo{-webkit-margin-end:2vw;height:20px;margin-inline-end:2vw}#top-bar-menu{border:none;margin-top:0!important;padding:0 20px;z-index:999}#top-bar-menu .logo-link{-webkit-padding-start:0;padding-inline-start:0;padding:0;vertical-align:middle}#top-bar-menu .top-bar-right .dropdown.menu{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}#top-bar-menu .top-bar-right .dropdown.menu>li{margin:0 10px}@media screen and (max-width:775px){#top-bar-menu .top-bar-right .dropdown.menu li{margin-bottom:.5rem}#top-bar-menu .top-bar-right .dropdown.menu li:first-of-type{text-align:end;width:100%}}#top-bar-menu .dropdown.menu a{background-color:#3f729b}#top-bar-menu .dropdown.menu li.active>a{background:#005a87}#top-bar-menu .top-bar-left .dropdown.menu{-ms-flex-wrap:nowrap;flex-wrap:nowrap}#top-bar-menu .top-bar-left .dropdown.menu a:hover{background-color:#224f72}#top-bar-menu .top-bar-left .dropdown.menu>li.is-dropdown-submenu-parent>a:after{border-color:#fefefe transparent transparent}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:none}@media screen and (max-width:1040px){#top-bar-menu .top-bar-left .dropdown.menu>li:nth-child(n+4){display:none}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:inherit}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button>ul>li:nth-child(-n+3){display:none}}@media screen and (min-width:1041px) and (max-width:1140px){#top-bar-menu .top-bar-left .dropdown.menu>li:nth-child(n+6){display:none}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:inherit}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button>ul>li:nth-child(-n+5){display:none}}@media screen and (min-width:1141px) and (max-width:1240px){#top-bar-menu .top-bar-left .dropdown.menu>li:nth-child(n+7){display:none}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:inherit}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button>ul>li:nth-child(-n+6){display:none}}@media screen and (min-width:1241px) and (max-width:1300px){#top-bar-menu .top-bar-left .dropdown.menu>li:nth-child(n+8){display:none}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:inherit}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button>ul>li:nth-child(-n+7){display:none}}@media screen and (min-width:1301px) and (max-width:1400px){#top-bar-menu .top-bar-left .dropdown.menu>li:nth-child(n+9){display:none}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:inherit}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button>ul>li:nth-child(-n+8){display:none}}@media screen and (min-width:1401px) and (max-width:1600px){#top-bar-menu .top-bar-left .dropdown.menu>li:nth-child(n+9){display:none}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button{display:inherit}#top-bar-menu .top-bar-left .dropdown.menu #more-menu-button>ul>li:nth-child(-n+8){display:none}}#top-bar-menu a{color:#fefefe;font-weight:700;padding:1rem}#top-bar-menu .image-menu-nav img{height:24px}#top-bar-menu .image-menu-nav a{font-weight:700;padding:4px 5px;vertical-align:middle}#top-bar-menu .image-menu-nav a span{vertical-align:middle}#top-bar-menu .submenu.menu.vertical{display:none}#top-bar-menu .submenu.menu.vertical.is-dropdown-submenu.js-dropdown-active{display:block}html[dir=rtl] #top-bar-menu .dropdown.menu>li.is-dropdown-submenu-parent>a:after{left:5px;right:auto}.notifications-menu-item .notification-count{display:none;margin-left:-15px;position:relative;top:-5px;vertical-align:top}.notification-count-offcanvas{display:none;margin-left:10px;position:relative;top:0;vertical-align:middle}.top-bar .is-submenu-item{background-color:#3f729b;text-align:left}.top-bar .is-submenu-item a{color:#fff;font-weight:700;vertical-align:middle}.top-bar .is-submenu-item a img{margin:0 10px 0 0;width:25px}nav.second-bar{background-color:#fff;-webkit-box-shadow:0 4px 4px rgba(0,0,0,.25);box-shadow:0 4px 4px rgba(0,0,0,.25);padding:.5em;top:auto;-webkit-transform:translateX(0);transform:translateX(0);width:100%}nav.second-bar .title{font-weight:700}nav.second-bar .breadcrumbs{margin-bottom:0}nav.second-bar .buttons-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-column-gap:.3rem;-moz-column-gap:.3rem;column-gap:.3rem;justify-content:center}nav.second-bar .button{padding:.4em .75em}nav.second-bar .button img{height:17px;padding-right:5px}@media screen and (max-width:639px){nav.second-bar .button.follow{padding:0 .75em}nav.second-bar .button.follow .fi-eye{font-size:22px;line-height:16px}nav.second-bar .button img{padding-right:0}}nav.second-bar .button.favorite{background:none;padding:0}nav.second-bar .button.favorite .icon-star{height:1.8em;width:auto;fill:#c7c6c1}nav.second-bar .button.favorite.selected .icon-star{fill:#ffc105}nav.second-bar .dropdown.menu>li>a{padding-bottom:.4em;padding-top:.4em}nav.second-bar input{max-height:30px;padding:.4em .75em}nav.second-bar a,nav.second-bar button,nav.second-bar input{margin:0;vertical-align:middle}nav.second-bar a span,nav.second-bar button span,nav.second-bar input span{vertical-align:middle}.search-input{display:inline-block;margin-right:0;max-width:200px}.search-input__clear-button{border:1px solid #cacaca;border-left:unset;color:#3f729b;cursor:pointer;display:none;font-weight:700;padding:0 .5rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.search-wrapper{max-height:30px;-webkit-transform:translateY(1px);transform:translateY(1px)}.search-wrapper,.text-input-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.text-input-wrapper{width:200px}.text-input-wrapper input{font:inherit;height:100%;margin:0!important;padding:0}nav.second-bar .advanced_search{border:1px solid #cacaca;-webkit-border-start:0;border-inline-start:0;display:inline-block;padding:.15em .5em;position:relative;-webkit-transform:translateX(-5px);transform:translateX(-5px)}html[dir=rtl] nav.second-bar .advanced_search{-webkit-transform:translateX(5px);transform:translateX(5px)}.advancedSearch-count{font-size:.45em;font-weight:700;left:1.15rem;position:absolute;top:0;vertical-align:top}.off-canvas-list ul{margin-left:0}.off-canvas-list ul li a{border-bottom:0}.off-canvas-list ul .dropdown{margin-left:20px}.off-canvas-list ul .off-canvas-padding{padding:0 1rem}#off-canvas span.title{font-size:1.3rem;font-weight:800;padding:2rem 1rem 2rem 0;text-align:center}#off-canvas ul.is-at-top{padding-top:10px}#off-canvas ul.is-at-top li.nav-title div,.menu input{margin-left:1rem}.menu input{margin-right:1rem;width:80%}.center-items{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}div.sticky-container{z-index:1}.title-bar{padding:.7rem}.title-bar .logo-link{-webkit-padding-start:0;padding-inline-start:0;vertical-align:middle}.title-bar .logo{height:20px;margin:0}.title-bar img{vertical-align:middle}.is-dropdown-submenu{z-index:5}#content #inner-content{margin-left:5px;margin-right:5px;padding:1rem 0}#content article{margin-bottom:10px}#content article header,#content article section{padding:10px}#content article footer{padding:10px;text-align:center}#content article a.button{float:left}#content article .article-header .title{text-transform:uppercase}.bordered-box{background-color:#fefefe;border:1px solid #e6e6e6;border-radius:10px;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.25);box-shadow:0 2px 4px rgba(0,0,0,.25);padding:1rem}.bordered-box table.dataTable{margin:.5em -1rem!important;width:calc(100% + 2rem)}i.large{font-size:50px;line-height:50px}i.medium{display:inline-block;font-size:25px;line-height:25px;-webkit-transform:translateY(2px);transform:translateY(2px)}button{cursor:pointer}button.clear{background-color:#fff;border:1px solid #ccc;color:#000}img{vertical-align:inherit}.input-height,.typeahead__field .typeahead__filter input.typeahead__filter-button,.typeahead__field .typeahead__filter textarea.typeahead__filter-button .typeahead__field button.input-height,.typeahead__field .typeahead__filter textarea.typeahead__filter-button .typeahead__field button.typeahead__filter-button,.typeahead__field .typeahead__hint,.typeahead__field [contenteditable],.typeahead__field input.input-height,.typeahead__field textarea.input-height .typeahead__field .typeahead__filter button.typeahead__filter-button,.typeahead__field textarea.input-height .typeahead__field button.input-height,.typeahead__filter .typeahead__field input.typeahead__filter-button,.typeahead__filter .typeahead__field textarea.input-height .typeahead__field button.typeahead__filter-button,.typeahead__filter .typeahead__field textarea.typeahead__filter-button .typeahead__field button.input-height,.typeahead__filter .typeahead__field textarea.typeahead__filter-button .typeahead__field button.typeahead__filter-button,.typeahead__filter .typeahead__filter-button{min-height:2.5rem}.tabs-panel .outer-container{padding:0!important}.tabs a.maginifying-glass{display:block;font-size:1.5rem;line-height:1;padding:.75rem}.section-header{color:#3f729b;font-size:1.5rem}.section-subheader{font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-button.ui-state-active:hover,.ui-button:active,.ui-state-active{background:#3f729b;border-color:#3f729b}button.loader:not(.disabled):before{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:rotate;animation-name:rotate;-webkit-animation-timing-function:linear;animation-timing-function:linear;border:4px solid;border-left:4px solid transparent;border-radius:50%;content:"";display:none;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);height:20px;margin-top:-11px;opacity:0;position:absolute;right:10px;top:50%;-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-property:opacity;transition-property:opacity;width:20px}button.loader:not(.disabled):after{content:"";height:100%;-webkit-transition-delay:.5s;transition-delay:.5s;-webkit-transition-duration:.75s;transition-duration:.75s;-webkit-transition-property:width;transition-property:width;width:0}button.loader:not(.disabled).loading{cursor:not-allowed;padding-right:35px;pointer-events:none;position:relative}button.loader:not(.disabled).loading:not(.expand){text-align:left}button.loader:not(.disabled).loading:before{display:block;filter:progid:DXImageTransform.Microsoft.Alpha(enabled=false);opacity:1;-webkit-transition-delay:.5s;transition-delay:.5s;-webkit-transition-duration:1s;transition-duration:1s}button.loader:not(.disabled).loading:after{-webkit-transition-delay:0s;transition-delay:0s;width:20px}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-spinner.active{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;border:.25rem solid #919191;border-radius:50%;border-top-color:#000;display:inline-block;height:24px;width:24px}.scrollable-typeahead .typeahead__list{max-height:300px;overflow-x:hidden;overflow-y:auto}.typeahead__container.result .typeahead__list{-webkit-box-shadow:5px 6px 5px rgba(0,0,0,.4);box-shadow:5px 6px 5px rgba(0,0,0,.4)}.typeahead-margin-when-active .typeahead__container.result .typeahead__result{margin-bottom:350px}.typeahead__container{margin-bottom:10px}.typeahead__container .typeahead__image_button{padding-bottom:3px;padding-top:3px;vertical-align:middle}.typeahead__container .typeahead__image_button img{height:20px;min-height:15px;min-width:15px;width:20px}.last-typeahead-in-section{margin-bottom:150px}.typeahead__dropdown>li>a,.typeahead__list>li>a{clear:both;color:#333;display:block;padding:.5rem .75rem;text-decoration:none}.typeahead__item .typeahead-user-row img{border-radius:3px;padding:1px;vertical-align:text-bottom;width:20px}.typeahead__label{max-width:-webkit-fill-available;max-width:-moz-available}.typeahead__label a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar img{height:16px}.clearfix{clear:both}.header{position:relative;z-index:10}.profile-input{margin:0}.half-opacity{opacity:.5}.typeahead__cancel-button{padding:4px 6px!important}html[dir=rtl] .typeahead__label{margin-left:4px;margin-right:0;padding-left:0;padding-right:4px}html[dir=rtl] .typeahead__label .typeahead__cancel-button{border-left:none;border-right:1px solid #c2e0ff;margin-left:0;margin-right:4px}html[dir=rtl] .typeahead__cancel-button{left:0;right:auto}html[dir=rtl] .typeahead__container .typeahead__field .typeahead__hint,html[dir=rtl] .typeahead__container .typeahead__field .typeahead__label-container,html[dir=rtl] .typeahead__container .typeahead__field [contenteditable],html[dir=rtl] .typeahead__container .typeahead__field input,html[dir=rtl] .typeahead__container .typeahead__field textarea{padding-left:32px;padding-right:6px}html[dir=rtl] .float-right{float:left!important}html[dir=rtl] .float-left{float:right!important}html[dir=rtl] .notifications-menu-item .notification-count{left:0;margin-left:-15px;right:-15px}html[dir=rtl] .notification-count-offcanvas{left:0;margin-left:10px;right:0}html[dir=rtl] .title-bar-right{text-align:left}.empty-notification-message{font-weight:700;margin:20px}.dt-green,a.dt-green:hover{background-color:#4caf50}#content,.container-width{margin-left:auto;margin-right:auto;max-width:1440px}#notification-list .new-button,#notification-list .read-button{padding:.85em}#notification-list .unread-notification-row{background-color:rgba(63,114,155,.19)}#notification-list .notification-group-header{background-color:#3f729b;color:#fff;font-weight:600;padding:.7rem}#notification-dropdown{background-color:unset;border:none;padding:0;width:500px}#notification-dropdown .sized-box{height:6px}#notification-dropdown .bordered-box{border-top-left-radius:0;border-top-right-radius:0;padding:1rem 0}#notification-dropdown .header{margin-bottom:1rem;padding:0 1rem}#notification-dropdown .button-group{margin-bottom:0}#notification-dropdown .button-group .button{font-size:1rem;padding:.5em 1em}#notification-dropdown #notification-list{margin:0}#notification-dropdown .notification-group-header{padding:.3rem .7rem}.new-notification-label{margin-left:5px}@media screen and (max-width:1024px){#notification-dropdown .sized-box{height:16px}}@media screen and (max-width:640px){#notification-dropdown{width:300px}#notification-dropdown .button-group .button{font-size:.75rem;padding:.75em 1em}#notification-dropdown .notification-row .cell{margin-left:.7rem;margin-right:0}#notification-dropdown #notification-list{margin-right:-1px}}.notifications-page #notification-list{margin:0 -10px}.notifications-page div.button-group{text-align:center}.notifications-page div.button-group .button{margin-right:.25rem}.help-icon{-webkit-filter:invert(69%) sepia(1%) saturate(0) hue-rotate(239deg) brightness(94%) contrast(86%);filter:invert(69%) sepia(1%) saturate(0) hue-rotate(239deg) brightness(94%) contrast(86%);height:15px}.help-button{margin-left:3px;margin-right:3px}.help-button-tile{margin-left:6px;margin-right:6px}.help-button-field{margin-left:3px;margin-right:3px}.help-section h3{font-size:1.6rem}.help-section h4{font-size:1.2rem}.help-modal-icon ul{margin-left:5%}.help-modal-icon li{list-style:none;margin-bottom:3%}.help-modal-icon img{height:40px;margin-right:5%;width:40px}div.help-more{float:right}div.help-more h5{font-size:1rem}.dropdown.menu>li.is-dropdown-submenu-parent>a.menu-white-dropdown-arrow:after{border-color:#fff transparent transparent}.dropdown.menu .is-submenu-item:hover{background-color:#3f729b;color:#fff}.dropdown.menu .is-submenu-item a:hover{color:#fff}.dropdown.menu .is-submenu-item a:hover img{-webkit-filter:invert(100%) sepia(100%) saturate(6%) hue-rotate(105deg) brightness(102%) contrast(102%);filter:invert(100%) sepia(100%) saturate(6%) hue-rotate(105deg) brightness(102%) contrast(102%)}@media screen and (max-width:640px){table.js-list tbody tr:nth-child(2n){background-color:#f1f1f1;border-bottom:0}#content #inner-content{margin:0}.bordered-box.list-box{padding-left:2px;padding-right:2px}}@media screen and (min-width:640px){.left-border-grey{border-left:1px solid #e6e6e6}}.dt_caret{border:solid #000;border-width:0 2px 2px 0;display:inline-block;padding:3px}.dt_caret.down{transform:rotate(45deg);-webkit-transform:rotate(45deg)}.dt_caret.right{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}.dt_caret.left{transform:rotate(135deg);-webkit-transform:rotate(135deg)}.dt_caret.up{transform:rotate(-135deg);-webkit-transform:rotate(-135deg)}.scrolling-wrapper{overflow-x:scroll;overflow-y:hidden;white-space:nowrap}#generation_map ul{background:url(../../../dt-assets/images/vline.png) repeat-y;list-style:none;margin:0 0 0 50px;padding:0}#generation_map ul.ul-gen-0{margin-left:0}#generation_map li{background:url(../../../dt-assets/images/node.png) no-repeat;color:#369;font-weight:700;line-height:20px;margin:0;padding:0 12px}#generation_map ul li.last{background:#fff url(../../../dt-assets/images/lastnode.png) no-repeat}#generation_map .first-section{margin-top:.5em}.inactive-gray,.inactive-gray a,.not-church-gray,.not-church-gray a{color:#d3d3d3}.accordion-menu .is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform:none!important;transform:none!important;-webkit-transform-origin:50% 50%!important;transform-origin:50% 50%!important}.accordion-menu .is-accordion-submenu-parent[aria-expanded=false]>a:after{-webkit-transform:rotate(90deg)!important;transform:rotate(90deg)!important;-webkit-transform-origin:50% 50%!important;transform-origin:50% 50%!important}.date_range_picker{background:#fff;border:1px solid #ccc;cursor:pointer;display:inline-block;padding:5px 10px;width:250px}.date_range_picker .dt_caret{float:right;margin:5px}.daterangepicker td,.daterangepicker th{padding:0}#metrics-sidemenu ul.menu.vertical.nested{display:none}.drill_down{list-style-type:none;margin-bottom:0}.drill_down li{display:inline;margin-right:3px}.drill_down li select{width:150px}input.dt-switch[type=checkbox]{display:none;height:0;visibility:hidden;width:0}label.dt-switch{background:grey;border-radius:100px;cursor:pointer;display:inline-block;height:20px;margin:0;position:relative;text-indent:-9999px;width:41px}label.dt-switch:after{background:#fff;border-radius:90px;content:"";height:16px;left:3px;position:absolute;top:2px;-webkit-transition:.3s;transition:.3s;width:16px}input.dt-switch:checked+label{background:#3f729b}input.dt-switch:checked+label:after{left:calc(100% - 3px);-webkit-transform:translateX(-100%);transform:translateX(-100%)}label.dt-switch:active:after{width:20px}.ul-no-bullets{list-style-type:none;margin:0}#user_modal_content .bordered-box{margin-bottom:20px}#user_modal_content #hero_stats .bordered-box{-ms-flex-preferred-size:19%;flex-basis:19%}#user_modal_content .user_modal_column{-ms-flex-preferred-size:50%;flex-basis:50%}@media screen and (max-width:640px){#user_modal_content #hero_stats .bordered-box{margin:5px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}#user_modal_content #hero_stats{margin-bottom:20px}#user_modal_content .user_modal_column{-ms-flex-preferred-size:100%;flex-basis:100%;padding:0!important}}.template-settings #multiplier .section-subheader{margin-bottom:4px}.template-settings #multiplier .section-subheader img{height:15px}.dt-status-square{border-radius:2px;display:inline-block;height:13px;width:13px}img.dt-icon{height:15px;width:15px}i.dt-icon,img.dt-icon{-webkit-filter:invert(18%) sepia(0) saturate(19%) hue-rotate(170deg) brightness(108%) contrast(98%);filter:invert(18%) sepia(0) saturate(19%) hue-rotate(170deg) brightness(108%) contrast(98%)}i.dt-icon{font-size:15px}i.dt-blue-icon,img.dt-blue-icon{-webkit-filter:invert(41%) sepia(42%) saturate(518%) hue-rotate(164deg) brightness(94%) contrast(100%);filter:invert(41%) sepia(42%) saturate(518%) hue-rotate(164deg) brightness(94%) contrast(100%)}i.dt-white-icon,img.dt-white-icon{-webkit-filter:invert(100%) sepia(100%) saturate(6%) hue-rotate(105deg) brightness(102%) contrast(102%);filter:invert(100%) sepia(100%) saturate(6%) hue-rotate(105deg) brightness(102%) contrast(102%)}i.dt-green-icon,img.dt-green-icon{-webkit-filter:invert(52%) sepia(77%) saturate(383%) hue-rotate(73deg) brightness(98%) contrast(83%);filter:invert(52%) sepia(77%) saturate(383%) hue-rotate(73deg) brightness(98%) contrast(83%)}i.dt-red-icon,img.dt-red-icon{-webkit-filter:invert(23%) sepia(34%) saturate(4972%) hue-rotate(343deg) brightness(121%) contrast(92%);filter:invert(23%) sepia(34%) saturate(4972%) hue-rotate(343deg) brightness(121%) contrast(92%)}i.dt-black-icon,img.dt-black-icon{-webkit-filter:invert(0) sepia(0) saturate(17%) hue-rotate(193deg) brightness(99%) contrast(101%);filter:invert(0) sepia(0) saturate(17%) hue-rotate(193deg) brightness(99%) contrast(101%)}.dt-metrics-plus-count{font-size:12px;font-weight:700;vertical-align:text-bottom}.dt-metrics-node-icon-small{font-size:15px;max-height:15px;max-width:15px;min-height:15px;min-width:15px}.error-text{color:red}.template-new-post .type-options{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:15px}.template-new-post .type-option.selected .type-option-border,.template-new-post .type-option:hover .type-option-border{background-color:#ecf5fc;border:1px solid #c2e0ff;border-radius:15px}.template-new-post .type-option{display:-webkit-box;display:-ms-flexbox;display:flex;padding-right:10px;-ms-flex-preferred-size:25%;flex-basis:25%}.template-new-post .type-option .type-option-border{border:1px solid #c2e0ff;border-radius:15px;padding:5px 10px;width:100%}.template-new-post .type-option input{-ms-flex-item-align:center;align-self:center;margin-bottom:0;margin-right:5px}.template-new-post .type-option .type-option-title{color:#3f729b;font-size:larger}.template-new-post .type-option .type-option-rows{display:inline-block}.template-new-post .type-option .type-option-rows div{display:block;margin-bottom:5px}.template-new-post .error-text{text-align:center}@media screen and (max-width:640px){.template-new-post .type-option{-ms-flex-preferred-size:100%;flex-basis:100%;margin-bottom:1.25em}}#record_history_activities{max-height:500px;min-height:500px;overflow-y:auto;padding-right:20px}.record-history-activity-block{border:1px solid #e8e8e8;border-radius:5px;margin-bottom:10px;max-height:70px;min-height:70px;padding:10px}.record-history-activity-block .record-history-activity-block-body{font-family:Arial,Helvetica,sans-serif}.record-history-activity-block .record-history-activity-block-body .record-history-activity-heading{font-size:14px;font-weight:700}.record-history-activity-block .record-history-activity-block-body .record-history-activity-gravatar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.record-history-activity-block .record-history-activity-block-body .record-history-activity-gravatar img{margin-right:10px}.record-history-activity-block .record-history-activity-block-body .record-history-activity-owner{font-size:13px;font-weight:700}.record-history-activity-block .record-history-activity-block-body .record-history-activity-date{color:#989898;font-size:13px;font-weight:400}.record-history-activity-block:hover{border:1px solid #000;color:#989898;cursor:pointer}.advanced-search-modal-form table tbody,.advanced-search-modal-form table tbody tr{border:none}.advanced-search-modal-form table tbody tr td{vertical-align:middle}.advanced-search-modal-form a,.advanced-search-modal-form input{margin-bottom:0}.advanced-search-modal-form-input{display:inline-block;margin-right:0;min-width:450px}.advanced-search-modal-form-button{max-height:40px;max-width:40px;min-height:40px;min-width:40px;padding:10px 5px 5px}.advanced-search-modal-form-button img{max-height:20px;max-width:20px;min-height:20px;min-width:20px}.advanced-search-modal-results-div{display:none}.advanced-search-modal-results-div table,.advanced-search-modal-results-div table tbody,.advanced-search-modal-results-div table tbody tr{border:none}.advanced-search-modal-results-div-col-results-list{max-width:450px;min-width:450px;vertical-align:top}.advanced-search-modal-results-div-col-post-type{max-width:150px;min-width:150px;alignment:right;vertical-align:top}.advanced-search-modal-results-div-col-post-type label{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results{height:400px;overflow-x:hidden;overflow-y:scroll;text-align:center}.advanced-search-modal-results-table,.advanced-search-modal-results-table tbody{border:none}.advanced-search-modal-results-table tbody tr{background:#fff;cursor:pointer;padding:0}.advanced-search-modal-results-table tbody tr:hover{background-color:#f5f5f5}.advanced-search-modal-results-table-section-head-options{background-color:#f5f5f5;cursor:default;padding:10px;text-align:left}.advanced-search-modal-results-table-section-head-options a{margin:0;max-height:20px;min-height:20px;padding:2px 5px}.advanced-search-modal-results-table-section-head-post-type{background-color:#f5f5f5;cursor:default;text-align:right}.advanced-search-modal-results-table-col-hits{min-width:250px;text-align:left}.advanced-search-modal-results-table-col-hits span{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-table-col-hits-type{min-width:50px;text-align:right}.advanced-search-modal-results-post-types-view-at-top{display:none}.advanced-search-modal-results-post-types-view-at-side{display:inline}@media screen and (max-width:840px){.advanced-search-modal-form td{padding:1px}.advanced-search-modal-form a,.advanced-search-modal-form input{margin-bottom:0}.advanced-search-modal-results-div td{padding:4px}.advanced-search-modal-form-input{display:inline-block;margin-right:0;min-width:250px}.advanced-search-modal-results-div-col-results-list{max-width:300px;min-width:300px;vertical-align:top}.advanced-search-modal-results-div-col-post-type{max-width:0;min-width:0}.advanced-search-modal-results-table-col-hits{min-width:250px;text-align:left}.advanced-search-modal-results-table-col-hits span{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-table-col-hits-type{min-width:50px;text-align:right}.advanced-search-modal-results-post-types-view-at-top{display:inline}.advanced-search-modal-results-post-types-view-at-top label{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-button{max-width:345px;min-width:345px}.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-button img{float:right;padding:5px 5px 2px}.advanced-search-modal-results-post-types-view-at-side,.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-content{display:none}}@media screen and (max-width:375px){.advanced-search-modal-form td{padding:1px}.advanced-search-modal-form a,.advanced-search-modal-form input{margin-bottom:0}.advanced-search-modal-results-div td{padding:4px}.advanced-search-modal-form-input{display:inline-block;margin-right:0;min-width:150px}.advanced-search-modal-results-div-col-results-list{max-width:250px;min-width:250px;vertical-align:top}.advanced-search-modal-results-div-col-post-type{max-width:0;min-width:0}.advanced-search-modal-results-table-col-hits{min-width:200px;text-align:left}.advanced-search-modal-results-table-col-hits span{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-table-col-hits-type{min-width:50px;text-align:right}.advanced-search-modal-results-post-types-view-at-top{display:inline}.advanced-search-modal-results-post-types-view-at-top label{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-button{max-width:300px;min-width:300px}.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-button img{float:right;padding:5px 5px 2px}.advanced-search-modal-results-post-types-view-at-side,.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-content{display:none}}@media screen and (max-width:340px){.advanced-search-modal-form td{padding:1px}.advanced-search-modal-form a,.advanced-search-modal-form input{margin-bottom:0}.advanced-search-modal-results-div td{padding:4px}.advanced-search-modal-form-input{display:inline-block;margin-right:0;min-width:150px}.advanced-search-modal-results-div-col-results-list{max-width:290px;min-width:290px;vertical-align:top}.advanced-search-modal-results-div-col-post-type{max-width:0;min-width:0}.advanced-search-modal-results-table-col-hits{min-width:190px;text-align:left}.advanced-search-modal-results-table-col-hits span{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-table-col-hits-type{min-width:50px;text-align:right}.advanced-search-modal-results-post-types-view-at-top{display:inline}.advanced-search-modal-results-post-types-view-at-top label{color:#4a4a4a;font-size:10pt}.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-button{max-width:270px;min-width:270px}.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-button img{float:right;padding:5px 5px 2px}.advanced-search-modal-results-post-types-view-at-side,.advanced-search-modal-results-post-types-view-at-top .advanced-search-modal-results-post-types-view-at-top-collapsible-content{display:none}}#release-modal{outline:transparent}#release-modal p img{display:block;margin:auto}#release-modal .release-banner{background:-webkit-gradient(linear,left bottom,left top,from(#79a2c2),to(#3e729a));background:linear-gradient(0deg,#79a2c2,#3e729a);border-bottom:1px solid #cacaca;color:#fff;display:block;left:0;position:absolute;top:0;width:100%}#release-modal .release-banner-text{margin:8px}#release-modal #release-modal-content{margin-top:75px}#release-modal .white-button{color:#f4f4f4}.dt-tab-wrapper{border-bottom:1px solid #d3d3d3}.dt-tab{background-color:#fff;border:1px solid #d3d3d3;line-height:1.71428571;padding:5px 10px}.dt-tab:hover{background-color:#d3d3d3}.dt-tab-active{border-bottom:1px solid #fff;border-top:1px solid gray}.dt-tab-active:hover{background-color:#fff}.dt-tab-content{margin:20px 10px 0}.dt-tab-content-heading{font-weight:bolder}.dt-hide-content{display:none}.side-menu-item-highlight{font-weight:700}.communication-channel-error{color:red;font-style:italic;margin:-12px 0 12px}#form_fields_records{overflow-x:auto!important}#form_fields_records .form-fields-record{display:-webkit-box;display:-ms-flexbox;display:flex}#form_fields_records .record-divider{background-color:#ecf5fc;display:none;margin:3px -15px 15px;text-align:center}#form_fields_records .record-divider span{margin:0;padding:0}#form_fields_records .record-removal-button{margin:5px;min-width:25px!important}#form_fields_records .landscape-record-removal-button{display:block}#form_fields_records .landscape-record-removal-button .record-removal-button{margin:10px 0 0}#form_fields_records .form-field{-webkit-margin-end:10px;margin-inline-end:10px;-ms-flex-preferred-size:200px;flex-basis:200px;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}#form_fields_records .form-fields-record-subsequent .field-value-copy-controls,#form_fields_records .form-fields-record-subsequent .help-text,#form_fields_records .form-fields-record-subsequent .section-subheader{display:none!important}#form_fields_records .dt_location_grid .typeahead__container button{overflow:hidden;white-space:nowrap;width:65px}@media only screen and (max-width:782px){#form_fields_records .form-fields-record{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#form_fields_records .form-field{-ms-flex-preferred-size:50px;flex-basis:50px}#form_fields_records .record-divider{display:block}#form_fields_records .landscape-record-removal-button{display:none}#form_fields_records .form-fields-record-subsequent .help-text,#form_fields_records .form-fields-record-subsequent .section-subheader{display:block!important}#form_fields_records .form-fields-record-subsequent .field-value-copy-controls{display:none!important}#form_fields_records .dt_location_grid .typeahead__container button{width:auto}}.button.select-button{border-radius:5px;margin-bottom:5px;margin-right:5px}.button.select-button:hover{background-color:#4caf50;color:#fff;opacity:.5}.button.select-button.empty-select-button,.button.select-button.empty-select-button:focus,.button.select-button[disabled]{background-color:#eee;color:#000}.button.select-button.selected-select-button,.button.select-button.selected-select-button:focus{background-color:#4caf50;color:#fff}.dt_multi_select .dt-icon{-webkit-filter:none;filter:none;margin-right:5px}.submitting-select-button{opacity:.5}.button.clear-date-button{background:#eee;border:1px solid #cacaca;border-left:0;color:#cc4b37}.button.clear-date-button:hover{background-color:#cc4b37;color:#fefefe}html[dir=rtl] .button.clear-date-button{border:1px solid #cacaca;border-right:0}.button.delete-button-style{background:#eee;border:1px solid #cacaca;border-left:0;border-radius:0;color:#cc4b37}.button.delete-button-style:hover{background-color:#cc4b37;color:#fefefe}html[dir=rtl] .button.delete-button-style{border:1px solid #cacaca;border-radius:0;border-right:0}.item-details-header{font-size:1.7rem}.item-details-header-row{margin-bottom:15px}.item-details-header-row .button{padding:.45em 1em}.item-details-header-row .label{font-size:.9rem}.contact-quick-button-number{background-color:#3f729b;border-radius:20px;color:#fff;font-size:10px;margin-left:3px;padding:2px 4px;position:absolute;top:0}.contact-quick-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-content:center;width:100%}.contact-quick-buttons img{height:20px;width:20px}.contact-quick-button{position:relative;width:-webkit-min-content;width:-moz-min-content;width:min-content;-webkit-box-flex:0;-ms-flex:0 1 100px;flex:0 1 100px;margin:5px 0 10px}.contact-quick-button p{font-size:12px;margin-bottom:0;word-spacing:100vw}.quick-action-menu a{vertical-align:middle}.quick-action-menu a img{height:20px;width:20px}#comment-activity-section{scroll-margin-top:60px;scroll-snap-margin-top:60px}#comment-activity-section .button.select-button:hover,#comment-activity-section .selected-select-button,#comment-activity-section .selected-select-button :focus{background-color:#3f729b}#comment-activity-section li{list-style-type:none}#comment-activity-section .tabs-title{margin-right:10px}#comment-activity-section .tabs-title input{margin:0}#comment-activity-section .tabs-title button{color:#3f729b;font-size:12px}#comment-activity-section .tabs-content{border:none}#comment-activity-section p{line-height:1.4}#comment-activity-section .gravatar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:center;align-self:center}#comment-activity-section .gravatar img{height:16px}#comment-activity-section .activity-block .comment-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;grid-gap:5px}#comment-activity-section #add-comment-button{height:3rem;margin-bottom:0}#comment-activity-section #add-comment-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}#comment-activity-section .comment-bubble{word-wrap:break-word;padding-bottom:2px}#comment-activity-section .comment-bubble .comment-text{min-height:1em}#comment-activity-section .comment-bubble .comment-text ul li{list-style:disc!important}#comment-activity-section .comment-bubble .comment-text ol br,#comment-activity-section .comment-bubble .comment-text ul br{display:none}#comment-activity-section .emoji{height:1.4rem;width:1.4rem}#comment-activity-section .edit-comment-controls a{font-size:12px}#comment-activity-section .edit-comment-controls img{height:10px}#comment-activity-section .edit-comment-controls object path{fill:red}#comment-activity-section .comment-reactions{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}#comment-activity-section .comment-reaction,#comment-activity-section .reactions__button{background-color:#f8f8f8;border-radius:100px;display:-webkit-box;display:-ms-flexbox;display:flex;margin-right:4px;margin-top:4px;padding:.1rem .5rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid transparent;cursor:pointer}#comment-activity-section .comment-reaction:hover,#comment-activity-section .reactions__button:hover{border-color:#8a8a8a}#comment-activity-section .comment-reaction{background-color:#f8f8f8;border-radius:100px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.9rem;height:1.6rem;line-height:.9rem;padding:.1rem .5rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid transparent;cursor:pointer}#comment-activity-section .comment-reaction *{pointer-events:none}#comment-activity-section .comment-reaction .emoji{height:1rem;width:1rem}#comment-activity-section .comment-reaction span+span{font-size:.8rem;padding-left:4px}#comment-activity-section .comment-reaction[data-own-reaction=true]{background-color:#def1ff;border-color:#3f729b}#comment-activity-section .comment-reaction[data-own-reaction=true]:hover{border-color:#3f729b}#comment-activity-section .comment-reaction:active{-webkit-transform:scale(.9);transform:scale(.9)}#comment-activity-section .reaction-controls{-webkit-box-align:center;-ms-flex-align:center;align-items:center}#comment-activity-section .add-reaction-svg,#comment-activity-section .reaction-controls{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}#comment-activity-section .add-reaction-svg:before{background-color:#fff;border-radius:100px;content:"+";font-size:.8rem;font-weight:600;line-height:.8rem;padding:0 .1rem;pointer-events:none;position:absolute;right:-7px;text-align:center;top:3px}#comment-activity-section .reactions__button{color:#8a8a8a;height:100%;padding-right:.7rem}#comment-activity-section .reactions__button[open]:before{background:transparent;bottom:0;content:" ";cursor:default;display:block;left:0;position:fixed;right:0;top:0;z-index:8}#comment-activity-section .reactions__dropdown{border-radius:6px;bottom:35px;-webkit-box-shadow:0 8px 24px 0 hsla(210,8%,62%,.2);box-shadow:0 8px 24px 0 hsla(210,8%,62%,.2);left:8px;-webkit-transform:translate(-20px,5px);transform:translate(-20px,5px);width:215px;z-index:9}#comment-activity-section .reactions__dropdown:after{border:7px solid transparent;border-top-color:#fff;bottom:-14px;content:"";left:20px;position:absolute}#comment-activity-section .reactions__dropdown:before{border:8px solid transparent;border-top-color:#cacaca;bottom:-16px;content:"";left:19px;position:absolute}#comment-activity-section .add-reaction{margin:0 .2rem}#comment-activity-section .add-reaction:hover{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-transition:all .1s ease;transition:all .1s ease}#comment-activity-section .comment-controls{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-content:space-between}#comment-activity-section .comment-controls>audio{width:100%}#comment-activity-section .edit-comment-controls{margin-right:10px;margin-top:4px}#comment-activity-section .comment-bubble,#comment-activity-section .comment-controls{margin:0 0 0 2em;padding:0 0 0 15px;text-align:left}#comment-activity-section html[dir=rtl] .comment-bubble,#comment-activity-section html[dir=rtl] .comment-controls{margin:0 2em 0 0;padding:0 15px 0 0;text-align:right}#comment-activity-section .comment-date{font-size:12px;margin-right:20px}#comment-activity-section .translation-bubble{border:0;border-left:2px solid #8a8a8a;margin:0 0 0 2em;padding-left:1em}#comment-activity-section .translate-button{font-size:.85em;margin:0 0 0 2em;padding:0 0 0 15px}#comment-activity-section html[dir=rtl] .translation-bubble{border:0;border-right:2px solid #8a8a8a;margin:0 2em 0 0;padding-right:1em}#comment-activity-section html[dir=rtl] .translate-button{margin:0 2em 0 0;padding:0 15px 0 0}#comment-activity-section .activity-block{margin-top:15px}#comment-activity-section .activity-bubble{word-wrap:break-word;color:gray;font-style:italic;-webkit-border-start:3px solid #dcdcdc;border-inline-start:3px solid #dcdcdc;-webkit-padding-start:15px;margin:0;padding-inline-start:15px;-webkit-margin-start:2em;margin-inline-start:2em;padding-bottom:2px}#comment-activity-section .revert-activity{float:right}#comment-activity-section .revert-arrow-img{height:17px;margin-right:15px;padding-top:2px}#comment-activity-section .mentions-input-box textarea.loading-gif{background:url(../../../dt-assets/images/ajax-loader.gif) no-repeat 99% 6px}#comment-activity-section .mentions-input-box .mentions strong span{font-weight:300}#comment-activity-section #add-comment-section{border:1px solid #dcdcdc;border-radius:3px;margin:0 0 1.06667rem}#comment-activity-section #add-comment-section select,#comment-activity-section #add-comment-section textarea{border:none;margin-bottom:0}#comment-activity-section #add-comment-section select{-webkit-box-shadow:none;box-shadow:none}#comment-activity-section #add-comment-section .section-subheader{padding-left:.5rem;padding-right:.15rem;padding-top:.53333rem}.display-fields ul{list-style-type:none;margin-left:0}.display-fields img{height:15px}#details-tile .detail-snippet-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}#details-tile .detail-snippet{display:none;margin-bottom:5px;overflow:hidden;padding-right:15px;text-overflow:ellipsis;white-space:nowrap}#details-tile .detail-snippet img{height:15px;margin-right:3px;vertical-align:middle;width:15px}#details-tile .detail-snippet .snippet-field-name{font-size:small}@media screen and (max-width:640px){#details-tile .detail-snippet{max-width:100%}}#details-tile .phone-open-with-container{background:#fefefe;border:1px solid #cacaca;border-radius:5px;padding:.5em}#details-tile .phone-open-with-container ul{margin:0}#details-tile .phone-open-with-container ul li{list-style:none}html[dir=rtl] .input-group-field{text-align:right}.group-progress-button-wrapper{text-align:center;-webkit-box-flex:1;-ms-flex:1 0 80px;flex:1 0 80px}.group-progress-button{background-color:#3f729b;border-radius:5px;height:60px;opacity:.5;padding:10px;text-align:center;width:65px}.members-section{border:1px solid #ccc}.members-section #empty-members-list-message{padding:10px}.members-section .member-row{display:-webkit-box;display:-ms-flexbox;display:flex;padding:10px}.members-section .member-row:hover{background-color:hsla(0,0%,80%,.5)}.members-section .member-row .member-row-actions{color:grey;margin:0;padding:0 5px}.members-section .member-row i{padding:0 2px}.members-section .member-row .dt-icon{margin-right:5px;vertical-align:text-top}.members-header button{border:1px solid #ccc;border-bottom:2px solid #fff;height:36px;margin-bottom:-1px;padding:5px 10px;vertical-align:bottom;width:-webkit-max-content;width:-moz-max-content;width:max-content}.members-header button img{margin-left:2px}.detail-notification-box{border:none;color:#fff;text-align:center}.detail-notification-box h4{font-weight:700}.detail-notification-box img{margin:0 10px}.accept-contact .bordered-box{background-color:#3f729b}.accept-contact .bordered-box .accept-button{background-color:#4caf50}.accept-contact .bordered-box .decline-button{background-color:#f43636}.accept-contact .bordered-box .button{margin:0 10px}select.color-select{background-image:url("data:image/svg+xml;utf8,");border-radius:10px;color:#fff;font-weight:700;text-shadow:rgba(0,0,0,.45) 0 0 6px}select.color-select option{background-color:#fff;color:#000}.bordered-box .section-header{display:-webkit-box;display:-ms-flexbox;display:flex}.bordered-box .section-chevron{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:0;margin-inline-end:0}.bordered-box .section-chevron img{vertical-align:middle;width:20px}.bordered-box .chevron_down,.bordered-box.collapsed .chevron_up{display:none}.bordered-box.collapsed .chevron_down{display:block}.bordered-box.collapsed .section-body,.hidden-grid-item{display:none}.typeahead__query{z-index:1!important}.assigned-to-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.assigned-to-row .status-square{border-radius:2px;display:inline-block;height:13px;width:13px}.assigned-to-row>span{margin-right:10px}.dt_user_select .typeahead__cancel-button{line-height:1.5;visibility:inherit}#tasks-modal .existing-task-action{color:#3f729b;font-size:10px;margin:0 5px}.details-second-bar a,.details-second-bar button,.details-second-bar span{font-size:12px}.details-second-bar .title{font-size:15px}.details-second-bar .record-name-tagline{display:inline-block;font-size:10px}.details-second-bar .record-name-tagline a,.details-second-bar .record-name-tagline span{font-size:10px;margin:0;vertical-align:baseline}.details-second-bar .dt-record-type-icon{height:10px;vertical-align:baseline;width:10px}.details-second-bar .control-buttons{grid-gap:.3em}.details-second-bar .details-bar-picture{cursor:pointer;vertical-align:middle}.details-second-bar img.details-bar-picture{border-radius:5px;height:55px;min-width:55px;-o-object-fit:cover;object-fit:cover;width:55px}.details-second-bar i.details-bar-picture{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:55px;height:40px;opacity:.3}.details-second-bar i.details-bar-picture:before{-ms-flex-item-align:center;align-self:center}.is-stuck #second-bar-small{border-top:.5rem solid #3f729b}.is-stuck #second-bar-small img.details-bar-picture{height:40px;min-width:40px;width:40px}.is-stuck #second-bar-small i.details-bar-picture{font-size:40px;height:40px}.is-stuck #second-bar-small .mobile-nav-actions{display:none}.is-stuck #second-bar-small #record-tagline{display:none;height:0;opacity:0}.is-stuck .hide-on-scroll{display:none}#second-bar-small{border-top:none}#second-bar-small #record-tagline{opacity:1;-webkit-transition:all .3s;transition:all .3s}#second-bar-small .mobile-nav-actions{margin-bottom:5px;grid-gap:5px}.dt_user_select{margin-bottom:15px}.add-link-dropdown{display:inline-block;margin:0 5px;position:absolute}.add-link-dropdown:before{content:"";cursor:pointer;height:25px;position:absolute;-webkit-transform:translate(-18px,-3px);transform:translate(-18px,-3px);width:50px}.add-link-dropdown__content{background-color:#fff;border:1px solid #cacaca;-webkit-box-shadow:0 8px 16px 0 rgba(0,0,0,.2);box-shadow:0 8px 16px 0 rgba(0,0,0,.2);display:none;min-width:160px;position:absolute;-webkit-transform:translateX(-15%);transform:translateX(-15%);z-index:1}html[dir=rtl] .add-link-dropdown__content{-webkit-transform:translateX(15%);transform:translateX(15%)}.add-link-dropdown:hover .add-link-dropdown__content,.add-link-dropdown__content:hover{display:block}.add-link__option{cursor:pointer;padding:5px 10px}.add-link__option:hover{background-color:#3f729b;color:#fff}.link-section .section-subheader{display:none}.link-section .section-subheader:has(+div){display:block}.link-section .input-group{margin-bottom:5px}#assigned_to_user_modal #filter-tabs img{display:inline-block;height:20px;margin-right:2px;vertical-align:middle;width:20px}.dispatcher-tile .populated-list .assigned-to-row>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dispatcher-tile .populated-list .assigned-to-row:hover{background-color:#f2f2f2}.dispatcher-tile .populated-list .assigned-to-row{border-bottom:1px solid hsla(0,0%,50%,.31);padding:5px 5px 0}.dispatcher-tile .populated-list{max-height:250px;overflow-y:scroll}.health-item{border-radius:100%;color:#000;cursor:pointer;display:none;font-size:16px;font-style:italic;height:50px;margin:auto;position:absolute;text-align:center;width:50px}.health-item img{-webkit-filter:grayscale(1) opacity(.75);filter:grayscale(1) opacity(.75);height:50px;width:50px}.health-item i{-webkit-filter:grayscale(1) opacity(.2);filter:grayscale(1) opacity(.2);font-size:50px}.practiced-item{-webkit-filter:none!important;filter:none!important}.practiced-button{background-color:#3f729b!important;opacity:unset!important}.practiced-button img{-webkit-filter:none!important;filter:none!important}.health-circle{border:3px dashed #a9a9a9;border-radius:100%;display:block;height:280px;margin:auto;width:280px}.health-grid{display:inline-block;height:100%;margin-left:auto;margin-right:auto;position:relative;width:100%}.committed{border:3px solid #4caf50!important}.group-progress-button img{-webkit-filter:grayscale(1) contrast(1.35);filter:grayscale(1) contrast(1.35)}.empty-health{height:35px;margin-left:auto;margin-right:auto;margin-top:40%;width:35px}.empty-health-text{font-style:italic;margin-left:-15%;margin-top:-15%;text-align:center}#content.template-merge-post-details table,#content.template-merge-post-details tbody,#content.template-merge-post-details td,#content.template-merge-post-details tr{border:none}#content.template-merge-post-details #main_header{margin-bottom:10px}#content.template-merge-post-details #main_header .bordered-box{text-align:center}#content.template-merge-post-details #main_header #select_current_primary_record{max-width:60%;min-width:60%}#content.template-merge-post-details #main_archiving{margin-bottom:10px}#content.template-merge-post-details #main_archiving .main-archiving-primary-switch-but-div{text-align:center}#content.template-merge-post-details #main_archiving #main_archiving_fields_div{max-height:800px!important;min-height:500px!important;overflow:auto}#content.template-merge-post-details #main_primary{margin-bottom:10px}#content.template-merge-post-details #main_primary #main_primary_fields_div{max-height:800px!important;min-height:500px!important;overflow:auto}#content.template-merge-post-details #main_updated{margin-bottom:10px}#content.template-merge-post-details #main_updated #main_updated_fields_div{max-height:800px!important;min-height:500px!important;overflow:auto}#content.template-merge-post-details #main_footer .bordered-box{text-align:center}.merge-modal{border:1px solid #3f729b;border-radius:10px;padding:0}.merge-modal-header{background-color:#3f729b;color:#fff;text-align:center}.merge-modal-heading{font-size:1.5rem;padding:10px 0}.merge-modal-subheading{display:inline-block;font-size:1.25rem;font-weight:700;margin-bottom:0;padding:10px 0;text-align:center;width:100%}.merge-modal-spinner{display:inline-block}.merge-modal-no-dups-message{display:none;margin-top:20px;text-align:center}.merge-modal-close{float:right;margin-top:15px}.merge-modal-contact-row{background-color:#f2f2f2;overflow:hidden;padding:2%}.merge-modal-contact-name{color:#3f729b;font-weight:700}.merge-modal-contact-info{font-size:16px;font-weight:400}.merge-modal-contact-row img{max-height:1em;max-width:1em}.merge-modal-button{float:right;padding-left:10%}.duplicates-detected-button{margin-bottom:0;padding:.5em}#content.archive-template{max-width:100%}.filter{border-bottom:1px solid #e2e2e2;border-top:1px solid #e2e2e2;margin:0 -1rem;padding:0 1rem 10px;width:calc(100% + 2rem)}.filter--closed{padding-bottom:0}.filter__title:hover{color:#2196f3}.filter__title:before{content:"▼";float:right}.filter--closed .filter__title:before{content:"▶";float:right}.filter--closed :not(.filter__title){display:none}.filter__title{cursor:pointer}.filter input,.list-views input{margin:0 .2rem 0 0}.typeahead__query.disabled{position:relative}.typeahead__query.disabled:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:100}.filter label:hover,.list-views label:hover{color:#2196f3}.list-views{margin-bottom:.5rem}.list-views__sub{margin-left:20px}.list-view{-webkit-column-gap:.2rem;-moz-column-gap:.2rem;column-gap:.2rem;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex}.list-view__count{float:right}.filter-list-name,.list-view__text{text-overflow:ellipsis;-webkit-box-flex:1;-ms-flex-positive:1;display:inline-block;flex-grow:1;overflow:hidden;white-space:nowrap}.js-filter-checkbox-label{-webkit-column-gap:.2rem;-moz-column-gap:.2rem;column-gap:.2rem;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex}.priorities-show-all{float:right}.priorities-show-all>span{font-size:60%}#records-table th{cursor:pointer}#list-filter-tabs{margin-top:10px}#list-filter-tabs .is-active a,#list-filter-tabs .is-active a:focus{background-color:#3f729b;color:#fff}#list-filter-tabs .accordion-title{font-size:inherit;font-weight:700;padding:.75rem 1rem}#list-filter-tabs .accordion-title .tab-count-span{font-size:12px;font-weight:100}.show-closed-switch{display:inline-block}.show-closed-switch .switch{display:inline-block;margin-bottom:0;vertical-align:middle}table.table-remove-top-border thead{border-top:0}table.js-list{table-layout:auto;word-wrap:break-word;white-space:nowrap;width:100%}@media screen and (min-width:1024px){table.js-list td{max-width:250px}}.table-container{display:block;overflow-x:auto}.table-container,.table-container #records-table{transform:rotateX(180deg);-ms-transform:rotateX(180deg);-webkit-transform:rotateX(180deg)}table.js-list th[data-id=name]{background-color:#fff;left:32px;position:sticky}table.js-list td[data-id=name]{background-color:inherit;left:32px;position:sticky;z-index:101}table.js-list th[data-id=index]{background-color:#fff;left:-1px;position:sticky}table.js-list td[data-id=index]{background-color:inherit;left:-1px;position:sticky;z-index:100}table.js-list th[data-id=profile_pic]{background-color:#fff;left:32px;position:sticky}table.js-list td[data-id=profile_pic]{background-color:inherit;left:32px;position:sticky}table.js-list img.list-image{border-radius:5px;height:32px;min-width:32px;-o-object-fit:cover;object-fit:cover;vertical-align:middle;width:32px}table.js-list i.list-image{font-size:32px;opacity:.125}.current-filter-list{background:#ecf5fc;border:1px solid #c2e0ff;border-radius:2px;font-size:.875rem;margin-bottom:.375rem;margin-right:4px;padding:4px 0 4px 4px;position:relative}.current-filter-list-close{border-left:1px solid #c2e0ff;cursor:pointer;font-family:Arial,sans-serif;font-weight:300;margin-left:5px;padding:7px 5px}.current-filter-list-close:hover{background:#c2e0ff;color:#fff}.current-filter-list-excluded{background:#fcecec;border:1px solid #ffc2c2;border-radius:2px;font-size:.875rem;margin-bottom:.375rem;margin-right:4px;padding:4px 0 4px 4px;position:relative}.current-filter-list-excluded .current-filter-list-close{border-left:1px solid #ffc2c2}.current-filter-list-excluded .current-filter-list-close:hover{background:#ffc2c2;color:#fff}.current-filter{background:#ecf5fc;border:1px solid #c2e0ff;border-radius:2px;font-size:.875rem;margin-bottom:.375rem;margin-right:4px;padding:4px;position:relative}.current-filter-label-button{color:#000;cursor:default;margin:0 0 0 4px}.current-filter-label-button:hover{color:#cecece;cursor:pointer;margin:0 0 0 4px}.current-filter-excluded{background:#fcecec;border:1px solid #ffc2c2;border-radius:2px;font-size:.875rem;margin-bottom:.375rem;margin-right:4px;padding:4px;position:relative}#content table thead .sortable th{background-image:url(../../../dt-assets/images/sort_both.png);background-position:100%;background-repeat:no-repeat;padding-right:1.5rem}#content table thead .sortable .sorting_desc{background-image:url(../../../dt-assets/images/sort_desc.png)}#content table thead .sortable .sorting_asc{background-image:url(../../../dt-assets/images/sort_asc.png)}#filter-modal{padding:10px 0 0}#filter-modal .tabs-title>a{display:-webkit-box;display:-ms-flexbox;display:flex;padding:1.25rem 0 1.25rem 15px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#filter-modal .tabs-title__icon{height:1rem;margin-right:.7rem;width:1.2rem}#filter-modal h3{margin-left:10px}#filter-modal .vertical.tabs{background-color:#3f729b;border:none;max-height:500px;overflow-x:hidden;overflow-y:auto}#filter-modal .vertical.tabs .tabs-title>a{color:#fff}#filter-modal .vertical.tabs .tabs-title>a:hover{background-color:#224f72}#filter-modal .vertical.tabs .tabs-title>a:focus,#filter-modal .vertical.tabs .tabs-title>a[aria-selected=true]{background-color:#224f72;color:#fff}#filter-modal .tabs-content{min-height:400px}#filter-modal .filter-modal-left{background-color:#3f729b}#filter-modal .filter-modal-right{background-color:#f2f2f2;border:none}#filter-modal .button-cancel{background-color:#f2f2f2;color:#000;margin:5px 0}#filter-modal .confirm-buttons{text-align:end}#filter-modal .grid-container{padding:0}#filter-modal #new-filter-name,#filter-modal .confirm-filter-records{margin:5px 0}.list-name-link{display:inline-block;min-height:1.5em;width:100%}.status--unassigned{color:#999}.status--accepted{color:#4caf50}.status--paused{color:#ff9800}.status--closed{color:#333}.status--unassignable{color:#ff9800}.milestone--belief{color:#4caf50}.milestone--baptized,.milestone--baptizing{color:#2196f3}.milestone--can_share,.milestone--in_group,.milestone--sharing{color:#4caf50}.milestone--planting{color:#9c27b0}.group-status--no_value{color:#000}.group-status--active_pre_group{color:#ff9800}.group-status--active_church,.group-status--active_group{color:#4caf50}.group-status--inactive_church,.group-status--inactive_group,.group-status--inactive_pre_group{color:#f43636}#table-content tr{cursor:pointer}#table-content tr ul{list-style:none;margin:0;max-height:100px}#table-content tr ul,#table-content tr ul li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#table-content tr:hover{background-color:#ecf5fc}.list_field_picker ul{-webkit-column-count:1;-moz-column-count:1;column-count:1;margin-bottom:10px}@media screen and (min-width:640px){.list_field_picker ul{-webkit-column-count:4;-moz-column-count:4;column-count:4}}.bulk_edit_checkbox{cursor:default;display:none}.bulk_edit_checkbox input[type=checkbox]{margin:0}.bulk_edit_on .bulk_edit_checkbox{display:table-cell}#bulk_edit_picker .button-group.small .button{border:1px solid #ccc}#bulk_edit_picker .button-group.small .button.selected-select-button{border:none}#bulk_add-comment-section{background:#fefefe;border:1px solid #dcdcdc;border-radius:3px;margin:0 0 1.06667rem}#bulk_add-comment-section select,#bulk_add-comment-section textarea{border:none;margin-bottom:0}#bulk_add-comment-section select{-webkit-box-shadow:none;box-shadow:none}#bulk_add-comment-section .section-subheader{padding-left:.5rem;padding-right:.15rem;padding-top:.53333rem}#bulk_comment-input{margin:0}.icon-star{height:1em;width:1em;fill:#c7c6c1}.icon-star.selected{fill:#ffc105}@media screen and (max-width:1024px){#table-content tr{cursor:pointer;padding:10px}#table-content tr td{padding:0}#table-content tr .mobile-list-field-name{display:inline-block;font-size:10px;line-height:20px;margin-right:5%;overflow:hidden;vertical-align:top;white-space:nowrap;width:20%}#table-content tr .mobile-list-field-value{display:inline-block;overflow:hidden;white-space:nowrap;width:70%}#table-content tr .mobile-list-field-value ul{white-space:normal}#table-content tr ul li{display:inline}#table-content tr:hover{background-color:#ecf5fc}}.dt-radio.button-group label{background-color:transparent;color:#000;display:inline;padding:0 20px 0 5px}.small-text{font-size:.8rem}.list-dropdown-submenu-icon{height:15px;margin-right:6px;vertical-align:bottom;width:15px}.list_action_section{background-color:#ecf5fc;border-radius:5px;display:none;margin:30px 0;padding:10px 30px 5px}.list_action_section .list-action-close-button,.list_action_section .list-action-event-buttons{float:right;position:relative}#user-management-tools{padding:15px}#user-management-tools #user-chart{padding-left:15px;padding-right:15px;position:relative}#user-management-tools #user-chart #page-title{position:absolute}#user-management-tools #user-chart #multipliers_table{width:100%}#user-management-tools #user-chart #multipliers_table .user_row{cursor:pointer}#user-management-tools #user-chart #multipliers_table select,#user-management-tools #user-chart #multipliers_table_filter input{margin-bottom:0}#user_modal{background-color:#e2e2e2;max-width:100%}#user_modal #hero_status p{font-size:2rem}#user_modal .tabs-content{padding:0}#user_modal .tabs,#user_modal .tabs-content{background:none;border:none}#user-add-user label{font-weight:700}#user-add-user .grid-x{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media print,screen and (min-width:40em){#user-add-user .grid-x>.medium-6{width:48%}}#map-wrapper{position:relative}#map,#map-wrapper{height:800px;width:100%}#map{left:0;top:0;z-index:1}#legend,#map{position:absolute}#legend{left:10px;right:10px;top:10px;z-index:2}#data{word-wrap:break-word}.legend{background-color:#fff;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);font:12px/20px Roboto,Arial,sans-serif;opacity:.9;padding:10px}.legend h4{margin:0 0 10px}#spinner{display:none;left:50%;position:absolute;top:50%;z-index:20}.spinner-image{width:30px}.info-bar-font{font-size:1.5em;padding-top:9px}.border-left{border-left:1px solid #d3d3d3;padding:0 10px}#add_records_div{left:10px;max-height:100%;overflow-x:auto;position:absolute;top:90px;z-index:2}.add-records-div{background-color:#fff;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);display:none;font:12px/20px Roboto,Arial,sans-serif;opacity:.9;padding:10px;width:300px}.close-add-records-div{cursor:pointer}#geocode-details{position:absolute;right:10px;top:15%;z-index:2}.geocode-details{background-color:#fff;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);display:none;font:12px/20px Roboto,Arial,sans-serif;opacity:.9;padding:10px;width:300px}.close-details{cursor:pointer}#map-wrapper #legend img{height:30px;width:30px}#map-wrapper #legend #map-type{padding:0 10px}#map-wrapper #legend #map-type button{margin-bottom:0;padding:2px}#map-wrapper #legend #map-type button.selected-select-button img{-webkit-filter:invert(100%) sepia(0) saturate(7481%) hue-rotate(180deg) brightness(109%) contrast(100%);filter:invert(100%) sepia(0) saturate(7481%) hue-rotate(180deg) brightness(109%) contrast(100%)}#map-wrapper #legend .map-option-buttons button{margin:0 0 0 3px}#map-wrapper #legend #loading-legend span{font-size:14px;margin:0 5px;vertical-align:middle}.timechart{height:400px}.day-activities__title{background-color:#3f729b;color:#fff;font-size:1.1rem;padding:.1rem .3rem}.post-activities{margin-bottom:.5rem}.post-activities__icon{color:#3f729b;margin-right:.1rem}.post-activities__title{color:#3f729b;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.post-activities__item{padding-left:1.4rem}.post-activities__item--no-title{background-color:rgba(63,114,155,.19);padding-left:1.4rem}.activity__more-state,.fields__more-state{display:none}.fields__less-link,.fields__more-link{color:#3f729b;cursor:pointer;display:inline;padding:0 .5rem;text-decoration:underline}.activity__less-link,.fields__less-link{display:none}.activity__more-details,.fields__more-details{font-size:0;max-height:0;opacity:0;-webkit-transition:.25s ease;transition:.25s ease}.fields__more-state:checked~.fields__more-details{font-size:inherit;max-height:100em;opacity:1}.fields__more-state:checked~.fields__more-link{display:none}.fields__more-state:checked~.fields__less-link{display:inline}.activity__more-state:checked~.post-activities__item .activity__more-details{font-size:inherit;max-height:100em;opacity:1}.activity__more-state:checked+.post-activities__title .activity__more-link{display:none}.activity__more-state:checked+.post-activities__title .activity__less-link{display:inline}#activity_highlights .highlights-table{table-layout:fixed}#activity_highlights .highlights-table tr td:first-child{width:90%}#activity_highlights .highlights-table.striped tr:nth-child(2n){background-color:#ecf5fc;border-bottom:0}#activity_highlights h4{color:#3f729b;margin-top:1em}#activity_highlights #comment-filter{width:60px}#activity_highlights .left-margin{margin-left:.6666666667rem}#activity_highlights .comment{margin-bottom:.5rem}@media print{*{background:transparent!important;color:#000!important;-webkit-filter:none!important;filter:none!important;-ms-filter:none!important;text-shadow:none!important}a,a:visited{color:#444!important;text-decoration:underline}a:after,a:visited:after{content:" (" attr(href) ")"}a abbr[title]:after,a:visited abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.page-navigation,.respond-form,.sidebar,.wp-prev-next,nav{display:none}} \ No newline at end of file From 5b80ef82f6c4e6334ac98d418a8c6513cf0a8890 Mon Sep 17 00:00:00 2001 From: Nath Date: Mon, 16 Dec 2024 12:02:23 +0000 Subject: [PATCH 17/48] feat: add module selection --- .../admin/components/setup-wizard-modules.js | 67 +++++++++++++++---- dt-core/admin/components/setup-wizard.js | 32 ++++----- 2 files changed, 69 insertions(+), 30 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index 3a77e6110..54a9ef7fe 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -1,18 +1,11 @@ import { html, css, + repeat, } from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; import { OpenLitElement } from './setup-wizard-open-element.js'; export class SetupWizardModules extends OpenLitElement { - static styles = [ - css` - :host { - display: block; - } - `, - ]; - static get properties() { return { step: { type: Object }, @@ -20,16 +13,19 @@ export class SetupWizardModules extends OpenLitElement { stage: { type: String, attribute: false }, useCases: { type: Array, attribute: false }, option: { type: Object, attribute: false }, + availableModules: { type: Array, attribute: false }, + selectedModules: { type: Array, attribute: false }, }; } constructor() { super(); - - this.stage = 'prompt'; + this.stage = 'work'; this.data = window.setupWizardShare.data; this.useCases = []; this.option = {}; + this.availableModules = []; + this.selectedModules = []; } firstUpdated() { @@ -43,8 +39,7 @@ export class SetupWizardModules extends OpenLitElement { this.useCases = useCaseKeys.map( (useCaseKey) => this.data.use_cases[useCaseKey], ); - - console.log(useCaseKeys, this.useCases); + this.availableModules = this.data.modules; } back() { @@ -74,15 +69,26 @@ export class SetupWizardModules extends OpenLitElement { break; } } - selectOption(option) { this.option = option; + this.selectedModules = option.recommended_modules; + } + toggleModule(key) { + if (this.selectedModules.includes(key)) { + const index = this.selectedModules.findIndex((module) => module === key); + this.selectedModules = [ + ...this.selectedModules.slice(0, index), + ...this.selectedModules.slice(index + 1), + ]; + } else { + this.selectedModules = [...this.selectedModules, key]; + } } render() { return html`
-
+
${this.stage === 'prompt' ? html`

Time to customize what fields are available.

@@ -126,6 +132,39 @@ export class SetupWizardModules extends OpenLitElement { : ''}
+
+

Available Modules

+
+ ${Object.keys(this.availableModules).length > 0 + ? html` +
+ ${repeat( + this.availableModules, + (module) => module.key, + (module) => { + return html` + + `; + }, + )} +
+ ` + : ''} +
+
` : ''} ${this.stage === 'follow-up' diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 0e57b07dd..26a9da99f 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -121,22 +121,18 @@ export class SetupWizard extends LitElement { flex-direction: column; min-block-size: 80vh; } - .cover > * { margin-block: 0.5rem; } - + .cover > .content { + margin-block-end: auto; + } .cover > :first-child:not(.content) { margin-block-start: 0; } - .cover > :last-child:not(.content) { margin-block-end: 0; } - - .cover > .content { - margin-block-end: auto; - } /* Utilities */ .ms-auto { margin-left: auto; @@ -196,21 +192,25 @@ export class SetupWizard extends LitElement { .toggle { position: relative; display: inline-block; - input { display: none; } - span { + div { display: inline-block; padding-block: 1rem; - background-color: var(--default-dark); + background-color: var(--default-color); border-radius: 8px; width: 100%; text-align: center; } - input:checked + span { + input:checked + div { background-color: var(--secondary-color); color: white; + h1, + h2, + h3 { + color: white; + } } } .breadcrumbs { @@ -442,23 +442,23 @@ export class SetupWizard extends LitElement {

Stepper

From ad223ac7b22e094ebcf2ce7664e296d6008d9bb6 Mon Sep 17 00:00:00 2001 From: Nath Date: Mon, 16 Dec 2024 12:03:55 +0000 Subject: [PATCH 18/48] feat: add backLabel and nextLabel to controls --- dt-core/admin/components/setup-wizard-controls.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-controls.js b/dt-core/admin/components/setup-wizard-controls.js index 441ce9b68..7d0f74b62 100644 --- a/dt-core/admin/components/setup-wizard-controls.js +++ b/dt-core/admin/components/setup-wizard-controls.js @@ -6,6 +6,8 @@ export class SetupWizardControls extends OpenLitElement { return { translations: { type: Object }, hideBack: { type: Boolean }, + backLabel: { type: String }, + nextLabel: { type: String }, }; } back() { @@ -20,12 +22,10 @@ export class SetupWizardControls extends OpenLitElement { ${this.hideBack ? '' : html` - + `}
`; From 5a68fc2cc73eb274680ef65c8367a6a010698e76 Mon Sep 17 00:00:00 2001 From: corsacca Date: Tue, 17 Dec 2024 12:47:53 +0100 Subject: [PATCH 19/48] Plugins step * Allow extensions plugins list to be referenced * List plugins on plugins step * implement next label * Move admin api for installing plugin to shared js * table view for plugins * fix * add suggested plugins and modules --- .../admin/components/setup-wizard-plugins.js | 91 ++++++++++++++++++- dt-core/admin/components/setup-wizard.js | 44 +++++++++ dt-core/admin/js/dt-extensions.js | 82 +++-------------- dt-core/admin/js/dt-shared.js | 61 +++++++++++++ dt-core/admin/menu/menu-setup-wizard.php | 89 ++++++++++-------- .../menu/tabs/tab-featured-extensions.php | 11 +-- 6 files changed, 260 insertions(+), 118 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index 44b6f6196..e5910c779 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -19,20 +19,107 @@ export class SetupWizardPlugins extends OpenLitElement { firstStep: { type: Boolean }, }; } + constructor() { + super(); + this.plugins = window.setupWizardShare.data.plugins; + //@todo get list of recommended plugins + } back() { this.dispatchEvent(new CustomEvent('back')); } - next() { + async next() { + const plugins_to_install = this.plugins.filter((plugin) => plugin.selected); + + for (let plugin of plugins_to_install) { + if (!plugin.installed) { + plugin.installing = true; + this.requestUpdate(); + await window.dt_admin_shared.plugin_install(plugin.download_url); + await window.dt_admin_shared.plugin_activate(plugin.slug); + plugin.installing = false; + plugin.installed = true; + // plugin.active = true; + } + if (plugin.selected && !plugin.active) { + plugin.installing = true; + this.requestUpdate(); + await window.dt_admin_shared.plugin_activate(plugin.slug); + plugin.installing = false; + plugin.active = true; + } + } + this.requestUpdate(); + this.dispatchEvent(new CustomEvent('next')); } + select_all() { + let already_all_selected = + this.plugins.filter((plugin) => plugin.selected).length === + this.plugins.length; + this.plugins.forEach((plugin) => { + plugin.selected = !already_all_selected; + }); + this.requestUpdate(); + } + render() { return html`
-
Sort out plugins here
+
+ + + + + + + + + + + ${this.plugins.map((plugin) => { + let action = 'Active'; + if (plugin.installing) { + action = html``; + } else if (!plugin.active) { + action = html``; + } + + return html` + { + plugin.selected = !plugin.selected; + this.requestUpdate(); + }} + > + + + + + + `; + })} + +
Plugin Name + Install/Activate
+ this.select_all()} + >select all +
DescriptionInfo
${plugin.name}${action}${plugin.description} + + Plugin Link + +
+
diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 26a9da99f..67071dda9 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -170,6 +170,8 @@ export class SetupWizard extends LitElement { color: var(--default-color); padding: 1rem 2rem; box-shadow: 1px 1px 3px 0px var(--default-dark); + cursor: pointer; + position: relative; } .btn-card.selected { background-color: var(--secondary-color); @@ -184,6 +186,22 @@ export class SetupWizard extends LitElement { .btn-card:active { background-color: var(--primary-hover-color); } + .btn-card-gray { + background-color: var(--default-color); + color: black; + } + .btn-card-gray:hover { + background-color: var(--secondary-color); + opacity: 0.8; + } + .btn-card.disabled { + background-color: var(--secondary-color); + opacity: 0.5; + color: var(--default-color); + } + .btn-card.disabled:hover { + background-color: var(--default-hover-color); + } .input-group { display: flex; flex-direction: column; @@ -246,6 +264,32 @@ export class SetupWizard extends LitElement { outline: 5px solid var(--primary); outline-offset: -10px; } + .tag { + border: 1px solid black; + display: inline; + padding: 0.2em 0.5em; + background-color: var(--primary-color); + } + .spinner { + background: url('images/spinner.gif') no-repeat; + background-size: 20px 20px; + opacity: 0.7; + width: 20px; + height: 20px; + display: block; + } + table { + margin-bottom: 1rem; + } + table td { + padding: 0.5rem; + } + table thead tr { + background-color: var(--default-color); + } + table tr:nth-child(even) { + background-color: var(--default-color); + } `, ]; diff --git a/dt-core/admin/js/dt-extensions.js b/dt-core/admin/js/dt-extensions.js index 7d1d7b9a3..84806da8b 100644 --- a/dt-core/admin/js/dt-extensions.js +++ b/dt-core/admin/js/dt-extensions.js @@ -92,7 +92,7 @@ jQuery(function ($) {
-

${plugin_description}

+

${shorten_description(plugin['description'])}

${plugin_by_text.replace( '%s', @@ -151,8 +151,8 @@ jQuery(function ($) { } function shorten_description(description = '') { - if (description.length > 75) { - description = description.slice(0, 175) + '...'; + if (description.length > 88) { + description = description.slice(0, 88) + '...'; } return description; } @@ -185,70 +185,6 @@ jQuery(function ($) { card_back.append('
'); }); - function makeRequest(type, url, data, base = 'dt/v1/') { - // Add trailing slash if missing - if (!base.endsWith('/') && !url.startsWith('/')) { - base += '/'; - } - const options = { - type: type, - contentType: 'application/json; charset=utf-8', - dataType: 'json', - url: url.startsWith('http') - ? url - : `${window.wpApiSettings.root}${base}${url}`, - beforeSend: (xhr) => { - xhr.setRequestHeader('X-WP-Nonce', window.wpApiSettings.nonce); - }, - }; - if (data) { - options.data = type === 'GET' ? data : JSON.stringify(data); - } - return jQuery.ajax(options); - } - - window.API = { - plugin_install: (download_url) => - makeRequest( - 'POST', - `plugin-install`, - { - download_url: download_url, - }, - `dt-admin-settings/`, - ), - - plugin_delete: (plugin_slug) => - makeRequest( - 'POST', - `plugin-delete`, - { - plugin_slug: plugin_slug, - }, - `dt-admin-settings/`, - ), - - plugin_activate: (plugin_slug) => - makeRequest( - 'POST', - `plugin-activate`, - { - plugin_slug: plugin_slug, - }, - `dt-admin-settings/`, - ), - - plugin_deactivate: (plugin_slug) => - makeRequest( - 'POST', - `plugin-deactivate`, - { - plugin_slug: plugin_slug, - }, - `dt-admin-settings/`, - ), - }; - function get_plugin_download_url(plugin_slug) { const all_plugins = window.plugins.all_plugins; var download_url = false; @@ -262,7 +198,8 @@ jQuery(function ($) { function plugin_install(plugin_slug) { var download_url = get_plugin_download_url(plugin_slug); - window.API.plugin_install(download_url) + window.dt_admin_shared + .plugin_install(download_url) .promise() .then(function (response) { if (!response) { @@ -284,7 +221,8 @@ jQuery(function ($) { } function plugin_delete(plugin_slug) { - window.API.plugin_delete(plugin_slug) + window.dt_admin_shared + .plugin_delete(plugin_slug) .promise() .then(function (response) { if (!response) { @@ -303,7 +241,8 @@ jQuery(function ($) { } function plugin_activate(plugin_slug) { - window.API.plugin_activate(plugin_slug) + window.dt_admin_shared + .plugin_activate(plugin_slug) .promise() .then(function (response) { if (!response) { @@ -322,7 +261,8 @@ jQuery(function ($) { } function plugin_deactivate(plugin_slug) { let can_install_plugins = window.plugins.can_install_plugins; - window.API.plugin_deactivate(plugin_slug) + window.dt_admin_shared + .plugin_deactivate(plugin_slug) .promise() .then(function (response) { if (!response) { diff --git a/dt-core/admin/js/dt-shared.js b/dt-core/admin/js/dt-shared.js index bc4cd1219..4641fb1b6 100644 --- a/dt-core/admin/js/dt-shared.js +++ b/dt-core/admin/js/dt-shared.js @@ -4,6 +4,28 @@ shared scripts applicable to all sections. */ 'use strict'; +function makeRequest(type, url, data, base = 'dt/v1/') { + // Add trailing slash if missing + if (!base.endsWith('/') && !url.startsWith('/')) { + base += '/'; + } + const options = { + type: type, + contentType: 'application/json; charset=utf-8', + dataType: 'json', + url: url.startsWith('http') + ? url + : `${window.wpApiSettings.root}${base}${url}`, + beforeSend: (xhr) => { + xhr.setRequestHeader('X-WP-Nonce', window.wpApiSettings.nonce); + }, + }; + if (data) { + options.data = type === 'GET' ? data : JSON.stringify(data); + } + return jQuery.ajax(options); +} + window.dt_admin_shared = { escape(str) { if (typeof str !== 'string') return str; @@ -14,6 +36,45 @@ window.dt_admin_shared = { .replace(/"/g, '"') .replace(/'/g, '''); }, + plugin_install: (download_url) => + makeRequest( + 'POST', + `plugin-install`, + { + download_url: download_url, + }, + `dt-admin-settings/`, + ), + + plugin_delete: (plugin_slug) => + makeRequest( + 'POST', + `plugin-delete`, + { + plugin_slug: plugin_slug, + }, + `dt-admin-settings/`, + ), + + plugin_activate: (plugin_slug) => + makeRequest( + 'POST', + `plugin-activate`, + { + plugin_slug: plugin_slug, + }, + `dt-admin-settings/`, + ), + + plugin_deactivate: (plugin_slug) => + makeRequest( + 'POST', + `plugin-deactivate`, + { + plugin_slug: plugin_slug, + }, + `dt-admin-settings/`, + ), }; jQuery(function ($) { diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index afe6c27eb..a16681bb5 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -157,7 +157,39 @@ public function setup_wizard_steps() { return $steps; } + + public static function get_plugins_list(){ + $dt_plugins = Disciple_Tools_Tab_Featured_Extensions::get_dt_plugins(); + $enabled_plugins = [ + 'disciple-tools-dashboard', + 'disciple-tools-webform', + 'disciple-tools-facebook', + 'disciple-tools-import', + 'disciple-tools-bulk-magic-link-sender', + 'disciple-tools-team-module', + 'disciple-tools-storage', + 'disciple-tools-prayer-campaigns', + 'dt-home', + ]; + if ( is_multisite() ){ + $enabled_plugins[] = 'disciple-tools-multisite'; + } + //auto assignment + //share app + + + $plugin_data = []; + foreach ( $dt_plugins as $plugin ) { + if ( in_array( $plugin->slug, $enabled_plugins, true ) ) { + $plugin_data[] = $plugin; + } + } + return $plugin_data; + } + + public function setup_wizard_data() : array { + $plugin_data = self::get_plugins_list(); $data = [ 'use_cases' => [ 'media' => [ @@ -165,14 +197,14 @@ public function setup_wizard_data() : array { 'name' => 'Access Ministry', 'description' => 'Are you filtering for contacts for engagement?', 'recommended_modules' => [ - 'foo', - 'lorem', + 'access_module', ], 'recommended_plugins' => [ - 'loremoo', - 'ipsum', - 'dolor', - 'amit', + 'disciple-tools-webform', + 'disciple-tools-facebook', + 'disciple-tools-dashboard', + 'disciple-tools-import', + 'disciple-tools-bulk-magic-link-sender', ], ], 'crm' => [ @@ -181,10 +213,9 @@ public function setup_wizard_data() : array { 'description' => 'Are you needing to manage your contacts?', 'recommended_modules' => [], 'recommended_plugins' => [ - 'loremoo', - 'ipsum', - 'dolor', - 'amit', + 'disciple-tools-webform', + 'disciple-tools-import', + 'disciple-tools-bulk-magic-link-sender', ], ], 'dmm' => [ @@ -192,15 +223,16 @@ public function setup_wizard_data() : array { 'name' => 'Disciple Making Movements', 'description' => 'Are you managing multiplying groups?', 'recommended_modules' => [ - 'bar', - 'ipsum', - 'dolor', + 'contacts_baptisms_module', + 'contacts_faith_module', + 'contacts_coaching_module', + 'groups_base', + 'people_groups_module' ], 'recommended_plugins' => [ - 'lorem', - 'ipsum', - 'dolor', - 'amit', + 'disciple-tools-webform', + 'disciple-tools-bulk-magic-link-sender', + 'disciple-tools-training', ], ], ], @@ -236,28 +268,7 @@ public function setup_wizard_data() : array { 'description' => 'Track bars of people and their lorem status', ], ], - 'plugins' => [ - [ - 'key' => 'lorem', - 'name' => 'lorem', - 'description' => 'Fugiat deserunt Lorem veniam et veniam cillum tempor exercitation velit ex velit cupidatat nostrud.', - ], - [ - 'key' => 'ipsum', - 'name' => 'ipsum', - 'description' => 'Mollit pariatur sit fugiat officia aliqua irure commodo nostrud et elit.', - ], - [ - 'key' => 'dolor', - 'name' => 'dolor', - 'description' => 'Esse qui fugiat irure nisi consectetur.', - ], - [ - 'key' => 'amit', - 'name' => 'amit', - 'description' => 'Consectetur consequat esse id aute commodo ea qui cillum.', - ], - ], + 'plugins' => $plugin_data, ]; $data = apply_filters( 'dt_setup_wizard_data', $data ); diff --git a/dt-core/admin/menu/tabs/tab-featured-extensions.php b/dt-core/admin/menu/tabs/tab-featured-extensions.php index f9261d3f6..3b5e7c5f3 100644 --- a/dt-core/admin/menu/tabs/tab-featured-extensions.php +++ b/dt-core/admin/menu/tabs/tab-featured-extensions.php @@ -232,7 +232,7 @@ public function box_message( $tab ) { blog_url = 'https://disciple.tools/plugins/' . $plugin->slug; $plugin->folder_name = get_home_path() . 'wp-content/plugins/' . $plugin->slug; $plugin->author_github_username = explode( '/', $plugin->homepage )[3]; - $plugin->description = count_chars( $plugin->description ) > 128 ? trim( substr( $plugin->description, 0, 128 ) ) . '...' : $plugin->description; // Shorten descriptions to 88 chars $plugin->icon = ! isset( $plugin->icon ) ? 'https://s.w.org/plugins/geopattern-icon/' . $plugin->slug . '.svg' : $plugin->icon; $plugin->name = str_replace( 'Disciple Tools - ', '', $plugin->name ); $plugin->name = str_replace( 'Disciple.Tools - ', '', $plugin->name ); @@ -320,13 +319,13 @@ public function get_dt_plugins() { $plugin->active = false; $plugin->activation_path = ''; - if ( $this->partial_array_search( $all_plugins, $plugin->slug ) !== -1 ) { + if ( self::partial_array_search( $all_plugins, $plugin->slug ) !== -1 ) { $plugin->installed = true; } - if ( $this->partial_array_search( $active_plugins, $plugin->slug ) !== -1 ) { + if ( self::partial_array_search( $active_plugins, $plugin->slug ) !== -1 ) { $plugin->active = true; - $plugin->activation_path = $this->partial_array_search( $active_plugins, $plugin->slug ); + $plugin->activation_path = self::partial_array_search( $active_plugins, $plugin->slug ); } } return $plugins; From c35effe369784eae94ee520390cf3cea003eb43e Mon Sep 17 00:00:00 2001 From: squigglybob Date: Wed, 18 Dec 2024 11:34:27 +0000 Subject: [PATCH 20/48] add module step to wizard (#2617) * chore: remove translations attribute from controls * feat: correctly toggle checked state of checkboxes * feat: add confirm step * feat: add the real modules into the data set * feat: split use case selection out of modules also make multiple use cases selectable * fix: padding on toggle buttons * feat: select modules according to use case chosen * feat: remember options selected if navigating back to use case page * feat: update modules on api call * feat: add intro and celebration steps * fix: use empty to test if module is enabled/disabled * fix: use a discord link with no expiration or limits --- dt-core/admin/admin-settings-endpoints.php | 25 +++ .../components/setup-wizard-celebration.js | 48 +++++ .../admin/components/setup-wizard-controls.js | 1 - .../admin/components/setup-wizard-intro.js | 51 +++++ .../admin/components/setup-wizard-modules.js | 189 ++++++++---------- .../admin/components/setup-wizard-plugins.js | 5 +- .../components/setup-wizard-use-cases.js | 176 ++++++++++++++++ dt-core/admin/components/setup-wizard.js | 10 +- dt-core/admin/js/dt-shared.js | 9 + dt-core/admin/menu/menu-setup-wizard.php | 84 +++----- .../configuration/config-site-defaults.php | 15 -- 11 files changed, 428 insertions(+), 185 deletions(-) create mode 100644 dt-core/admin/components/setup-wizard-celebration.js create mode 100644 dt-core/admin/components/setup-wizard-intro.js create mode 100644 dt-core/admin/components/setup-wizard-use-cases.js diff --git a/dt-core/admin/admin-settings-endpoints.php b/dt-core/admin/admin-settings-endpoints.php index 4f2fbb246..8d56b7cc2 100644 --- a/dt-core/admin/admin-settings-endpoints.php +++ b/dt-core/admin/admin-settings-endpoints.php @@ -223,6 +223,31 @@ public function add_api_routes() { 'permission_callback' => [ $this, 'default_permission_check' ], ] ); + + register_rest_route( + $this->namespace, '/modules-update', [ + 'methods' => 'POST', + 'callback' => [ $this, 'update_modules' ], + 'permission_callback' => [ $this, 'default_permission_check' ], + ] + ); + } + + public function update_modules( WP_REST_REQUEST $request ) { + $modules_option_name = 'dt_post_type_modules'; + $modules_to_update = $request->get_param( 'modules' ); + $modules_to_update = dt_recursive_sanitize_array( $modules_to_update ); + + $modules = dt_get_option( $modules_option_name ); + + foreach ( $modules as $key => $module ) { + if ( array_key_exists( $key, $modules_to_update ) ) { + $modules[$key]['enabled'] = !empty( $modules_to_update[$key] ) ? true : false; + } + } + + update_option( $modules_option_name, $modules ); + return true; } public function update_languages( WP_REST_REQUEST $request ) { diff --git a/dt-core/admin/components/setup-wizard-celebration.js b/dt-core/admin/components/setup-wizard-celebration.js new file mode 100644 index 000000000..b68e7b21f --- /dev/null +++ b/dt-core/admin/components/setup-wizard-celebration.js @@ -0,0 +1,48 @@ +import { html } from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { OpenLitElement } from './setup-wizard-open-element.js'; + +export class SetupWizardCelebration extends OpenLitElement { + static get properties() { + return { + step: { type: Object }, + }; + } + + back() { + this.dispatchEvent(new CustomEvent('back')); + } + next() { + window.location.href = window.setupWizardShare.admin_url; + } + + render() { + return html` +

+

All finished

+
+

+ You can change all of these choices in the Settings (D.T.) tab in + the WP admin. +

+

+ D.T. has a huge ability to be customized to serve your needs. If you + have any questions or need any further assistance in getting D.T. to + work for you, please reach out on our community forum or our discord + channel. +

+ + Community Forum + + + Discord Invitation + +
+ +
+ `; + } +} +customElements.define('setup-wizard-celebration', SetupWizardCelebration); diff --git a/dt-core/admin/components/setup-wizard-controls.js b/dt-core/admin/components/setup-wizard-controls.js index 7d0f74b62..6bf031a69 100644 --- a/dt-core/admin/components/setup-wizard-controls.js +++ b/dt-core/admin/components/setup-wizard-controls.js @@ -4,7 +4,6 @@ import { OpenLitElement } from './setup-wizard-open-element.js'; export class SetupWizardControls extends OpenLitElement { static get properties() { return { - translations: { type: Object }, hideBack: { type: Boolean }, backLabel: { type: String }, nextLabel: { type: String }, diff --git a/dt-core/admin/components/setup-wizard-intro.js b/dt-core/admin/components/setup-wizard-intro.js new file mode 100644 index 000000000..cdb6fd995 --- /dev/null +++ b/dt-core/admin/components/setup-wizard-intro.js @@ -0,0 +1,51 @@ +import { html } from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { OpenLitElement } from './setup-wizard-open-element.js'; + +export class SetupWizardIntro extends OpenLitElement { + static get properties() { + return { + step: { type: Object }, + }; + } + + back() { + this.dispatchEvent(new CustomEvent('back')); + } + next() { + this.dispatchEvent(new CustomEvent('next')); + } + + render() { + return html` +
+

Setting up D.T. for you

+
+

+ We're glad you are here, and want to help set you up so you can take + advantage of the powertool that is D.T. +

+

+ D.T. can be used in many ways from managing connections and + relationships, all the way through to tracking and managing a + movement of Disciple Making. +

+

+ In order to help you, we want to take you through a series of + choices to give you the best start at getting Disiple.Tools setup + ready to suit your needs. +

+

+ Feel free to skip this setup stage if you already know what you + need. But if this will be helpful for you let's dive in. +

+
+ +
+ `; + } +} +customElements.define('setup-wizard-intro', SetupWizardIntro); diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index 54a9ef7fe..a17d5d4e9 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -9,12 +9,10 @@ export class SetupWizardModules extends OpenLitElement { static get properties() { return { step: { type: Object }, - firstStep: { type: Boolean }, stage: { type: String, attribute: false }, - useCases: { type: Array, attribute: false }, - option: { type: Object, attribute: false }, availableModules: { type: Array, attribute: false }, - selectedModules: { type: Array, attribute: false }, + selectedModules: { type: Object, attribute: false }, + loading: { Boolean, attribute: false }, }; } @@ -22,24 +20,34 @@ export class SetupWizardModules extends OpenLitElement { super(); this.stage = 'work'; this.data = window.setupWizardShare.data; - this.useCases = []; - this.option = {}; - this.availableModules = []; - this.selectedModules = []; - } + this.translations = window.setupWizardShare.translations; + this.loading = false; + this.availableModules = Object.entries(this.data.modules) + .map(([key, module]) => { + return { + key, + ...module, + }; + }) + .reduce((modules, module) => { + if (module.locked) { + return modules; + } + modules.push(module); + return modules; + }, []); + this.selectedModules = this.availableModules.reduce((modules, module) => { + modules[module.key] = false; + return modules; + }, {}); - firstUpdated() { - /* Reduce the keys down to ones that exist in the details list of use cases */ - const useCaseKeys = this.step.config.reduce((keys, key) => { - if (this.data.use_cases[key]) { - return [...keys, key]; + Object.entries(this.data.use_cases).forEach(([key, useCase]) => { + if (useCase.selected) { + useCase.recommended_modules.forEach((moduleKey) => { + this.selectedModules[moduleKey] = true; + }); } - return keys; - }, []); - this.useCases = useCaseKeys.map( - (useCaseKey) => this.data.use_cases[useCaseKey], - ); - this.availableModules = this.data.modules; + }); } back() { @@ -48,20 +56,14 @@ export class SetupWizardModules extends OpenLitElement { this.stage = 'work'; break; case 'work': - this.stage = 'prompt'; - break; - case 'prompt': this.dispatchEvent(new CustomEvent('back')); break; } } - next() { + async next() { switch (this.stage) { - case 'prompt': - this.stage = 'work'; - break; case 'work': - /* TODO: fire off to the API here */ + await this.submitModuleChanges(); this.stage = 'follow-up'; break; case 'follow-up': @@ -69,116 +71,99 @@ export class SetupWizardModules extends OpenLitElement { break; } } - selectOption(option) { - this.option = option; - this.selectedModules = option.recommended_modules; + nextLabel() { + return this.translations.next; } toggleModule(key) { - if (this.selectedModules.includes(key)) { - const index = this.selectedModules.findIndex((module) => module === key); - this.selectedModules = [ - ...this.selectedModules.slice(0, index), - ...this.selectedModules.slice(index + 1), - ]; + const checkbox = this.renderRoot.querySelector(`#${key}`); + if (this.selectedModules[key]) { + checkbox.checked = false; + this.selectedModules[key] = false; } else { - this.selectedModules = [...this.selectedModules, key]; + checkbox.checked = true; + this.selectedModules[key] = true; } } + async submitModuleChanges() { + this.loading = true; + this.requestUpdate(); + await window.dt_admin_shared.modules_update(this.selectedModules); + this.loading = false; + } render() { return html`
- ${this.stage === 'prompt' - ? html` -

Time to customize what fields are available.

-

- In the next step you will be able to choose between some - common use cases of Disciple.Tools -

-

- You will still be able to customize to your particular use - case. -

- ` - : ''} ${this.stage === 'work' ? html` -

Choose a use case

+

Module selection

- Choose one of these use cases to tailor what parts of - Disciple.Tools to turn on. + The recommended modules for your chosen use case(s) are + selected below

- You can fine tune those choices further to your own needs. + Feel free to change this selection according to what you need + D.T to do.

-
-
- ${this.useCases && this.useCases.length > 0 - ? this.useCases.map( - (option) => html` - - `, - ) - : ''} -
-
-

Available Modules

-
- ${Object.keys(this.availableModules).length > 0 - ? html` -
+ + + + + + + + + + ${Object.keys(this.availableModules).length > 0 + ? html` ${repeat( this.availableModules, (module) => module.key, (module) => { return html` - + + this.toggleModule(module.key)} + > + + + + `; }, )} - - ` - : ''} - + ` + : ''} + +
ModuleDescription
+ + ${module.name}${module.description}
+ ${this.loading ? html`` : ''} ` : ''} ${this.stage === 'follow-up' ? html` -

Your choices have been implemented

+

The modules you have chosen have been turned on.

- You can make further changes to the way D.T. works in the - 'Settings (DT)' section of the Wordpress admin. + You can adjust these modules to your liking in the 'Settings + (DT)' section of the Wordpress admin.

` : ''}
diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index e5910c779..1311a4b15 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -74,11 +74,12 @@ export class SetupWizardPlugins extends OpenLitElement { Plugin Name Install/Activate
- this.select_all()} - >select all + select all + Description Info diff --git a/dt-core/admin/components/setup-wizard-use-cases.js b/dt-core/admin/components/setup-wizard-use-cases.js new file mode 100644 index 000000000..b6e998db5 --- /dev/null +++ b/dt-core/admin/components/setup-wizard-use-cases.js @@ -0,0 +1,176 @@ +import { + html, + repeat, +} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { OpenLitElement } from './setup-wizard-open-element.js'; + +export class SetupWizardUseCases extends OpenLitElement { + static get properties() { + return { + step: { type: Object }, + firstStep: { type: Boolean }, + stage: { type: String, attribute: false }, + useCases: { type: Array, attribute: false }, + options: { type: Object, attribute: false }, + availableModules: { type: Array, attribute: false }, + selectedModules: { type: Array, attribute: false }, + }; + } + + constructor() { + super(); + this.stage = 'work'; + this.data = window.setupWizardShare.data; + this.translations = window.setupWizardShare.translations; + this.availableModules = []; + this.selectedModules = []; + this.options = Object.entries(this.data.use_cases).reduce( + (options, [key, useCase]) => { + const selected = + (useCase.selected && useCase.selected === true) || false; + return { + ...options, + [key]: selected, + }; + }, + {}, + ); + } + + firstUpdated() { + /* Reduce the keys down to ones that exist in the details list of use cases */ + const useCaseKeys = this.step.config.reduce((keys, key) => { + if (this.data.use_cases[key]) { + return [...keys, key]; + } + return keys; + }, []); + this.useCases = useCaseKeys.map( + (useCaseKey) => this.data.use_cases[useCaseKey], + ); + } + + back() { + switch (this.stage) { + case 'follow-up': + this.stage = 'work'; + break; + case 'work': + this.stage = 'prompt'; + break; + case 'prompt': + this.dispatchEvent(new CustomEvent('back')); + break; + } + } + next() { + switch (this.stage) { + case 'prompt': + this.stage = 'work'; + break; + case 'work': + this.saveOptions(); + this.stage = 'follow-up'; + break; + case 'follow-up': + this.dispatchEvent(new CustomEvent('next')); + break; + } + } + nextLabel() { + switch (this.stage) { + case 'work': + return this.translations.confirm; + default: + return this.translations.next; + } + } + toggleOption(event) { + const option = event.target.id; + if (this.options[option]) { + this.options[option] = false; + } else { + this.options[option] = true; + } + } + saveOptions() { + for (const option in this.options) { + window.setupWizardShare.data.use_cases[option].selected = + this.options[option]; + } + } + + render() { + return html` +
+
+ ${this.stage === 'prompt' + ? html` +

Time to customize what fields are available.

+

+ In the next step you will be able to choose between some + common use cases of Disciple.Tools +

+

+ You will still be able to customize to your particular use + case. +

+ ` + : ''} + ${this.stage === 'work' + ? html` +

Choose a use case

+

+ Choose one of these use cases to tailor what parts of + Disciple.Tools to turn on. +

+

+ You can fine tune those choices further to your own needs. +

+
+
+ ${this.useCases && this.useCases.length > 0 + ? this.useCases.map( + (option) => html` + + `, + ) + : ''} +
+
+ ` + : ''} + ${this.stage === 'follow-up' + ? html` +

Use cases selected

+

+ Now that you have chosen your use cases, we can recommend some + modules and plugins that will be helpful for these use cases. +

+ ` + : ''} +
+ +
+ `; + } +} +customElements.define('setup-wizard-use-cases', SetupWizardUseCases); diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 67071dda9..b1e1ad71f 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -209,17 +209,19 @@ export class SetupWizard extends LitElement { } .toggle { position: relative; - display: inline-block; + display: inline-flex; + cursor: pointer; input { display: none; } div { display: inline-block; - padding-block: 1rem; + padding: 1rem 0.5rem; background-color: var(--default-color); border-radius: 8px; width: 100%; text-align: center; + transition: all 120ms linear; } input:checked + div { background-color: var(--secondary-color); @@ -327,8 +329,8 @@ export class SetupWizard extends LitElement { render() { return html`
+

${this.translations.title}

-

${this.translations.title}

${this.isKitchenSink ? this.kitchenSink() : html` ${this.renderStep()} `} @@ -442,8 +444,6 @@ export class SetupWizard extends LitElement { `; } - renderControls() {} - kitchenSink() { return html`
diff --git a/dt-core/admin/js/dt-shared.js b/dt-core/admin/js/dt-shared.js index 4641fb1b6..f6fc0192f 100644 --- a/dt-core/admin/js/dt-shared.js +++ b/dt-core/admin/js/dt-shared.js @@ -75,6 +75,15 @@ window.dt_admin_shared = { }, `dt-admin-settings/`, ), + modules_update: (modules) => + makeRequest( + 'POST', + 'modules-update', + { + modules, + }, + `dt-admin-settings/`, + ), }; jQuery(function ($) { diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index a16681bb5..8a2184576 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -19,6 +19,7 @@ class DT_Setup_Wizard { private static $_instance = null; + private $root = 'setup-wizard'; public static function instance() { if ( is_null( self::$_instance ) ) { self::$_instance = new self(); @@ -43,19 +44,25 @@ public function __construct() { public function enqueue_scripts(){ dt_theme_enqueue_script( 'setup-wizard', 'dt-core/admin/components/setup-wizard.js', [], true ); dt_theme_enqueue_script( 'setup-wizard-open-element', 'dt-core/admin/components/setup-wizard-open-element.js', [ 'setup-wizard' ], true ); + dt_theme_enqueue_script( 'setup-wizard-use-cases', 'dt-core/admin/components/setup-wizard-use-cases.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); dt_theme_enqueue_script( 'setup-wizard-modules', 'dt-core/admin/components/setup-wizard-modules.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); dt_theme_enqueue_script( 'setup-wizard-plugins', 'dt-core/admin/components/setup-wizard-plugins.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); dt_theme_enqueue_script( 'setup-wizard-details', 'dt-core/admin/components/setup-wizard-details.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); dt_theme_enqueue_script( 'setup-wizard-controls', 'dt-core/admin/components/setup-wizard-controls.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); + dt_theme_enqueue_script( 'setup-wizard-intro', 'dt-core/admin/components/setup-wizard-intro.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); + dt_theme_enqueue_script( 'setup-wizard-celebration', 'dt-core/admin/components/setup-wizard-celebration.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); wp_localize_script( 'setup-wizard', 'setupWizardShare', [ 'translations' => [ 'title' => esc_html__( 'Disciple.Tools Setup Wizard', 'disciple_tools' ), 'next' => esc_html__( 'Next', 'disciple_tools' ), + 'submit' => esc_html__( 'Submit', 'disciple_tools' ), + 'confirm' => esc_html__( 'Confirm', 'disciple_tools' ), 'back' => esc_html__( 'Back', 'disciple_tools' ), ], 'steps' => $this->setup_wizard_steps(), 'data' => $this->setup_wizard_data(), + 'admin_url' => admin_url(), ] ); } @@ -109,9 +116,13 @@ public function setup_wizard_steps() { $bloginfo = get_bloginfo(); $steps = [ [ - 'key' => 'choose_your_path', - 'name' => 'Choose your path', - 'component' => 'setup-wizard-modules', + 'key' => 'intro', + 'component' => 'setup-wizard-intro', + ], + [ + 'key' => 'choose_your_use_cases', + 'name' => 'Choose your use cases', + 'component' => 'setup-wizard-use-cases', 'description' => 'How are you planning to use DT?', 'config' => [ 'media', @@ -120,37 +131,20 @@ public function setup_wizard_steps() { ] ], [ - 'name' => 'Site details', - 'description' => 'Fill in some site details', - 'component' => 'setup-wizard-details', - 'config' => [ - [ - 'type' => 'options', - 'options' => [ - [ - 'key' => 'blogname', - 'name' => 'Site name', - 'value' => isset( $bloginfo['name'] ) ? $bloginfo['name'] : '', - ], - [ - 'key' => 'blogdescription', - 'name' => 'Site description', - 'value' => isset( $bloginfo['description'] ) ? $bloginfo['description'] : '', - ], - [ - 'key' => 'admin_email', - 'name' => 'Admin email', - 'value' => isset( $bloginfo['admin_email'] ) ? $bloginfo['admin_email'] : '', - ] - ], - ] - ], + 'key' => 'choose_your_modules', + 'name' => 'Choose your modules', + 'component' => 'setup-wizard-modules', + 'description' => 'What modules do you want to use?', ], [ 'name' => 'Plugins', 'description' => 'Choose which plugins to install.', 'component' => 'setup-wizard-plugins', ], + [ + 'key' => 'celebration', + 'component' => 'setup-wizard-celebration', + ] ]; $steps = apply_filters( 'dt_setup_wizard_steps', $steps ); @@ -189,6 +183,7 @@ public static function get_plugins_list(){ public function setup_wizard_data() : array { + $modules = dt_get_option( 'dt_post_type_modules' ); $plugin_data = self::get_plugins_list(); $data = [ 'use_cases' => [ @@ -236,38 +231,7 @@ public function setup_wizard_data() : array { ], ], ], - 'modules' => [ - [ - 'key' => 'ipsum', - 'name' => 'Ipsum', - 'description' => 'Track who is ipsuming who', - 'details' => [ - 'fields' => [], - 'tiles' => [], - 'workflows' => [], - ], - ], - [ - 'key' => 'dolor', - 'name' => 'Dolor', - 'description' => 'Track who has been dolored when, and by who', - ], - [ - 'key' => 'lorem', - 'name' => 'lorem', - 'description' => 'Track the lorem status of your contacts', - ], - [ - 'key' => 'foo', - 'name' => 'Foo', - 'description' => 'Track contacts: who is fooing up with who; reminders of who needs fooing up with', - ], - [ - 'key' => 'bar', - 'name' => 'Bar', - 'description' => 'Track bars of people and their lorem status', - ], - ], + 'modules' => $modules, 'plugins' => $plugin_data, ]; diff --git a/dt-core/configuration/config-site-defaults.php b/dt-core/configuration/config-site-defaults.php index feec9d936..8b8a9e656 100644 --- a/dt-core/configuration/config-site-defaults.php +++ b/dt-core/configuration/config-site-defaults.php @@ -135,8 +135,6 @@ function dt_get_option( string $name ) { } return get_option( 'dt_site_options' ); - break; - case 'dt_site_custom_lists': $default_custom_lists = dt_get_site_custom_lists(); @@ -154,7 +152,6 @@ function dt_get_option( string $name ) { } //return apply_filters( "dt_site_custom_lists", get_option( 'dt_site_custom_lists' ) ); return get_option( 'dt_site_custom_lists' ); - break; case 'dt_field_customizations': return get_option( 'dt_field_customizations', [ @@ -192,8 +189,6 @@ function dt_get_option( string $name ) { else { return get_option( 'dt_base_user' ); } - break; - case 'location_levels': $default_levels = dt_get_location_levels(); @@ -216,7 +211,6 @@ function dt_get_option( string $name ) { $levels = get_option( 'dt_location_levels' ); } return $levels['location_levels']; - break; case 'auto_location': $setting = get_option( 'dt_auto_location' ); if ( false === $setting ) { @@ -224,8 +218,6 @@ function dt_get_option( string $name ) { $setting = get_option( 'dt_auto_location' ); } return $setting; - break; - case 'dt_storage_connection_id': return get_option( 'dt_storage_connection_id', '' ); @@ -235,8 +227,6 @@ function dt_get_option( string $name ) { update_option( 'dt_email_base_subject', 'Disciple.Tools' ); } return $subject_base; - break; - case 'dt_email_base_address_reply_to': return get_option( 'dt_email_base_address_reply_to', '' ); case 'dt_email_base_address': @@ -282,7 +272,6 @@ function dt_get_option( string $name ) { default: return false; - break; } } @@ -313,15 +302,11 @@ function dt_update_option( $name, $value, $autoload = false ) { $levels = wp_parse_args( $levels, $default_levels ); return update_option( 'dt_location_levels', $levels, $autoload ); - - break; case 'auto_location': return update_option( 'dt_auto_location', $value, $autoload ); - break; default: return false; - break; } } From 589949a6733dcfcddc04559630ab2dac15c18106 Mon Sep 17 00:00:00 2001 From: corsacca Date: Wed, 18 Dec 2024 13:38:54 +0100 Subject: [PATCH 21/48] Add geocoding step and endpoint to update dt options (#2619) * Add geocoding step and endpoint to update dt options * await save complete * update saving to be internal --- dt-core/admin/admin-settings-endpoints.php | 22 +- .../admin/components/setup-wizard-controls.js | 2 + dt-core/admin/components/setup-wizard-keys.js | 209 ++++++++++++++++++ dt-core/admin/components/setup-wizard.js | 16 +- dt-core/admin/js/dt-shared.js | 8 + dt-core/admin/menu/menu-setup-wizard.php | 10 + 6 files changed, 264 insertions(+), 3 deletions(-) create mode 100644 dt-core/admin/components/setup-wizard-keys.js diff --git a/dt-core/admin/admin-settings-endpoints.php b/dt-core/admin/admin-settings-endpoints.php index 8d56b7cc2..9c5316478 100644 --- a/dt-core/admin/admin-settings-endpoints.php +++ b/dt-core/admin/admin-settings-endpoints.php @@ -223,7 +223,6 @@ public function add_api_routes() { 'permission_callback' => [ $this, 'default_permission_check' ], ] ); - register_rest_route( $this->namespace, '/modules-update', [ 'methods' => 'POST', @@ -231,6 +230,27 @@ public function add_api_routes() { 'permission_callback' => [ $this, 'default_permission_check' ], ] ); + register_rest_route( + $this->namespace, '/update-dt-options', [ + 'methods' => 'POST', + 'callback' => [ $this, 'update_dt_options' ], + 'permission_callback' => [ $this, 'default_permission_check' ], + ] + ); + } + + public function update_dt_options( WP_REST_REQUEST $request ){ + $params = $request->get_params(); + $updated = false; + foreach ( $params as $option_key => $option_value ){ + //only allow updating D.T options + if ( strpos( $option_key, 'dt_' ) !== 0 ){ + continue; + } + update_option( $option_key, $option_value ); + $updated = true; + } + return $updated; } public function update_modules( WP_REST_REQUEST $request ) { diff --git a/dt-core/admin/components/setup-wizard-controls.js b/dt-core/admin/components/setup-wizard-controls.js index 6bf031a69..2a3075ea1 100644 --- a/dt-core/admin/components/setup-wizard-controls.js +++ b/dt-core/admin/components/setup-wizard-controls.js @@ -7,6 +7,7 @@ export class SetupWizardControls extends OpenLitElement { hideBack: { type: Boolean }, backLabel: { type: String }, nextLabel: { type: String }, + saving: { type: Boolean }, }; } back() { @@ -25,6 +26,7 @@ export class SetupWizardControls extends OpenLitElement { `}
`; diff --git a/dt-core/admin/components/setup-wizard-keys.js b/dt-core/admin/components/setup-wizard-keys.js new file mode 100644 index 000000000..9c55b5dba --- /dev/null +++ b/dt-core/admin/components/setup-wizard-keys.js @@ -0,0 +1,209 @@ +import { + html, + css, +} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { OpenLitElement } from './setup-wizard-open-element.js'; + +export class SetupWizardKeys extends OpenLitElement { + static styles = [ + css` + :host { + display: block; + } + `, + ]; + + static get properties() { + return { + step: { type: Object }, + firstStep: { type: Boolean }, + _options: { type: Object }, + _saving: { type: Boolean, attribute: false }, + }; + } + + back() { + this.dispatchEvent(new CustomEvent('back')); + } + async next() { + this._saving = true; + await window.dt_admin_shared.update_dt_options(this._options); + this._saving = false; + + this.dispatchEvent(new CustomEvent('next')); + } + + constructor() { + super(); + this._saving = false; + this._options = { + dt_mapbox_api_key: '', + dt_google_map_key: '', + }; + this.show_mapbox_instructions = false; + this.show_google_instructions = false; + } + + render() { + this._options.dt_mapbox_api_key = this.step.config.dt_mapbox_api_key; + this._options.dt_google_map_key = this.step.config.dt_google_map_key; + return html` +
+
+ + + + + + + + + + + + + + + + + + + + +
Plugin NameDescriptionValue
Mapbox key + Upgrade maps and get precise locations with a MapBox key. +
+ +
+
    +
  1. + Go to + MapBox.com. +
  2. +
  3. + Register for a new account (MapBox.com)
    + (email required. A credit card might be required, + though you will likely not go over the free monthly + quota.) +
  4. +
  5. + Once registered, go to your account home page. (Account Page)
    +
  6. +
  7. + Inside the section labeled "Access Tokens", either + create a new token or use the default token provided. + Copy this token. +
  8. +
  9. + Paste the token into the "Mapbox API Token" field in the + box above. +
  10. +
+
+
+ { + this._options.dt_mapbox_api_key = e.target.value; + }} + /> +
Google key + Upgrade maps and get even more precise locations with a Google + key. +
+ +
+
    +
  1. + Go to + https://console.cloud.google.com. +
  2. +
  3. + Register with your Google Account or Gmail Account +
  4. +
  5. Once registered, create a new project.
  6. +
  7. + Then go to APIs & Services > Credentials and "Create + Credentials" API Key. Copy this key. +
  8. +
  9. + Paste the key into the "Google API Key" field in the box + above here in the Disciple.Tools Mapping Admin. +
  10. +
  11. + Again, in Google Cloud Console, in APIs & Services go to + Library. Find and enable: (1) Maps Javascript API, (2) + Places API, and (3) GeoCoding API. +
  12. +
  13. + Lastly, in in Credentials for the API key it is + recommended in the settings of the API key to be set + "None" for Application Restrictions and "Don't restrict + key" in API Restrictions. +
  14. +
+
+
+ { + this._options.dt_google_map_key = e.target.value; + }} + /> +
+
+ +
+ `; + } +} +customElements.define('setup-wizard-keys', SetupWizardKeys); diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index b1e1ad71f..ba53d477b 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -61,6 +61,7 @@ export class SetupWizard extends LitElement { cursor: pointer; background-color: var(--default-color); transition: background-color 120ms linear; + box-shadow: 1px 1px 3px 0 var(--default-dark); } button:hover, button:active, @@ -278,13 +279,21 @@ export class SetupWizard extends LitElement { opacity: 0.7; width: 20px; height: 20px; - display: block; + display: inline-block; + } + .spinner.light { + background: url('images/wpspin_light-2x.gif') no-repeat; + background-size: 20px 20px; + } + button .spinner { + vertical-align: bottom; } table { margin-bottom: 1rem; } table td { padding: 0.5rem; + vertical-align: top; } table thead tr { background-color: var(--default-color); @@ -313,6 +322,10 @@ export class SetupWizard extends LitElement { const url = new URL(location.href); this.isKitchenSink = url.searchParams.has('kitchen-sink'); + //get step number from step url param + if (url.searchParams.has('step')) { + this.currentStepNumber = parseInt(url.searchParams.get('step')); + } } firstUpdated() { @@ -356,7 +369,6 @@ export class SetupWizard extends LitElement { return; } this.currentStepNumber = i; - console.log(this.currentStepNumber); } renderStep() { diff --git a/dt-core/admin/js/dt-shared.js b/dt-core/admin/js/dt-shared.js index f6fc0192f..9ac4265b2 100644 --- a/dt-core/admin/js/dt-shared.js +++ b/dt-core/admin/js/dt-shared.js @@ -36,6 +36,14 @@ window.dt_admin_shared = { .replace(/"/g, '"') .replace(/'/g, '''); }, + + /** + * Update options. Provide an object with the options to update. + * @param options + */ + update_dt_options: (options) => + makeRequest('POST', 'update-dt-options', options, 'dt-admin-settings/'), + plugin_install: (download_url) => makeRequest( 'POST', diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index 8a2184576..68f57f05f 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -48,6 +48,7 @@ public function enqueue_scripts(){ dt_theme_enqueue_script( 'setup-wizard-modules', 'dt-core/admin/components/setup-wizard-modules.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); dt_theme_enqueue_script( 'setup-wizard-plugins', 'dt-core/admin/components/setup-wizard-plugins.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); dt_theme_enqueue_script( 'setup-wizard-details', 'dt-core/admin/components/setup-wizard-details.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); + dt_theme_enqueue_script( 'setup-wizard-keys', 'dt-core/admin/components/setup-wizard-keys.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); dt_theme_enqueue_script( 'setup-wizard-controls', 'dt-core/admin/components/setup-wizard-controls.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); dt_theme_enqueue_script( 'setup-wizard-intro', 'dt-core/admin/components/setup-wizard-intro.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); dt_theme_enqueue_script( 'setup-wizard-celebration', 'dt-core/admin/components/setup-wizard-celebration.js', [ 'setup-wizard', 'setup-wizard-open-element' ], true ); @@ -141,6 +142,15 @@ public function setup_wizard_steps() { 'description' => 'Choose which plugins to install.', 'component' => 'setup-wizard-plugins', ], + [ + 'name' => 'Site keys', + 'description' => 'Fill in some site details', + 'component' => 'setup-wizard-keys', + 'config' => [ + 'dt_google_map_key' => Disciple_Tools_Google_Geocode_API::get_key(), + 'dt_mapbox_api_key' => DT_Mapbox_API::get_key(), + ], + ], [ 'key' => 'celebration', 'component' => 'setup-wizard-celebration', From 952e40b0490e7a83422d88261b518d949382f798 Mon Sep 17 00:00:00 2001 From: corsac Date: Wed, 18 Dec 2024 13:44:35 +0100 Subject: [PATCH 22/48] Consistent Capitalization --- dt-core/admin/components/setup-wizard-celebration.js | 1 + dt-core/admin/components/setup-wizard-controls.js | 4 ++-- dt-core/admin/components/setup-wizard-plugins.js | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-celebration.js b/dt-core/admin/components/setup-wizard-celebration.js index b68e7b21f..8abac31d5 100644 --- a/dt-core/admin/components/setup-wizard-celebration.js +++ b/dt-core/admin/components/setup-wizard-celebration.js @@ -40,6 +40,7 @@ export class SetupWizardCelebration extends OpenLitElement {
`; diff --git a/dt-core/admin/components/setup-wizard-controls.js b/dt-core/admin/components/setup-wizard-controls.js index 2a3075ea1..8d605e643 100644 --- a/dt-core/admin/components/setup-wizard-controls.js +++ b/dt-core/admin/components/setup-wizard-controls.js @@ -22,10 +22,10 @@ export class SetupWizardControls extends OpenLitElement { ${this.hideBack ? '' : html` - + `}
diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index 1311a4b15..4815c9979 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -120,7 +120,7 @@ export class SetupWizardPlugins extends OpenLitElement {
From 2165853c086a4b238074b3507de5d1fc0e006ee4 Mon Sep 17 00:00:00 2001 From: corsac Date: Wed, 18 Dec 2024 14:22:13 +0100 Subject: [PATCH 23/48] Add titles to keys and plugin steps --- dt-core/admin/components/setup-wizard-keys.js | 5 +++-- dt-core/admin/components/setup-wizard-plugins.js | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-keys.js b/dt-core/admin/components/setup-wizard-keys.js index 9c55b5dba..bd37d644b 100644 --- a/dt-core/admin/components/setup-wizard-keys.js +++ b/dt-core/admin/components/setup-wizard-keys.js @@ -49,11 +49,12 @@ export class SetupWizardKeys extends OpenLitElement { this._options.dt_google_map_key = this.step.config.dt_google_map_key; return html`
-
+
+

Mapping and Geocoding

- + diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index 4815c9979..cd0b5a8a9 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -67,7 +67,8 @@ export class SetupWizardPlugins extends OpenLitElement { render() { return html`
-
+
+

Recommended Plugins

Plugin NameKey Description Value
From 923ec013e371ca5a692dc3528c6d9c1dbb2b01b4 Mon Sep 17 00:00:00 2001 From: squigglybob Date: Wed, 18 Dec 2024 15:10:17 +0000 Subject: [PATCH 24/48] Feat/last bits (#2620) * fix: adjust wordage and starting stage in use case step * feat: hide the setup wizard in the admin menu * feat: always redirect to setup-wizard with noheader on need to fix why the esutp-wizard doesn't load properly in noheader mode * fix: redirect to wizard with menus hidden * feat: add ability to skip steps * feat: add exit button to wizard * feat: on exiting wizard mark as seen so it won't auto show again * feat: add skippability to keys step * feat: mark setup wizard as completed at end; hide dashboard button when done * feat: add max width to p tags * feat: only show setup wizard for administrators --- .../components/setup-wizard-celebration.js | 13 +++++- .../admin/components/setup-wizard-controls.js | 12 ++++++ .../admin/components/setup-wizard-intro.js | 1 + dt-core/admin/components/setup-wizard-keys.js | 4 ++ .../admin/components/setup-wizard-modules.js | 5 +++ .../admin/components/setup-wizard-plugins.js | 4 ++ .../components/setup-wizard-use-cases.js | 12 ++++-- dt-core/admin/components/setup-wizard.js | 42 +++++++++++++++++-- dt-core/admin/config-dashboard.php | 15 ++++--- dt-core/admin/menu/menu-setup-wizard.php | 20 +++++++++ functions.php | 10 +++++ 11 files changed, 125 insertions(+), 13 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-celebration.js b/dt-core/admin/components/setup-wizard-celebration.js index 8abac31d5..3e152d9d5 100644 --- a/dt-core/admin/components/setup-wizard-celebration.js +++ b/dt-core/admin/components/setup-wizard-celebration.js @@ -8,10 +8,19 @@ export class SetupWizardCelebration extends OpenLitElement { }; } + constructor() { + super(); + this.translations = window.setupWizardShare.translations; + } + back() { this.dispatchEvent(new CustomEvent('back')); } - next() { + async next() { + await window.dt_admin_shared.update_dt_options({ + dt_setup_wizard_seen: true, + dt_setup_wizard_completed: true, + }); window.location.href = window.setupWizardShare.admin_url; } @@ -38,6 +47,8 @@ export class SetupWizardCelebration extends OpenLitElement { + ${this.hideSkip + ? '' + : html` + + `} ${this.hideBack ? '' : html` diff --git a/dt-core/admin/components/setup-wizard-intro.js b/dt-core/admin/components/setup-wizard-intro.js index cdb6fd995..96eaee140 100644 --- a/dt-core/admin/components/setup-wizard-intro.js +++ b/dt-core/admin/components/setup-wizard-intro.js @@ -41,6 +41,7 @@ export class SetupWizardIntro extends OpenLitElement { diff --git a/dt-core/admin/components/setup-wizard-keys.js b/dt-core/admin/components/setup-wizard-keys.js index bd37d644b..24f586788 100644 --- a/dt-core/admin/components/setup-wizard-keys.js +++ b/dt-core/admin/components/setup-wizard-keys.js @@ -32,6 +32,9 @@ export class SetupWizardKeys extends OpenLitElement { this.dispatchEvent(new CustomEvent('next')); } + skip() { + this.dispatchEvent(new CustomEvent('next')); + } constructor() { super(); @@ -201,6 +204,7 @@ export class SetupWizardKeys extends OpenLitElement { ?hideBack=${this.firstStep} @next=${this.next} @back=${this.back} + @skip=${this.skip} .saving=${this._saving} > diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index a17d5d4e9..2a4f862e5 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -71,6 +71,9 @@ export class SetupWizardModules extends OpenLitElement { break; } } + skip() { + this.dispatchEvent(new CustomEvent('next')); + } nextLabel() { return this.translations.next; } @@ -164,8 +167,10 @@ export class SetupWizardModules extends OpenLitElement { `; diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index cd0b5a8a9..4af226938 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -28,6 +28,9 @@ export class SetupWizardPlugins extends OpenLitElement { back() { this.dispatchEvent(new CustomEvent('back')); } + skip() { + this.dispatchEvent(new CustomEvent('next')); + } async next() { const plugins_to_install = this.plugins.filter((plugin) => plugin.selected); @@ -124,6 +127,7 @@ export class SetupWizardPlugins extends OpenLitElement { nextLabel="Install and Activate Selected Plugins" @next=${this.next} @back=${this.back} + @skip=${this.skip} > `; diff --git a/dt-core/admin/components/setup-wizard-use-cases.js b/dt-core/admin/components/setup-wizard-use-cases.js index b6e998db5..8bf366ef3 100644 --- a/dt-core/admin/components/setup-wizard-use-cases.js +++ b/dt-core/admin/components/setup-wizard-use-cases.js @@ -19,7 +19,7 @@ export class SetupWizardUseCases extends OpenLitElement { constructor() { super(); - this.stage = 'work'; + this.stage = 'prompt'; this.data = window.setupWizardShare.data; this.translations = window.setupWizardShare.translations; this.availableModules = []; @@ -77,6 +77,9 @@ export class SetupWizardUseCases extends OpenLitElement { break; } } + skip() { + this.dispatchEvent(new CustomEvent('next')); + } nextLabel() { switch (this.stage) { case 'work': @@ -106,7 +109,7 @@ export class SetupWizardUseCases extends OpenLitElement {
${this.stage === 'prompt' ? html` -

Time to customize what fields are available.

+

Time to choose your use cases

In the next step you will be able to choose between some common use cases of Disciple.Tools @@ -125,7 +128,8 @@ export class SetupWizardUseCases extends OpenLitElement { Disciple.Tools to turn on.

- You can fine tune those choices further to your own needs. + You can fine tune those choices further to your own needs in + the following steps.

@@ -166,8 +170,10 @@ export class SetupWizardUseCases extends OpenLitElement { ?hideBack=${this.firstStep && this.stage === 'prompt'} nextLabel=${this.nextLabel()} backLabel=${this.translations.back} + skipLabel=${this.translations.skip} @next=${this.next} @back=${this.back} + @skip=${this.skip} >
`; diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index ba53d477b..bfa527a56 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -4,7 +4,6 @@ import { LitElement, staticHtml, unsafeStatic, - literal, } from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; export class SetupWizard extends LitElement { @@ -54,13 +53,16 @@ export class SetupWizard extends LitElement { font-weight: 500; color: var(--primary-color); } + p { + max-width: 60ch; + } button { border: none; padding: 0.5rem 1.5rem; border-radius: 8px; cursor: pointer; background-color: var(--default-color); - transition: background-color 120ms linear; + transition: all 120ms linear; box-shadow: 1px 1px 3px 0 var(--default-dark); } button:hover, @@ -90,6 +92,13 @@ export class SetupWizard extends LitElement { .cluster[position='end'] { justify-content: flex-end; } + .repel { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + flex-direction: row-reverse; + } .flow { display: flex; flex-direction: column; @@ -138,6 +147,9 @@ export class SetupWizard extends LitElement { .ms-auto { margin-left: auto; } + .me-auto { + margin-right: auto; + } .align-start { align-items: flex-start; } @@ -166,6 +178,17 @@ export class SetupWizard extends LitElement { .btn-primary:active { background-color: var(--primary-hover-color); } + .btn-outline { + border: 1px solid transparent; + background-color: transparent; + color: var(--primary-color); + box-shadow: none; + } + .btn-outline:hover, + .btn-outline:focus { + border-color: var(--primary-color); + background-color: transparent; + } .btn-card { background-color: var(--primary-color); color: var(--default-color); @@ -316,6 +339,7 @@ export class SetupWizard extends LitElement { super(); this.translations = window.setupWizardShare.translations; + this.adminUrl = window.setupWizardShare.admin_url; this.steps = []; this.currentStepNumber = 0; @@ -342,7 +366,12 @@ export class SetupWizard extends LitElement { render() { return html`
-

${this.translations.title}

+
+ +

${this.translations.title}

+
${this.isKitchenSink ? this.kitchenSink() @@ -364,12 +393,17 @@ export class SetupWizard extends LitElement { return; } if (i > this.steps.length - 1) { - /* TODO: Then we have finished the wizard and need to exit or show some completion message */ this.currentStepNumber = this.steps.length - 1; return; } this.currentStepNumber = i; } + async exit() { + await window.dt_admin_shared.update_dt_options({ + dt_setup_wizard_seen: true, + }); + location.href = this.adminUrl; + } renderStep() { if (this.steps.length === 0) { diff --git a/dt-core/admin/config-dashboard.php b/dt-core/admin/config-dashboard.php index c00440166..a9ad079ed 100644 --- a/dt-core/admin/config-dashboard.php +++ b/dt-core/admin/config-dashboard.php @@ -231,13 +231,18 @@ function dt_show_news_widget() { add_meta_box( 'dt_news_feed', esc_html__( 'Disciple.Tools News Feed', 'disciple_tools' ), 'dt_show_news_widget', 'dashboard', 'side', 'high' ); - wp_add_dashboard_widget( 'dt_setup_wizard_new', 'Need help setting up Disciple.Tools?', function (){ - ?> + $dt_setup_wizard_completed = get_option( 'dt_setup_wizard_completed' ); + $is_administrator = current_user_can( 'manage_options' ); - Go to New Setup Wizard + if ( empty( $dt_setup_wizard_completed ) && $is_administrator ) { + wp_add_dashboard_widget( 'dt_setup_wizard_new', 'Need help setting up Disciple.Tools?', function (){ + ?> - " class="button">Go to New Setup Wizard + + esc_html__( 'Submit', 'disciple_tools' ), 'confirm' => esc_html__( 'Confirm', 'disciple_tools' ), 'back' => esc_html__( 'Back', 'disciple_tools' ), + 'skip' => esc_html__( 'Skip', 'disciple_tools' ), + 'finish' => esc_html__( 'Finish', 'disciple_tools' ), + 'exit' => esc_html__( 'Exit', 'disciple_tools' ), ], 'steps' => $this->setup_wizard_steps(), 'data' => $this->setup_wizard_data(), @@ -93,6 +96,8 @@ public function add_dt_options_menu() { $image_url, 52, ); + /* Hide the setup wizard in the menu */ + remove_menu_page( 'dt_setup_wizard' ); } public function content() { @@ -106,6 +111,21 @@ public function content() { body { margin: 0; } + html.wp-toolbar { + padding-top: 0; + } + #adminmenuback, + #adminmenuwrap, + #wpadminbar { + display: none; + } + #wpcontent { + margin-left: 0; + padding-left: 0; + } + #wpbody { + padding-top: 0 !important; + } diff --git a/functions.php b/functions.php index e7aa367c8..cf7dd9ef1 100755 --- a/functions.php +++ b/functions.php @@ -229,8 +229,18 @@ public function __construct() { require_once( 'dt-core/multisite.php' ); require_once( 'dt-core/global-functions.php' ); require_once( 'dt-core/utilities/loader.php' ); + $is_rest = dt_is_rest(); $url_path = dt_get_url_path(); + + $setup_wizard_seen = get_option( 'dt_setup_wizard_seen' ); + + $current_page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; + $is_administrator = current_user_can( 'manage_options' ); + if ( !$is_rest && is_admin() && !$setup_wizard_seen && $is_administrator && $current_page !== 'dt_setup_wizard' ) { + wp_redirect( admin_url( 'admin.php?page=dt_setup_wizard' ) ); + } + require_once( 'dt-core/libraries/posts-to-posts/posts-to-posts.php' ); // P2P library/plugin. Required before DT instance require_once( 'dt-core/libraries/wp-queue/wp-queue.php' ); //w if ( !class_exists( 'Jwt_Auth' ) ) { From 2fbc967c7d1390bc1f158119b8f0740af2d01a62 Mon Sep 17 00:00:00 2001 From: corsacca Date: Thu, 19 Dec 2024 09:36:56 +0100 Subject: [PATCH 25/48] Fix saving enabled and disable modules. (#2623) --- dt-core/admin/admin-settings-endpoints.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/dt-core/admin/admin-settings-endpoints.php b/dt-core/admin/admin-settings-endpoints.php index 9c5316478..e88fda82a 100644 --- a/dt-core/admin/admin-settings-endpoints.php +++ b/dt-core/admin/admin-settings-endpoints.php @@ -258,12 +258,13 @@ public function update_modules( WP_REST_REQUEST $request ) { $modules_to_update = $request->get_param( 'modules' ); $modules_to_update = dt_recursive_sanitize_array( $modules_to_update ); - $modules = dt_get_option( $modules_option_name ); + $modules = get_option( $modules_option_name ); - foreach ( $modules as $key => $module ) { - if ( array_key_exists( $key, $modules_to_update ) ) { - $modules[$key]['enabled'] = !empty( $modules_to_update[$key] ) ? true : false; + foreach ( $modules_to_update as $key => $enabled ){ + if ( !isset( $modules[$key] ) ){ + $modules[$key] = []; } + $modules[$key]['enabled'] = !empty( $enabled ); } update_option( $modules_option_name, $modules ); From 959897bb26460f3142ff2c8a310891e1906e3df6 Mon Sep 17 00:00:00 2001 From: corsacca Date: Thu, 19 Dec 2024 09:42:51 +0100 Subject: [PATCH 26/48] Feat/setup wizard plugins step fixes(#2622) * pre select recommended plugins * Add plugins help text * Fix changing plugin selection when clicking info link --- .../admin/components/setup-wizard-plugins.js | 29 +++++++++++++++++-- dt-core/admin/components/setup-wizard.js | 2 +- dt-core/admin/menu/menu-setup-wizard.php | 2 +- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index 4af226938..f53d1cb5d 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -22,7 +22,23 @@ export class SetupWizardPlugins extends OpenLitElement { constructor() { super(); this.plugins = window.setupWizardShare.data.plugins; - //@todo get list of recommended plugins + let recommended_plugins = []; + Object.keys(window.setupWizardShare.data.use_cases || {}).forEach( + (use_case) => { + if (window.setupWizardShare.data.use_cases[use_case].selected) { + recommended_plugins = recommended_plugins.concat( + window.setupWizardShare.data.use_cases[use_case] + .recommended_plugins, + ); + } + }, + ); + //pre select recommended plugins + this.plugins.forEach((plugin) => { + if (recommended_plugins.includes(plugin.slug)) { + plugin.selected = true; + } + }); } back() { @@ -72,6 +88,15 @@ export class SetupWizardPlugins extends OpenLitElement {

Recommended Plugins

+

+ Plugins are optional and add additional functionality + to Disciple.Tools based on your needs. +

+

+ Plugins can be activated or disactivated at any time. You can find the full list of + Disciple.Tools plugin in the "Extensions (D.T)" tab later. +

+

@@ -111,7 +136,7 @@ export class SetupWizardPlugins extends OpenLitElement { -
${plugin.name} ${action} ${plugin.description} + e.stopImmediatePropagation()}> Plugin Link diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index bfa527a56..97d736f9f 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -312,7 +312,7 @@ export class SetupWizard extends LitElement { vertical-align: bottom; } table { - margin-bottom: 1rem; + padding-bottom: 1rem; } table td { padding: 0.5rem; diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index 3450d3b69..b9b979d53 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -193,11 +193,11 @@ public static function get_plugins_list(){ 'disciple-tools-team-module', 'disciple-tools-storage', 'disciple-tools-prayer-campaigns', - 'dt-home', ]; if ( is_multisite() ){ $enabled_plugins[] = 'disciple-tools-multisite'; } + //dt-home //auto assignment //share app From f5cdb93a7e184edf85c243fb5509ba2341cc5a37 Mon Sep 17 00:00:00 2001 From: corsacca Date: Thu, 19 Dec 2024 10:23:51 +0100 Subject: [PATCH 27/48] Feat/setup wizard wordings (#2624) * Update intro wording and add parts * Use case table and wordings * Update module descriptions and step wordings * Add "Part 2" to plugins * Add Part 3 * add geocoding explanation * wording fixes * wording --- dt-contacts/contacts.php | 4 +- dt-contacts/module-baptisms.php | 6 +- dt-contacts/module-coaching.php | 4 +- dt-contacts/module-faith.php | 4 +- .../admin/components/setup-wizard-intro.js | 22 +++++-- dt-core/admin/components/setup-wizard-keys.js | 22 ++++++- .../admin/components/setup-wizard-modules.js | 14 +++-- .../admin/components/setup-wizard-plugins.js | 4 +- .../components/setup-wizard-use-cases.js | 57 +++++++++++-------- dt-core/admin/menu/menu-setup-wizard.php | 38 +++++++------ dt-groups/groups.php | 2 +- dt-people-groups/people-groups-base.php | 4 +- 12 files changed, 115 insertions(+), 66 deletions(-) diff --git a/dt-contacts/contacts.php b/dt-contacts/contacts.php index dbf409a93..7f62387ad 100644 --- a/dt-contacts/contacts.php +++ b/dt-contacts/contacts.php @@ -9,11 +9,11 @@ 'description' => 'Default contact functionality' ]; $modules['access_module'] = [ - 'name' => 'Access Module', + 'name' => 'Follow-up', 'enabled' => true, 'prerequisites' => [ 'contacts_base' ], 'post_type' => 'contacts', - 'description' => 'Field and workflows for follow-up ministries', + 'description' => 'Manage incoming contacts from various sources and assign them to users for follow-up.', 'submodule' => true ]; return $modules; diff --git a/dt-contacts/module-baptisms.php b/dt-contacts/module-baptisms.php index ced4b4ca7..97d67e126 100644 --- a/dt-contacts/module-baptisms.php +++ b/dt-contacts/module-baptisms.php @@ -3,11 +3,11 @@ add_filter( 'dt_post_type_modules', function( $modules ){ $modules['contacts_baptisms_module'] = [ - 'name' => 'Baptisms Module', + 'name' => 'Baptisms', 'enabled' => true, 'prerequisites' => [ 'contacts_base' ], 'post_type' => 'contacts', - 'description' => 'Adds baptism fields and workflows', + 'description' => 'Track contact baptism relationships, dates and generations', 'submodule' => true, ]; return $modules; @@ -332,4 +332,4 @@ function(e, newContact, fieldKey, optionKey, action) { 'Coaching Module', + 'name' => 'Coaching', 'enabled' => true, 'prerequisites' => [ 'contacts_base' ], 'post_type' => 'contacts', - 'description' => 'Adds coaching fields, list filters and workflows', + 'description' => 'Track contact coaching relationships', 'submodule' => true, ]; return $modules; diff --git a/dt-contacts/module-faith.php b/dt-contacts/module-faith.php index 35518d4f2..c8fa5977d 100644 --- a/dt-contacts/module-faith.php +++ b/dt-contacts/module-faith.php @@ -3,11 +3,11 @@ add_filter( 'dt_post_type_modules', function( $modules ){ $modules['contacts_faith_module'] = [ - 'name' => 'Faith Module', + 'name' => 'Faith', 'enabled' => true, 'prerequisites' => [ 'contacts_base' ], 'post_type' => 'contacts', - 'description' => 'Adds faith field status and faith milestones', + 'description' => 'Track progress of contacts in their faith journey', 'submodule' => true, ]; return $modules; diff --git a/dt-core/admin/components/setup-wizard-intro.js b/dt-core/admin/components/setup-wizard-intro.js index 96eaee140..7e01e9ddd 100644 --- a/dt-core/admin/components/setup-wizard-intro.js +++ b/dt-core/admin/components/setup-wizard-intro.js @@ -18,11 +18,11 @@ export class SetupWizardIntro extends OpenLitElement { render() { return html`
-

Setting up D.T. for you

+

Setting up Disciple.Tools. for you

We're glad you are here, and want to help set you up so you can take - advantage of the powertool that is D.T. + advantage of the powertool that is Disciple.Tools, D.T for short.

D.T. can be used in many ways from managing connections and @@ -31,12 +31,24 @@ export class SetupWizardIntro extends OpenLitElement {

In order to help you, we want to take you through a series of - choices to give you the best start at getting Disiple.Tools setup + choices to give you the best start at getting Disciple.Tools setup ready to suit your needs.

- Feel free to skip this setup stage if you already know what you - need. But if this will be helpful for you let's dive in. +

    +
  1. + In Part 1 we'll choose which parts of the system we want to enable +
  2. +
  3. + In Part 2 we'll choose which plugins we want to install +
  4. +
  5. + In Part 3 we'll look at some extra setup options +
  6. +
+

+

+ Ready? Let's get started.

-

Mapping and Geocoding

+

Part 3: Mapping and Geocoding

+

+ Disciple.Tools comes with high level mapping which is only as + precise as a country county or department. Extra tools are needed to + be able to geolocate to more precise locations like a street address + or a city. See + Geolocation Docs + for more details. +

+

+ We highly recommend setting up MapBox to enable better mapping and + location pins for your records. This however is not required and + Disciple.Tools can be used without it. +

+

+ Mapbox is needed for better maps. You will want to also add a Google + key for more precise worldwide geocoding. +

diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index 2a4f862e5..b6a74f216 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -98,12 +98,12 @@ export class SetupWizardModules extends OpenLitElement { return html`
+

Part 1: Module selection

${this.stage === 'work' ? html` -

Module selection

The recommended modules for your chosen use case(s) are - selected below + selected below.

Feel free to change this selection according to what you need @@ -156,10 +156,14 @@ export class SetupWizardModules extends OpenLitElement { : ''} ${this.stage === 'follow-up' ? html` -

The modules you have chosen have been turned on.

- You can adjust these modules to your liking in the 'Settings - (DT)' section of the Wordpress admin. + The modules you have chosen have been turned on. +

+

+ You can enable and disable these modules to your liking in the + 'Settings (D.T)' section of the Wordpress admin.

` : ''} diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index f53d1cb5d..315488748 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -87,13 +87,13 @@ export class SetupWizardPlugins extends OpenLitElement { return html`
-

Recommended Plugins

+

Part 2: Recommended Plugins

Plugins are optional and add additional functionality to Disciple.Tools based on your needs.

- Plugins can be activated or disactivated at any time. You can find the full list of + Plugins can be activated or deactivated at any time. You can find the full list of Disciple.Tools plugin in the "Extensions (D.T)" tab later.

diff --git a/dt-core/admin/components/setup-wizard-use-cases.js b/dt-core/admin/components/setup-wizard-use-cases.js index 8bf366ef3..7b41d7871 100644 --- a/dt-core/admin/components/setup-wizard-use-cases.js +++ b/dt-core/admin/components/setup-wizard-use-cases.js @@ -88,13 +88,13 @@ export class SetupWizardUseCases extends OpenLitElement { return this.translations.next; } } - toggleOption(event) { - const option = event.target.id; + toggleOption(option) { if (this.options[option]) { this.options[option] = false; } else { this.options[option] = true; } + this.requestUpdate(); } saveOptions() { for (const option in this.options) { @@ -107,9 +107,9 @@ export class SetupWizardUseCases extends OpenLitElement { return html`
+

Part 1: Use Cases

${this.stage === 'prompt' ? html` -

Time to choose your use cases

In the next step you will be able to choose between some common use cases of Disciple.Tools @@ -122,46 +122,53 @@ export class SetupWizardUseCases extends OpenLitElement { : ''} ${this.stage === 'work' ? html` -

Choose a use case

- Choose one of these use cases to tailor what parts of + Choose one or more of these use cases to tailor what parts of Disciple.Tools to turn on.

You can fine tune those choices further to your own needs in the following steps.

-
-
- ${this.useCases && this.useCases.length > 0 - ? this.useCases.map( - (option) => html` -
+ + + + + + + + + ${repeat( + this.useCases, + (option) => option.key, + (option) => html` + + + + + + `, + )} + +
Use CaseDescription
-
-

${option.name}

-

${option.description ?? ''}

-
- - `, - ) - : ''} - +
${option.name}${option.description ?? ''}
` : ''} ${this.stage === 'follow-up' ? html` -

Use cases selected

+

Use cases selected.

- Now that you have chosen your use cases, we can recommend some - modules and plugins that will be helpful for these use cases. + Based on the use cases you have now chosen, we can recommend + some modules and plugins that we think will be helpful.

` : ''} diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index b9b979d53..6cd64b91d 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -146,9 +146,9 @@ public function setup_wizard_steps() { 'component' => 'setup-wizard-use-cases', 'description' => 'How are you planning to use DT?', 'config' => [ - 'media', 'crm', 'dmm', + 'media', ] ], [ @@ -217,10 +217,26 @@ public function setup_wizard_data() : array { $plugin_data = self::get_plugins_list(); $data = [ 'use_cases' => [ + 'crm' => [ + 'key' => 'crm', + 'name' => 'Simple Setup - Relationship Manager', + 'description' => 'Launch people ( seekers or believers ) on a journey that leads + them closer to Christ. Set up your own fields, integrations and workflows to + track them as them go.', + 'recommended_modules' => [], + 'recommended_plugins' => [ + 'disciple-tools-webform', + 'disciple-tools-import', + 'disciple-tools-bulk-magic-link-sender', + ], + ], 'media' => [ 'key' => 'media', - 'name' => 'Access Ministry', - 'description' => 'Are you filtering for contacts for engagement?', + 'name' => 'Media or Follow-up Ministry', + 'description' => 'Do you find seekers through media or through events + or trainings? Let your team(s) steward these leads, letting none fall + through the cracks and inviting them into deeper relationships + with God and others.', 'recommended_modules' => [ 'access_module', ], @@ -232,21 +248,11 @@ public function setup_wizard_data() : array { 'disciple-tools-bulk-magic-link-sender', ], ], - 'crm' => [ - 'key' => 'crm', - 'name' => 'Relationship Manager', - 'description' => 'Are you needing to manage your contacts?', - 'recommended_modules' => [], - 'recommended_plugins' => [ - 'disciple-tools-webform', - 'disciple-tools-import', - 'disciple-tools-bulk-magic-link-sender', - ], - ], 'dmm' => [ 'key' => 'dmm', - 'name' => 'Disciple Making Movements', - 'description' => 'Are you managing multiplying groups?', + 'name' => 'Church Growth and Disciple Making', + 'description' => 'Invest in the growth of individuals and churches as they multiply. + Monitor church health and track individuals through coaching and faith milestones.', 'recommended_modules' => [ 'contacts_baptisms_module', 'contacts_faith_module', diff --git a/dt-groups/groups.php b/dt-groups/groups.php index 9ba708d5d..ee202502b 100644 --- a/dt-groups/groups.php +++ b/dt-groups/groups.php @@ -7,7 +7,7 @@ 'locked' => false, 'prerequisites' => [ 'contacts_base' ], 'post_type' => 'groups', - 'description' => 'Default group functionality' + 'description' => 'Track church health and generational growth' ]; return $modules; }, 20, 1 ); diff --git a/dt-people-groups/people-groups-base.php b/dt-people-groups/people-groups-base.php index 91a955652..0edb2660a 100644 --- a/dt-people-groups/people-groups-base.php +++ b/dt-people-groups/people-groups-base.php @@ -5,11 +5,11 @@ add_filter( 'dt_post_type_modules', function( $modules ){ $modules['people_groups_module'] = [ - 'name' => 'People Groups Module', + 'name' => 'People Groups', 'enabled' => true, 'prerequisites' => [], 'post_type' => 'peoplegroups', - 'description' => 'Enables people groups' + 'description' => 'Create your own people groups or use Joshua Project data. Link your contacts and groups to their people group.', ]; return $modules; }, 20, 1 ); From 17cfab17415fa631a061a337fa832d997eed3407 Mon Sep 17 00:00:00 2001 From: corsac Date: Thu, 19 Dec 2024 10:42:48 +0100 Subject: [PATCH 28/48] Don't run setup wizard on network admin side --- functions.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/functions.php b/functions.php index cf7dd9ef1..c529b9942 100755 --- a/functions.php +++ b/functions.php @@ -233,11 +233,13 @@ public function __construct() { $is_rest = dt_is_rest(); $url_path = dt_get_url_path(); + /** + * Redirect to setup wizard if not seen + */ $setup_wizard_seen = get_option( 'dt_setup_wizard_seen' ); - $current_page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; $is_administrator = current_user_can( 'manage_options' ); - if ( !$is_rest && is_admin() && !$setup_wizard_seen && $is_administrator && $current_page !== 'dt_setup_wizard' ) { + if ( !$is_rest && is_admin() && !is_network_admin() && !wp_doing_cron() && !$setup_wizard_seen && $is_administrator && $current_page !== 'dt_setup_wizard' ) { wp_redirect( admin_url( 'admin.php?page=dt_setup_wizard' ) ); } From 41899254623f94327e8ed13d1fa24bc194012f45 Mon Sep 17 00:00:00 2001 From: corsac Date: Thu, 19 Dec 2024 10:52:06 +0100 Subject: [PATCH 29/48] Bring user to the wizard when they first log in. --- functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions.php b/functions.php index c529b9942..0f5851cae 100755 --- a/functions.php +++ b/functions.php @@ -239,7 +239,7 @@ public function __construct() { $setup_wizard_seen = get_option( 'dt_setup_wizard_seen' ); $current_page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; $is_administrator = current_user_can( 'manage_options' ); - if ( !$is_rest && is_admin() && !is_network_admin() && !wp_doing_cron() && !$setup_wizard_seen && $is_administrator && $current_page !== 'dt_setup_wizard' ) { + if ( !$is_rest && !is_network_admin() && !wp_doing_cron() && !$setup_wizard_seen && $is_administrator && $current_page !== 'dt_setup_wizard' ) { wp_redirect( admin_url( 'admin.php?page=dt_setup_wizard' ) ); } From 5e54ee72530f9781c46814f25aa5957843562633 Mon Sep 17 00:00:00 2001 From: squigglybob Date: Thu, 19 Dec 2024 12:42:40 +0000 Subject: [PATCH 30/48] Feat/setup wizard last bits 2 (#2625) * feat: add the setup wizard to the setup wizard * feat: make next button be saving spinner for all steps * feat: add completed success card on install/activate etc. --- .../admin/components/setup-wizard-controls.js | 9 ++- dt-core/admin/components/setup-wizard-keys.js | 52 +++++++++-------- .../admin/components/setup-wizard-modules.js | 56 +++++++++---------- .../admin/components/setup-wizard-plugins.js | 44 ++++++++++----- dt-core/admin/components/setup-wizard.js | 23 +++++++- dt-core/admin/menu/menu-setup-wizard.php | 20 +++++++ 6 files changed, 129 insertions(+), 75 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-controls.js b/dt-core/admin/components/setup-wizard-controls.js index a5fa07387..45a440619 100644 --- a/dt-core/admin/components/setup-wizard-controls.js +++ b/dt-core/admin/components/setup-wizard-controls.js @@ -16,6 +16,9 @@ export class SetupWizardControls extends OpenLitElement { this.dispatchEvent(new CustomEvent('back')); } next() { + if (this.saving) { + return; + } this.dispatchEvent(new CustomEvent('next')); } skip() { @@ -36,7 +39,11 @@ export class SetupWizardControls extends OpenLitElement { : html` `} - diff --git a/dt-core/admin/components/setup-wizard-keys.js b/dt-core/admin/components/setup-wizard-keys.js index f08595ee4..f1d86aa57 100644 --- a/dt-core/admin/components/setup-wizard-keys.js +++ b/dt-core/admin/components/setup-wizard-keys.js @@ -1,52 +1,47 @@ -import { - html, - css, -} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { html } from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; import { OpenLitElement } from './setup-wizard-open-element.js'; export class SetupWizardKeys extends OpenLitElement { - static styles = [ - css` - :host { - display: block; - } - `, - ]; - static get properties() { return { step: { type: Object }, firstStep: { type: Boolean }, - _options: { type: Object }, + _options: { type: Object, attribute: false }, _saving: { type: Boolean, attribute: false }, + _finished: { type: Boolean, attribute: false }, }; } + constructor() { + super(); + this._saving = false; + this._finished = false; + this._options = { + dt_mapbox_api_key: '', + dt_google_map_key: '', + }; + this.show_mapbox_instructions = false; + this.show_google_instructions = false; + } + back() { this.dispatchEvent(new CustomEvent('back')); } async next() { + if (this._finished) { + this.dispatchEvent(new CustomEvent('next')); + return; + } + this._saving = true; await window.dt_admin_shared.update_dt_options(this._options); this._saving = false; - - this.dispatchEvent(new CustomEvent('next')); + this._finished = true; } skip() { this.dispatchEvent(new CustomEvent('next')); } - constructor() { - super(); - this._saving = false; - this._options = { - dt_mapbox_api_key: '', - dt_google_map_key: '', - }; - this.show_mapbox_instructions = false; - this.show_google_instructions = false; - } - render() { this._options.dt_mapbox_api_key = this.step.config.dt_mapbox_api_key; this._options.dt_google_map_key = this.step.config.dt_google_map_key; @@ -219,13 +214,16 @@ export class SetupWizardKeys extends OpenLitElement {
+ ${this._finished + ? html`
Keys saved
` + : ''}
`; diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index b6a74f216..d02ad8a76 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -1,6 +1,5 @@ import { html, - css, repeat, } from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; import { OpenLitElement } from './setup-wizard-open-element.js'; @@ -13,6 +12,7 @@ export class SetupWizardModules extends OpenLitElement { availableModules: { type: Array, attribute: false }, selectedModules: { type: Object, attribute: false }, loading: { Boolean, attribute: false }, + finished: { Boolean, attribute: false }, }; } @@ -51,24 +51,14 @@ export class SetupWizardModules extends OpenLitElement { } back() { - switch (this.stage) { - case 'follow-up': - this.stage = 'work'; - break; - case 'work': - this.dispatchEvent(new CustomEvent('back')); - break; - } + this.dispatchEvent(new CustomEvent('back')); } async next() { - switch (this.stage) { - case 'work': - await this.submitModuleChanges(); - this.stage = 'follow-up'; - break; - case 'follow-up': - this.dispatchEvent(new CustomEvent('next')); - break; + if (this.finished) { + this.dispatchEvent(new CustomEvent('next')); + } else { + await this.submitModuleChanges(); + this.finished = true; } } skip() { @@ -151,20 +141,23 @@ export class SetupWizardModules extends OpenLitElement { - ${this.loading ? html`` : ''} - ` - : ''} - ${this.stage === 'follow-up' - ? html` -

- The modules you have chosen have been turned on. -

-

- You can enable and disable these modules to your liking in the - 'Settings (D.T)' section of the Wordpress admin. -

+ ${this.finished + ? html` +
+

+ The modules you have chosen have been turned + on. +

+

+ You can enable and disable these modules to your + liking in the 'Settings (D.T)' section of the + Wordpress admin. +

+
+ ` + : ''} ` : ''}
@@ -172,6 +165,7 @@ export class SetupWizardModules extends OpenLitElement { nextLabel=${this.nextLabel()} backLabel=${this.translations.back} skipLabel=${this.translations.skip} + ?saving=${this.loading} @next=${this.next} @back=${this.back} @skip=${this.skip} diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index 315488748..ab8ad8252 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -1,26 +1,19 @@ -import { - html, - css, -} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { html } from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; import { OpenLitElement } from './setup-wizard-open-element.js'; export class SetupWizardPlugins extends OpenLitElement { - static styles = [ - css` - :host { - display: block; - } - `, - ]; - static get properties() { return { step: { type: Object }, firstStep: { type: Boolean }, + loading: { type: Boolean, attribute: false }, + finished: { type: Boolean, attribute: false }, }; } constructor() { super(); + this.loading = false; + this.finished = false; this.plugins = window.setupWizardShare.data.plugins; let recommended_plugins = []; Object.keys(window.setupWizardShare.data.use_cases || {}).forEach( @@ -48,6 +41,11 @@ export class SetupWizardPlugins extends OpenLitElement { this.dispatchEvent(new CustomEvent('next')); } async next() { + if (this.finished) { + this.dispatchEvent(new CustomEvent('next')); + return; + } + this.loading = true; const plugins_to_install = this.plugins.filter((plugin) => plugin.selected); for (let plugin of plugins_to_install) { @@ -68,9 +66,9 @@ export class SetupWizardPlugins extends OpenLitElement { plugin.active = true; } } + this.loading = false; + this.finished = true; this.requestUpdate(); - - this.dispatchEvent(new CustomEvent('next')); } select_all() { @@ -82,6 +80,12 @@ export class SetupWizardPlugins extends OpenLitElement { }); this.requestUpdate(); } + nextLabel() { + if (this.finished) { + return 'Next'; + } + return 'Install and Activate Selected Plugins'; + } render() { return html` @@ -146,10 +150,20 @@ export class SetupWizardPlugins extends OpenLitElement { })} + ${ + this.finished + ? html` +
+ Finished installing and activating plugins +
+ ` + : '' + }
* { margin-block: 0.5rem; @@ -173,10 +175,18 @@ export class SetupWizard extends LitElement { background-color: var(--primary-color); color: var(--default-color); } + .btn-primary.saving { + background-color: var(--default-dark); + cursor: progress; + } .btn-primary:hover, .btn-primary:focus, .btn-primary:active { background-color: var(--primary-hover-color); + + &.saving { + background-color: var(--default-dark); + } } .btn-outline { border: 1px solid transparent; @@ -226,6 +236,17 @@ export class SetupWizard extends LitElement { .btn-card.disabled:hover { background-color: var(--default-hover-color); } + .card { + background-color: var(--default-color); + border-radius: 12px; + padding: 1rem 2rem; + width: fit-content; + + &.success { + background-color: var(--secondary-color); + color: var(--default-color); + } + } .input-group { display: flex; flex-direction: column; diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index 6cd64b91d..73079b435 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -39,6 +39,7 @@ public function __construct() { }); add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); add_filter( 'script_loader_tag', [ $this, 'filter_script_loader_tag' ], 10, 2 ); + add_filter( 'dt_setup_wizard_items', [ $this, 'dt_setup_wizard_items' ], 10, 1 ); } public function enqueue_scripts(){ @@ -70,6 +71,25 @@ public function enqueue_scripts(){ ] ); } + public function dt_setup_wizard_items( $items ){ + + $is_completed = !empty( get_option( 'dt_setup_wizard_completed' ) ); + $is_administrator = current_user_can( 'manage_options' ); + + $setup_wizard_step = [ + 'label' => 'Setup Wizard', + 'description' => 'D.T. can be used in many ways from managing connections and relationships, all the way through to tracking and managing a movement of Disciple Making. In order to help you, we want to take you through a series of choices to give you the best start at getting Disciple.Tools setup ready to suit your needs.', + 'link' => esc_url( admin_url( 'admin.php?page=dt_setup_wizard' ) ), + 'complete' => $is_completed || !$is_administrator, + 'hide_mark_done' => true + ]; + + return [ + 'getting_started' => $setup_wizard_step, + ...$items, + ]; + } + public function has_access_permission() { return !current_user_can( 'manage_dt' ); } From f2181f01bffc81f6a908ab0377b63968656fe431 Mon Sep 17 00:00:00 2001 From: corsacca Date: Thu, 19 Dec 2024 13:49:27 +0100 Subject: [PATCH 31/48] only network admins can install plugins on multisites (#2627) --- dt-core/admin/components/setup-wizard-plugins.js | 14 ++++++++++++++ dt-core/admin/menu/menu-setup-wizard.php | 1 + 2 files changed, 15 insertions(+) diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index ab8ad8252..f73035e3e 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -129,6 +129,12 @@ export class SetupWizardPlugins extends OpenLitElement { .checked=${plugin.selected} />`; } + if ( + !window.setupWizardShare.can_install_plugins && + !plugin.installed + ) { + action = 'Not Available*'; + } return html` + ${ + !window.setupWizardShare.can_install_plugins + ? html`

+ *Note: Only your server administrator can + install plugins. +

` + : '' + } ${ this.finished ? html` diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index 73079b435..bf941995d 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -68,6 +68,7 @@ public function enqueue_scripts(){ 'steps' => $this->setup_wizard_steps(), 'data' => $this->setup_wizard_data(), 'admin_url' => admin_url(), + 'can_install_plugins' => current_user_can( 'install_plugins' ), ] ); } From 28af1ef2a7a4dcb89ad86b1a4f4f8bbd3ea35a8a Mon Sep 17 00:00:00 2001 From: corsacca Date: Thu, 19 Dec 2024 13:58:53 +0100 Subject: [PATCH 32/48] Feat/setup wizard Wordings (#2626) * typo * update use case order * remove suggest coaching. Add suggest faith and baptisms to dmm module. Suggest import csv plugin * wording upgrades * wording upgrades --- .../components/setup-wizard-celebration.js | 12 ++++---- .../admin/components/setup-wizard-intro.js | 6 ++-- dt-core/admin/components/setup-wizard-keys.js | 29 ++++++++++--------- .../admin/components/setup-wizard-modules.js | 4 +-- .../admin/components/setup-wizard-plugins.js | 2 +- dt-core/admin/menu/menu-setup-wizard.php | 6 ++-- 6 files changed, 32 insertions(+), 27 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-celebration.js b/dt-core/admin/components/setup-wizard-celebration.js index 3e152d9d5..d6ed81e99 100644 --- a/dt-core/admin/components/setup-wizard-celebration.js +++ b/dt-core/admin/components/setup-wizard-celebration.js @@ -30,14 +30,14 @@ export class SetupWizardCelebration extends OpenLitElement {

All finished

- You can change all of these choices in the Settings (D.T.) tab in - the WP admin. + You can change all of these choices in the "Settings (D.T)" tab in + the WordPress Admin.

- D.T. has a huge ability to be customized to serve your needs. If you - have any questions or need any further assistance in getting D.T. to - work for you, please reach out on our community forum or our discord - channel. + Disciple.Tools has a huge ability to be customized to serve your + needs. If you have any questions or need any further assistance in + getting Disciple.Tools. to work for you, please reach out on our + community forum or our discord channel.

Community Forum diff --git a/dt-core/admin/components/setup-wizard-intro.js b/dt-core/admin/components/setup-wizard-intro.js index 7e01e9ddd..699f73484 100644 --- a/dt-core/admin/components/setup-wizard-intro.js +++ b/dt-core/admin/components/setup-wizard-intro.js @@ -18,14 +18,14 @@ export class SetupWizardIntro extends OpenLitElement { render() { return html`
-

Setting up Disciple.Tools. for you

+

Setting up Disciple.Tools for you

We're glad you are here, and want to help set you up so you can take - advantage of the powertool that is Disciple.Tools, D.T for short. + advantage of the power tool that is Disciple.Tools.

- D.T. can be used in many ways from managing connections and + Disciple.Tools can be used in many ways from managing connections and relationships, all the way through to tracking and managing a movement of Disciple Making.

diff --git a/dt-core/admin/components/setup-wizard-keys.js b/dt-core/admin/components/setup-wizard-keys.js index f1d86aa57..27eff2a68 100644 --- a/dt-core/admin/components/setup-wizard-keys.js +++ b/dt-core/admin/components/setup-wizard-keys.js @@ -50,18 +50,19 @@ export class SetupWizardKeys extends OpenLitElement {

Part 3: Mapping and Geocoding

- Disciple.Tools comes with high level mapping which is only as - precise as a country county or department. Extra tools are needed to - be able to geolocate to more precise locations like a street address - or a city. See + Disciple.Tools comes with basic mapping which is only as precise as + a country county or department. Extra tools are needed to be able to + geolocate to more precise locations like a street address or a city. + See Geolocation Docs for more details.

- We highly recommend setting up MapBox to enable better mapping and + We highly recommend setting up Mapbox to enable better mapping and location pins for your records. This however is not required and Disciple.Tools can be used without it.

@@ -72,16 +73,16 @@ export class SetupWizardKeys extends OpenLitElement { - + - +
KeyName DescriptionValueKey
Mapbox key - Upgrade maps and get precise locations with a MapBox key. + Upgrade maps and get precise locations with a Mapbox key.
Go to MapBox.comMapbox.com.
  • Register for a new account (MapBox.comMapbox.com)
    (email required. A credit card might be required, @@ -161,7 +162,7 @@ export class SetupWizardKeys extends OpenLitElement { this.requestUpdate(); }} > - Show Instructions + Expand Instructions
  • Go to - https://console.cloud.google.com.
  • diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index d02ad8a76..5677dab83 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -97,7 +97,7 @@ export class SetupWizardModules extends OpenLitElement {

    Feel free to change this selection according to what you need - D.T to do. + Disciple.Tools to do.

    @@ -152,7 +152,7 @@ export class SetupWizardModules extends OpenLitElement {

    You can enable and disable these modules to your - liking in the 'Settings (D.T)' section of the + liking in the "Settings (D.T)" section of the Wordpress admin.

    diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index f73035e3e..f97f3fc31 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -115,7 +115,7 @@ export class SetupWizardPlugins extends OpenLitElement { - + diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index bf941995d..670cd78b1 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -168,8 +168,8 @@ public function setup_wizard_steps() { 'description' => 'How are you planning to use DT?', 'config' => [ 'crm', - 'dmm', 'media', + 'dmm', ] ], [ @@ -260,6 +260,8 @@ public function setup_wizard_data() : array { with God and others.', 'recommended_modules' => [ 'access_module', + 'contacts_faith_module', + 'contacts_baptisms_module', ], 'recommended_plugins' => [ 'disciple-tools-webform', @@ -277,7 +279,6 @@ public function setup_wizard_data() : array { 'recommended_modules' => [ 'contacts_baptisms_module', 'contacts_faith_module', - 'contacts_coaching_module', 'groups_base', 'people_groups_module' ], @@ -285,6 +286,7 @@ public function setup_wizard_data() : array { 'disciple-tools-webform', 'disciple-tools-bulk-magic-link-sender', 'disciple-tools-training', + 'disciple-tools-import', ], ], ], From 1978d2e2d31c914e5d4aa7642cb0d1f8069483aa Mon Sep 17 00:00:00 2001 From: corsacca Date: Thu, 19 Dec 2024 15:33:03 +0100 Subject: [PATCH 33/48] Only show the setup wizard on new installs (#2628) * Only show the setup wizard on new installs * Move redirect to happen after migrations. Update migration number * rename option to dt_setup_wizard_completed --- .../configuration/class-migration-engine.php | 2 +- .../migrations/0060-setup-wizard-only-new.php | 28 +++++++++++++++++++ functions.php | 22 ++++++++------- 3 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 dt-core/migrations/0060-setup-wizard-only-new.php diff --git a/dt-core/configuration/class-migration-engine.php b/dt-core/configuration/class-migration-engine.php index 4d903e2c9..01797ba31 100644 --- a/dt-core/configuration/class-migration-engine.php +++ b/dt-core/configuration/class-migration-engine.php @@ -12,7 +12,7 @@ class Disciple_Tools_Migration_Engine { - public static $migration_number = 59; + public static $migration_number = 60; protected static $migrations = null; diff --git a/dt-core/migrations/0060-setup-wizard-only-new.php b/dt-core/migrations/0060-setup-wizard-only-new.php new file mode 100644 index 000000000..ef3b7a721 --- /dev/null +++ b/dt-core/migrations/0060-setup-wizard-only-new.php @@ -0,0 +1,28 @@ += 60 ){ + return; + } + + update_option( 'dt_setup_wizard_completed', true ); + } + + public function down() { + } + + public function test() { + } + + public function get_expected_tables(): array { + return []; + } +} diff --git a/functions.php b/functions.php index 0f5851cae..42bb0f0a3 100755 --- a/functions.php +++ b/functions.php @@ -87,6 +87,18 @@ function dt_theme_load() { } catch ( Throwable $e ) { new WP_Error( 'migration_error', 'Migration engine failed to migrate.', [ 'message' => $e->getMessage() ] ); } + + $is_rest = dt_is_rest(); + + /** + * Redirect to setup wizard if not seen + */ + $setup_wizard_seen = get_option( 'dt_setup_wizard_seen' ); + $current_page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; + $is_administrator = current_user_can( 'manage_options' ); + if ( !$is_rest && !is_network_admin() && !wp_doing_cron() && !$setup_wizard_seen && $is_administrator && $current_page !== 'dt_setup_wizard' ) { + wp_redirect( admin_url( 'admin.php?page=dt_setup_wizard' ) ); + } } ); /** @@ -233,16 +245,6 @@ public function __construct() { $is_rest = dt_is_rest(); $url_path = dt_get_url_path(); - /** - * Redirect to setup wizard if not seen - */ - $setup_wizard_seen = get_option( 'dt_setup_wizard_seen' ); - $current_page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; - $is_administrator = current_user_can( 'manage_options' ); - if ( !$is_rest && !is_network_admin() && !wp_doing_cron() && !$setup_wizard_seen && $is_administrator && $current_page !== 'dt_setup_wizard' ) { - wp_redirect( admin_url( 'admin.php?page=dt_setup_wizard' ) ); - } - require_once( 'dt-core/libraries/posts-to-posts/posts-to-posts.php' ); // P2P library/plugin. Required before DT instance require_once( 'dt-core/libraries/wp-queue/wp-queue.php' ); //w if ( !class_exists( 'Jwt_Auth' ) ) { From 089257923be394cd8cfa9eebfa4340d308a2842d Mon Sep 17 00:00:00 2001 From: corsac Date: Thu, 19 Dec 2024 15:50:37 +0100 Subject: [PATCH 34/48] update geocoding wording --- dt-core/admin/components/setup-wizard-keys.js | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-keys.js b/dt-core/admin/components/setup-wizard-keys.js index 27eff2a68..8e15ac8eb 100644 --- a/dt-core/admin/components/setup-wizard-keys.js +++ b/dt-core/admin/components/setup-wizard-keys.js @@ -50,25 +50,29 @@ export class SetupWizardKeys extends OpenLitElement {

    Part 3: Mapping and Geocoding

    - Disciple.Tools comes with basic mapping which is only as precise as - a country county or department. Extra tools are needed to be able to - geolocate to more precise locations like a street address or a city. - See - Geolocation Docs - for more details. + Disciple.Tools provides basic mapping functionality for locations at + the country, state, or county level. For more precise geolocation, + such as street addresses or cities, additional tools like Mapbox and + Google API keys are recommended but not mandatory. See +

    +

    + Mapbox offers detailed maps with precise location pins, while Google + enables accurate worldwide geocoding, especially in certain + countries where Mapbox data is limited.

    - We highly recommend setting up Mapbox to enable better mapping and - location pins for your records. This however is not required and - Disciple.Tools can be used without it. + Both tools provide free usage tiers sufficient for most users, + though exceeding limits may incur charges. Setup involves creating + accounts, generating API keys, and adding them here (or in + Disciple.Tools settings later).

    - Mapbox is needed for better maps. You will want to also add a Google - key for more precise worldwide geocoding. + For additional details and information, refer to the + Geolocation Documentation.

    DescriptionInfoMore Info
    From f427fd6649cf0f7489f98978fad4bc1fcd1039c4 Mon Sep 17 00:00:00 2001 From: corsac Date: Thu, 19 Dec 2024 15:51:02 +0100 Subject: [PATCH 35/48] fix word --- dt-core/admin/components/setup-wizard-keys.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dt-core/admin/components/setup-wizard-keys.js b/dt-core/admin/components/setup-wizard-keys.js index 8e15ac8eb..e7441459c 100644 --- a/dt-core/admin/components/setup-wizard-keys.js +++ b/dt-core/admin/components/setup-wizard-keys.js @@ -53,7 +53,7 @@ export class SetupWizardKeys extends OpenLitElement { Disciple.Tools provides basic mapping functionality for locations at the country, state, or county level. For more precise geolocation, such as street addresses or cities, additional tools like Mapbox and - Google API keys are recommended but not mandatory. See + Google API keys are recommended but not mandatory.

    Mapbox offers detailed maps with precise location pins, while Google From e987631d1c30983b94022e7fb45f49c8917b6a38 Mon Sep 17 00:00:00 2001 From: corsacca Date: Thu, 19 Dec 2024 15:59:26 +0100 Subject: [PATCH 36/48] Feat/setup wizard dash tasks (#2629) * Only use `dt_setup_wizard_completed` * remove duplicate see setup wizard box * Disciple.Tools Setup Tasks * merge tiles and fields and point to customizations --- .../components/setup-wizard-celebration.js | 1 - dt-core/admin/components/setup-wizard.js | 2 +- dt-core/admin/config-dashboard.php | 30 ++----------------- functions.php | 2 +- 4 files changed, 5 insertions(+), 30 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-celebration.js b/dt-core/admin/components/setup-wizard-celebration.js index d6ed81e99..172b49fcb 100644 --- a/dt-core/admin/components/setup-wizard-celebration.js +++ b/dt-core/admin/components/setup-wizard-celebration.js @@ -18,7 +18,6 @@ export class SetupWizardCelebration extends OpenLitElement { } async next() { await window.dt_admin_shared.update_dt_options({ - dt_setup_wizard_seen: true, dt_setup_wizard_completed: true, }); window.location.href = window.setupWizardShare.admin_url; diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 49aa32c05..a17c5d833 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -421,7 +421,7 @@ export class SetupWizard extends LitElement { } async exit() { await window.dt_admin_shared.update_dt_options({ - dt_setup_wizard_seen: true, + dt_setup_wizard_completed: true, }); location.href = this.adminUrl; } diff --git a/dt-core/admin/config-dashboard.php b/dt-core/admin/config-dashboard.php index a9ad079ed..8f989a8c7 100644 --- a/dt-core/admin/config-dashboard.php +++ b/dt-core/admin/config-dashboard.php @@ -231,20 +231,8 @@ function dt_show_news_widget() { add_meta_box( 'dt_news_feed', esc_html__( 'Disciple.Tools News Feed', 'disciple_tools' ), 'dt_show_news_widget', 'dashboard', 'side', 'high' ); - $dt_setup_wizard_completed = get_option( 'dt_setup_wizard_completed' ); - $is_administrator = current_user_can( 'manage_options' ); - if ( empty( $dt_setup_wizard_completed ) && $is_administrator ) { - wp_add_dashboard_widget( 'dt_setup_wizard_new', 'Need help setting up Disciple.Tools?', function (){ - ?> - - Go to New Setup Wizard - - $b['complete']; - } ); - ?>

    Completed of tasks

    @@ -409,16 +392,9 @@ function dt_show_news_widget() { 'hide_mark_done' => false ]; $items['explore_custom_fields'] = [ - 'label' => 'Explore Custom Fields', + 'label' => 'Explore Custom Tiles and Fields', 'description' => 'Explore the custom fields section and unlock its full potential.', - 'link' => admin_url( 'admin.php?page=dt_options&tab=custom-fields' ), - 'complete' => false, - 'hide_mark_done' => false - ]; - $items['explore_custom_tiles'] = [ - 'label' => 'Explore Custom Tiles', - 'description' => 'Explore the custom tiles section and personalize your Disicple.Tools instance.', - 'link' => admin_url( 'admin.php?page=dt_options&tab=custom-tiles' ), + 'link' => admin_url( 'admin.php?page=dt_customizations' ), 'complete' => false, 'hide_mark_done' => false ]; diff --git a/functions.php b/functions.php index 42bb0f0a3..bfcaa6431 100755 --- a/functions.php +++ b/functions.php @@ -93,7 +93,7 @@ function dt_theme_load() { /** * Redirect to setup wizard if not seen */ - $setup_wizard_seen = get_option( 'dt_setup_wizard_seen' ); + $setup_wizard_seen = get_option( 'dt_setup_wizard_completed' ); $current_page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; $is_administrator = current_user_can( 'manage_options' ); if ( !$is_rest && !is_network_admin() && !wp_doing_cron() && !$setup_wizard_seen && $is_administrator && $current_page !== 'dt_setup_wizard' ) { From 07bfc0da10425be0fba529fc97323d7ecaef3abc Mon Sep 17 00:00:00 2001 From: squigglybob Date: Thu, 19 Dec 2024 15:05:33 +0000 Subject: [PATCH 37/48] Feat/sidebar progress (#2630) * feat: add sidebar of step names * feat: add sidebar for progress * feat: remove prompt phase from useCases * feat: use Confirm then Next on buttons throughout * feat: right align success cards with the buttons * fix: positioning of step markers to allow correct guttering --- dt-core/admin/components/setup-wizard-keys.js | 11 ++- .../admin/components/setup-wizard-modules.js | 7 +- .../admin/components/setup-wizard-plugins.js | 4 +- .../components/setup-wizard-use-cases.js | 22 +---- dt-core/admin/components/setup-wizard.js | 99 +++++++++++++++++-- dt-core/admin/menu/menu-setup-wizard.php | 12 ++- 6 files changed, 118 insertions(+), 37 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-keys.js b/dt-core/admin/components/setup-wizard-keys.js index e7441459c..e62d9b9e0 100644 --- a/dt-core/admin/components/setup-wizard-keys.js +++ b/dt-core/admin/components/setup-wizard-keys.js @@ -41,6 +41,12 @@ export class SetupWizardKeys extends OpenLitElement { skip() { this.dispatchEvent(new CustomEvent('next')); } + nextLabel() { + if (this._finished) { + return 'Next'; + } + return 'Confirm'; + } render() { this._options.dt_mapbox_api_key = this.step.config.dt_mapbox_api_key; @@ -222,15 +228,16 @@ export class SetupWizardKeys extends OpenLitElement {
    ${this._finished - ? html`
    Keys saved
    ` + ? html`
    Keys saved
    ` : ''}
    `; diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index 5677dab83..89c2f7fce 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -65,7 +65,10 @@ export class SetupWizardModules extends OpenLitElement { this.dispatchEvent(new CustomEvent('next')); } nextLabel() { - return this.translations.next; + if (this.finished) { + return this.translations.next; + } + return this.translations.confirm; } toggleModule(key) { const checkbox = this.renderRoot.querySelector(`#${key}`); @@ -143,7 +146,7 @@ export class SetupWizardModules extends OpenLitElement { ${this.finished ? html` -
    +

    The modules you have chosen have been turned diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index f97f3fc31..f2dd503e3 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -84,7 +84,7 @@ export class SetupWizardPlugins extends OpenLitElement { if (this.finished) { return 'Next'; } - return 'Install and Activate Selected Plugins'; + return 'Confirm'; } render() { @@ -167,7 +167,7 @@ export class SetupWizardPlugins extends OpenLitElement { ${ this.finished ? html` -

    +
    Finished installing and activating plugins
    ` diff --git a/dt-core/admin/components/setup-wizard-use-cases.js b/dt-core/admin/components/setup-wizard-use-cases.js index 7b41d7871..7ea725f93 100644 --- a/dt-core/admin/components/setup-wizard-use-cases.js +++ b/dt-core/admin/components/setup-wizard-use-cases.js @@ -19,7 +19,7 @@ export class SetupWizardUseCases extends OpenLitElement { constructor() { super(); - this.stage = 'prompt'; + this.stage = 'work'; this.data = window.setupWizardShare.data; this.translations = window.setupWizardShare.translations; this.availableModules = []; @@ -56,18 +56,12 @@ export class SetupWizardUseCases extends OpenLitElement { this.stage = 'work'; break; case 'work': - this.stage = 'prompt'; - break; - case 'prompt': this.dispatchEvent(new CustomEvent('back')); break; } } next() { switch (this.stage) { - case 'prompt': - this.stage = 'work'; - break; case 'work': this.saveOptions(); this.stage = 'follow-up'; @@ -108,19 +102,7 @@ export class SetupWizardUseCases extends OpenLitElement {

    Part 1: Use Cases

    - ${this.stage === 'prompt' - ? html` -

    - In the next step you will be able to choose between some - common use cases of Disciple.Tools -

    -

    - You will still be able to customize to your particular use - case. -

    - ` - : ''} - ${this.stage === 'work' + ${this.stage === 'work' && this.useCases ? html`

    Choose one or more of these use cases to tailor what parts of diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index a17c5d833..ea29b51cd 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -1,6 +1,7 @@ import { html, css, + repeat, LitElement, staticHtml, unsafeStatic, @@ -20,6 +21,7 @@ export class SetupWizard extends LitElement { --default-color: #efefef; --default-hover-color: #cdcdcd; --default-dark: #ababab; + --s1: 1rem; } /* Resets */ /* Inherit fonts for inputs and buttons */ @@ -56,6 +58,10 @@ export class SetupWizard extends LitElement { p { max-width: 60ch; } + ul[role='list'], + ol[role='list'] { + list-style: none; + } button { border: none; padding: 0.5rem 1.5rem; @@ -145,6 +151,25 @@ export class SetupWizard extends LitElement { .cover > :last-child:not(.content) { margin-block-end: 0; } + .with-sidebar { + display: flex; + flex-wrap: wrap; + gap: var(--s1); + } + + .with-sidebar > :first-child { + flex-grow: 1; + } + + .with-sidebar > :last-child { + flex-basis: 0; + flex-grow: 999; + min-inline-size: 50%; + } + .center { + margin-left: auto; + margin-right: auto; + } /* Utilities */ .ms-auto { margin-left: auto; @@ -167,9 +192,27 @@ export class SetupWizard extends LitElement { padding: 1rem; } .sidebar { - background-color: grey; - color: white; + background-color: white; padding: 1rem; + border-radius: 10px; + } + .steps { + padding-left: 24px; + } + .step { + position: relative; + } + .step::before { + content: var(--svg-url, ''); + position: absolute; + top: 0; + bottom: 0; + height: 100%; + left: 0; + transform: translateX(-150%) scale(1.4); + } + .step[current]::before { + transform: translate(-210%) scale(1.4); } .btn-primary { background-color: var(--primary-color); @@ -361,6 +404,7 @@ export class SetupWizard extends LitElement { this.translations = window.setupWizardShare.translations; this.adminUrl = window.setupWizardShare.admin_url; + this.imageUrl = window.setupWizardShare.image_url; this.steps = []; this.currentStepNumber = 0; @@ -383,6 +427,27 @@ export class SetupWizard extends LitElement { this.steps = window.setupWizardShare.steps; } } + updated() { + const allSteps = this.renderRoot.querySelectorAll('.step') || []; + const completedSteps = + this.renderRoot.querySelectorAll('.step[completed]') || []; + const currentStep = this.renderRoot.querySelector('.step[current]'); + allSteps.forEach((step) => { + step.style.setProperty('--svg-url', ''); + }); + completedSteps.forEach((step) => { + step.style.setProperty( + '--svg-url', + `url('${this.imageUrl + 'verified.svg'}')`, + ); + }); + if (currentStep) { + currentStep.style.setProperty( + '--svg-url', + `url('${this.imageUrl + 'chevron_right.svg'}')`, + ); + } + } render() { return html` @@ -393,10 +458,32 @@ export class SetupWizard extends LitElement {

    ${this.translations.title}

    -
    - ${this.isKitchenSink - ? this.kitchenSink() - : html` ${this.renderStep()} `} +
    + +
    + ${this.isKitchenSink + ? this.kitchenSink() + : html` ${this.renderStep()} `} +
    `; diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index 670cd78b1..65b4dd15f 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -68,6 +68,7 @@ public function enqueue_scripts(){ 'steps' => $this->setup_wizard_steps(), 'data' => $this->setup_wizard_data(), 'admin_url' => admin_url(), + 'image_url' => trailingslashit( get_template_directory_uri() ) . 'dt-assets/images/', 'can_install_plugins' => current_user_can( 'install_plugins' ), ] ); } @@ -155,15 +156,15 @@ public function content() { } public function setup_wizard_steps() { - $bloginfo = get_bloginfo(); $steps = [ [ 'key' => 'intro', + 'name' => 'Intro', 'component' => 'setup-wizard-intro', ], [ 'key' => 'choose_your_use_cases', - 'name' => 'Choose your use cases', + 'name' => 'Part 1: Use cases', 'component' => 'setup-wizard-use-cases', 'description' => 'How are you planning to use DT?', 'config' => [ @@ -174,17 +175,17 @@ public function setup_wizard_steps() { ], [ 'key' => 'choose_your_modules', - 'name' => 'Choose your modules', + 'name' => 'Part 1: Modules', 'component' => 'setup-wizard-modules', 'description' => 'What modules do you want to use?', ], [ - 'name' => 'Plugins', + 'name' => 'Part 2: Plugins', 'description' => 'Choose which plugins to install.', 'component' => 'setup-wizard-plugins', ], [ - 'name' => 'Site keys', + 'name' => 'Part 3: Site keys', 'description' => 'Fill in some site details', 'component' => 'setup-wizard-keys', 'config' => [ @@ -194,6 +195,7 @@ public function setup_wizard_steps() { ], [ 'key' => 'celebration', + 'name' => 'Celebration', 'component' => 'setup-wizard-celebration', ] ]; From 405fb33029500c52f3b45cf7298e8503451b41f0 Mon Sep 17 00:00:00 2001 From: Nath Date: Thu, 19 Dec 2024 15:10:31 +0000 Subject: [PATCH 38/48] fix: add more spacing between cover elements fixes spacing between content and controls --- dt-core/admin/components/setup-wizard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index ea29b51cd..b4d521ae6 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -140,7 +140,7 @@ export class SetupWizard extends LitElement { min-block-size: min(80vh, 800px); } .cover > * { - margin-block: 0.5rem; + margin-block: 2rem; } .cover > .content { margin-block-end: auto; From f88609d78f73d4784b5c9bdf6420ae246d9cd1a2 Mon Sep 17 00:00:00 2001 From: corsac Date: Thu, 19 Dec 2024 16:20:54 +0100 Subject: [PATCH 39/48] dt_setup_wizard_completed filter --- functions.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/functions.php b/functions.php index bfcaa6431..5ce06506e 100755 --- a/functions.php +++ b/functions.php @@ -93,10 +93,11 @@ function dt_theme_load() { /** * Redirect to setup wizard if not seen */ - $setup_wizard_seen = get_option( 'dt_setup_wizard_completed' ); + $setup_wizard_completed = get_option( 'dt_setup_wizard_completed' ); + $setup_wizard_completed = apply_filters( 'dt_setup_wizard_completed', $setup_wizard_completed ); $current_page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; $is_administrator = current_user_can( 'manage_options' ); - if ( !$is_rest && !is_network_admin() && !wp_doing_cron() && !$setup_wizard_seen && $is_administrator && $current_page !== 'dt_setup_wizard' ) { + if ( !$is_rest && !is_network_admin() && !wp_doing_cron() && !$setup_wizard_completed && $is_administrator && $current_page !== 'dt_setup_wizard' ) { wp_redirect( admin_url( 'admin.php?page=dt_setup_wizard' ) ); } } ); From 4a948ce274b5c37094179bcc513ce0dbac1aa0b9 Mon Sep 17 00:00:00 2001 From: Nath Date: Thu, 19 Dec 2024 15:48:57 +0000 Subject: [PATCH 40/48] feat: simplify button styles; use btn-outline on keys instructions --- dt-core/admin/components/setup-wizard-keys.js | 2 ++ dt-core/admin/components/setup-wizard.js | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dt-core/admin/components/setup-wizard-keys.js b/dt-core/admin/components/setup-wizard-keys.js index e62d9b9e0..2ff1bff8a 100644 --- a/dt-core/admin/components/setup-wizard-keys.js +++ b/dt-core/admin/components/setup-wizard-keys.js @@ -95,6 +95,7 @@ export class SetupWizardKeys extends OpenLitElement { Upgrade maps and get precise locations with a Mapbox key.
    - ${this._finished - ? html`
    Keys saved
    ` - : ''} +
    + ${this.toastMessage} +
    { + this.toastMessage = ''; + }, 3000); + } toggleModule(key) { const checkbox = this.renderRoot.querySelector(`#${key}`); if (this.selectedModules[key]) { @@ -84,14 +93,22 @@ export class SetupWizardModules extends OpenLitElement { this.loading = true; this.requestUpdate(); await window.dt_admin_shared.modules_update(this.selectedModules); + + this.dispatchEvent( + new CustomEvent('enableSteps', { + detail: { people_groups: this.selectedModules.people_groups_module }, + }), + ); + + window.setupWizardShare.enabledModules = this.selectedModules; this.loading = false; } render() { return html`
    +

    Part 1: Module selection

    -

    Part 1: Module selection

    ${this.stage === 'work' ? html`

    @@ -146,13 +163,11 @@ export class SetupWizardModules extends OpenLitElement { ${this.finished ? html` -

    -

    - The modules you have chosen have been turned - on. -

    +
    +

    ${this.toastMessage}

    You can enable and disable these modules to your liking in the "Settings (D.T)" section of the diff --git a/dt-core/admin/components/setup-wizard-people-groups.js b/dt-core/admin/components/setup-wizard-people-groups.js new file mode 100644 index 000000000..f397a204f --- /dev/null +++ b/dt-core/admin/components/setup-wizard-people-groups.js @@ -0,0 +1,350 @@ +import { + html, + repeat, +} from 'https://cdn.jsdelivr.net/gh/lit/dist@2.4.0/all/lit-all.min.js'; +import { OpenLitElement } from './setup-wizard-open-element.js'; + +export class SetupWizardPeopleGroups extends OpenLitElement { + static get properties() { + return { + step: { type: Object }, + peopleGroups: { type: Array, attribute: false }, + batchSize: { type: Number, attribute: false }, + countryInstalling: { type: String, attribute: false }, + toastMessage: { type: String, attribute: false }, + firstStep: { type: Boolean }, + saving: { type: Boolean, attribute: false }, + finished: { type: Boolean, attribute: false }, + gettingBatches: { type: Boolean, attribute: false }, + importingAll: { type: Boolean, attribute: false }, + totalPeopleGroupsInstalled: { type: Boolean, attribute: false }, + totalPeopleGroups: { type: Boolean, attribute: false }, + importingFinished: { type: Boolean, attribute: false }, + }; + } + + constructor() { + super(); + this.saving = false; + this.finished = false; + this.toastMessage = ''; + this.peopleGroups = []; + this.peopleGroupsInstalled = []; + + this.stoppingImport = false; + this.importStopped = false; + } + + back() { + this.dispatchEvent(new CustomEvent('back')); + } + async next() { + if (this.isFinished() || this.getSelectedPeopleGroups().length === 0) { + this.dispatchEvent(new CustomEvent('next')); + return; + } + + this.saving = true; + await this.installPeopleGroups(); + this.saving = false; + this.finished = true; + this.setToastMessage('People groups installed'); + } + skip() { + this.dispatchEvent(new CustomEvent('next')); + } + nextLabel() { + if (this.isFinished() || this.getSelectedPeopleGroups().length === 0) { + return 'Next'; + } + return 'Confirm'; + } + isFinished() { + return this.finished || this.importingFinished; + } + + async selectCountry(event) { + const country = event.target.value; + + const peopleGroups = + await window.dt_admin_shared.people_groups_get(country); + + this.peopleGroups = peopleGroups; + } + selectPeopleGroup(people) { + people.selected = !people.selected; + this.finished = false; + this.requestUpdate(); + } + selectAll() { + const selectAllOrNone = + this.getSelectedPeopleGroups().length === this.peopleGroups.length + ? false + : true; + const peopleGroupsInstalled = this.peopleGroups.filter( + ({ installed, ROP3 }) => + !installed && !this.peopleGroupsInstalled.includes(ROP3), + ); + + peopleGroupsInstalled.forEach((group) => { + group.selected = selectAllOrNone; + }); + if (peopleGroupsInstalled.length > 0) { + this.finished = false; + this.requestUpdate(); + } + } + getSelectedPeopleGroups() { + return this.peopleGroups.filter((peopleGroup) => peopleGroup.selected); + } + async installPeopleGroups() { + const peopleGroupsToInstall = this.getSelectedPeopleGroups(); + const installationPromises = peopleGroupsToInstall.map((peopleGroup, i) => { + return this.wait(500 * i).then(() => { + return this.installPeopleGroup(peopleGroup); + }); + }); + + await Promise.all(installationPromises); + } + async installPeopleGroup(peopleGroup) { + peopleGroup.selected = false; + peopleGroup.installing = true; + this.requestUpdate(); + + let data = { + rop3: peopleGroup.ROP3, + country: peopleGroup.Ctry, + location_grid: peopleGroup.location_grid, + }; + + await window.dt_admin_shared.people_groups_install(data); + + peopleGroup.installing = false; + peopleGroup.installed = true; + this.peopleGroupsInstalled.push(peopleGroup.ROP3); + this.requestUpdate(); + } + wait(time) { + return new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, time); + }); + } + + async getAllBatches() { + this.gettingBatches = true; + const result = await window.dt_admin_shared.people_groups_get_batches(); + this.gettingBatches = false; + + if ( + confirm( + `Are you sure you want to import a total of ${result.total_records} people groups?`, + ) + ) { + return this.importAll(result.batches, result.total_records); + } + } + + async importAll(batches, total) { + this.stoppingImport = false; + this.importStopped = false; + this.importingAll = true; + this.totalPeopleGroupsInstalled = 0; + this.totalPeopleGroups = total; + for (const country in batches) { + if (this.stoppingImport) { + this.stoppingImport = false; + this.importStopped = true; + this.finishImport('Importing stopped'); + return; + } + const batch = batches[country]; + + this.countryInstalling = country; + this.batchSize = batch.length; + + await window.dt_admin_shared.people_groups_install_batch(batch); + + this.totalPeopleGroupsInstalled = + this.totalPeopleGroupsInstalled + batch.length; + /* if (this.batchNumber === 2) { + break; + } */ + } + this.finishImport('Finished importing all people groups'); + } + finishImport(message) { + this.importingAll = false; + this.importingFinished = true; + this.setToastMessage(message); + } + stopImport() { + this.stoppingImport = true; + this.requestUpdate(); + } + setToastMessage(message) { + this.toastMessage = message; + setTimeout(() => { + this.toastMessage = ''; + }, 3000); + } + + render() { + return html` +

    +

    Import People Groups

    +
    +
    +

    + If you're not sure which people groups to add, you can add them + all.
    (There are around 17,000.) +

    + ${!this.importingAll && !this.importingFinished + ? html` + + ` + : ''} + ${this.importingAll && + !this.importingFinished && + !this.importStopped + ? html` +
    + +

    + Installing ${this.batchSize} people groups of + ${this.countryInstalling} +

    +

    + Installed: + ${this.totalPeopleGroupsInstalled}/${this + .totalPeopleGroups} +

    +
    + ` + : ''} + ${this.importingAll + ? html` + + ` + : ''} + ${this.stoppingImport ? html`

    Stopping Import

    ` : ''} + ${this.importStopped ? html`

    Import Stopped

    ` : ''} +
    +
    + ${!this.importingAll && !this.importingFinished + ? html`
    +

    or

    +
      +
    1. Choose a country in the dropdown
    2. +
    3. + Add only the people groups that you need for linking to + contacts in D.T. +
    4. +
    + +
    ` + : ''} +
    + ${this.peopleGroups.length > 0 + ? html` + + + + + + + + + + ${repeat( + this.peopleGroups, + (people) => people[28], + (people) => { + let action = 'Added'; + if (people.installing) { + action = html``; + } else if ( + !people.installed && + !this.peopleGroupsInstalled.includes(people.ROP3) + ) { + action = html``; + } + + return html` + this.selectPeopleGroup(people)} + > + + + + + `; + }, + )} + +
    NameROP3 + Add
    + +
    ${people.PeopNameAcrossCountries}${people.ROP3}${action}
    + ` + : ''} +
    +
    +
    + ${this.toastMessage} +
    +
    + +
    + `; + } +} +customElements.define('setup-wizard-people-groups', SetupWizardPeopleGroups); diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index f2dd503e3..5029ed9c6 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -6,12 +6,14 @@ export class SetupWizardPlugins extends OpenLitElement { return { step: { type: Object }, firstStep: { type: Boolean }, + toastMessage: { type: String, attribute: false }, loading: { type: Boolean, attribute: false }, finished: { type: Boolean, attribute: false }, }; } constructor() { super(); + this.toastMessage = ''; this.loading = false; this.finished = false; this.plugins = window.setupWizardShare.data.plugins; @@ -41,12 +43,12 @@ export class SetupWizardPlugins extends OpenLitElement { this.dispatchEvent(new CustomEvent('next')); } async next() { - if (this.finished) { + const plugins_to_install = this.getPluginsToInstall(); + if (this.finished || plugins_to_install.length === 0) { this.dispatchEvent(new CustomEvent('next')); return; } this.loading = true; - const plugins_to_install = this.plugins.filter((plugin) => plugin.selected); for (let plugin of plugins_to_install) { if (!plugin.installed) { @@ -68,6 +70,8 @@ export class SetupWizardPlugins extends OpenLitElement { } this.loading = false; this.finished = true; + plugins_to_install.length && + this.setToastMessage('Finished installing and activating plugins'); this.requestUpdate(); } @@ -81,17 +85,28 @@ export class SetupWizardPlugins extends OpenLitElement { this.requestUpdate(); } nextLabel() { - if (this.finished) { + const plugins_to_install = this.getPluginsToInstall(); + if (this.finished || plugins_to_install.length === 0) { return 'Next'; } return 'Confirm'; } + setToastMessage(message) { + this.toastMessage = message; + setTimeout(() => { + this.toastMessage = ''; + }, 3000); + } + getPluginsToInstall() { + const plugins_to_install = this.plugins.filter((plugin) => plugin.selected); + return plugins_to_install; + } render() { return html`
    +

    Part 2: Recommended Plugins

    -

    Part 2: Recommended Plugins

    Plugins are optional and add additional functionality to Disciple.Tools based on your needs. @@ -159,20 +174,18 @@ export class SetupWizardPlugins extends OpenLitElement { ${ !window.setupWizardShare.can_install_plugins ? html`

    + ${this.toastMessage} *Note: Only your server administrator can install plugins.

    ` : '' } - ${ - this.finished - ? html` -
    - Finished installing and activating plugins -
    - ` - : '' - } +
    + ${this.toastMessage} +
    +

    Part 1: Use Cases

    -

    Part 1: Use Cases

    ${this.stage === 'work' && this.useCases ? html`

    diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index 69ee63583..d937f0bb4 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -135,11 +135,12 @@ export class SetupWizard extends LitElement { } .cover { display: flex; + position: relative; flex-direction: column; - min-block-size: min(80vh, 800px); + height: min(80vh, 800px); } .cover > * { - margin-block: 2rem; + margin-block: 1rem; } .cover > .content { margin-block-end: auto; @@ -179,6 +180,9 @@ export class SetupWizard extends LitElement { .align-start { align-items: flex-start; } + .fit-content { + width: fit-content; + } .white { color: white; } @@ -195,6 +199,9 @@ export class SetupWizard extends LitElement { padding: 1rem; border-radius: 10px; } + .content { + overflow-y: auto; + } .steps { padding-left: 24px; } @@ -289,6 +296,23 @@ export class SetupWizard extends LitElement { color: var(--default-color); } } + .toast { + position: absolute; + bottom: 0; + right: 0; + margin: 1rem; + margin-bottom: 3rem; + transition: + opacity 300ms ease 200ms, + transform 500ms cubic-bezier(0.5, 0.05, 0.2, 1.5) 200ms; + + &[data-state='empty'] { + opacity: 0; + transform: translateY(0.25em); + transition: none; + padding: 0; + } + } .input-group { display: flex; flex-direction: column; @@ -461,7 +485,7 @@ export class SetupWizard extends LitElement {

    diff --git a/dt-core/admin/components/setup-wizard-keys.js b/dt-core/admin/components/setup-wizard-keys.js index 775ba7300..55c69ddaa 100644 --- a/dt-core/admin/components/setup-wizard-keys.js +++ b/dt-core/admin/components/setup-wizard-keys.js @@ -62,7 +62,7 @@ export class SetupWizardKeys extends OpenLitElement { this._options.dt_google_map_key = this.step.config.dt_google_map_key; return html`
    -

    Part 3: Mapping and Geocoding

    +

    Mapping and Geocoding

    Disciple.Tools provides basic mapping functionality for locations at diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index 35b97168c..f8a5f495d 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -107,7 +107,7 @@ export class SetupWizardModules extends OpenLitElement { render() { return html`

    -

    Part 1: Module selection

    +

    Module selection

    ${this.stage === 'work' ? html` diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index 5029ed9c6..ff46d26c0 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -105,7 +105,7 @@ export class SetupWizardPlugins extends OpenLitElement { render() { return html`
    -

    Part 2: Recommended Plugins

    +

    Recommended Plugins

    Plugins are optional and add additional functionality @@ -130,40 +130,40 @@ export class SetupWizardPlugins extends OpenLitElement { Description - More Info ${this.plugins.map((plugin) => { + const disabled = + !window.setupWizardShare.can_install_plugins && + !plugin.installed; let action = 'Active'; if (plugin.installing) { action = html``; } else if (!plugin.active) { action = html``; - } - if ( - !window.setupWizardShare.can_install_plugins && - !plugin.installed - ) { - action = 'Not Available*'; + type="checkbox" + .checked=${plugin.selected} + .disabled=${disabled} + />${disabled ? '*' : ''}`; } return html` { - plugin.selected = !plugin.selected; + plugin.selected = !plugin.selected && !disabled; this.requestUpdate(); }} > ${plugin.name} ${action} - ${plugin.description} - e.stopImmediatePropagation()}> + e.stopImmediatePropagation()} + > + ${plugin.description} - Plugin Link + More Info @@ -175,8 +175,8 @@ export class SetupWizardPlugins extends OpenLitElement { !window.setupWizardShare.can_install_plugins ? html`

    ${this.toastMessage} - *Note: Only your server administrator can - install plugins. + *Only your server administrator can install + plugins.

    ` : '' } diff --git a/dt-core/admin/components/setup-wizard-use-cases.js b/dt-core/admin/components/setup-wizard-use-cases.js index 77e612bce..cfa28d535 100644 --- a/dt-core/admin/components/setup-wizard-use-cases.js +++ b/dt-core/admin/components/setup-wizard-use-cases.js @@ -100,7 +100,7 @@ export class SetupWizardUseCases extends OpenLitElement { render() { return html`
    -

    Part 1: Use Cases

    +

    Use Cases

    ${this.stage === 'work' && this.useCases ? html` diff --git a/dt-core/admin/components/setup-wizard.js b/dt-core/admin/components/setup-wizard.js index d937f0bb4..41d2226c7 100644 --- a/dt-core/admin/components/setup-wizard.js +++ b/dt-core/admin/components/setup-wizard.js @@ -204,6 +204,7 @@ export class SetupWizard extends LitElement { } .steps { padding-left: 24px; + padding-right: 24px; } .step { position: relative; @@ -495,6 +496,7 @@ export class SetupWizard extends LitElement { ?current=${i === this.currentStepNumber} key=${step.key} > + ${i + 1}. ${step.name} `; diff --git a/dt-core/admin/menu/menu-setup-wizard.php b/dt-core/admin/menu/menu-setup-wizard.php index c7e6daca7..6f7f9dc8b 100644 --- a/dt-core/admin/menu/menu-setup-wizard.php +++ b/dt-core/admin/menu/menu-setup-wizard.php @@ -165,7 +165,7 @@ public function setup_wizard_steps() { ], [ 'key' => 'choose_your_use_cases', - 'name' => 'Part 1: Use cases', + 'name' => 'Use cases', 'component' => 'setup-wizard-use-cases', 'description' => 'How are you planning to use DT?', 'config' => [ @@ -176,19 +176,19 @@ public function setup_wizard_steps() { ], [ 'key' => 'choose_your_modules', - 'name' => 'Part 1: Modules', + 'name' => 'Modules', 'component' => 'setup-wizard-modules', 'description' => 'What modules do you want to use?', ], [ 'key' => 'plugins', - 'name' => 'Part 2: Plugins', + 'name' => 'Plugins', 'description' => 'Choose which plugins to install.', 'component' => 'setup-wizard-plugins', ], [ 'key' => 'site_keys', - 'name' => 'Part 3: Site keys', + 'name' => 'Site keys', 'description' => 'Fill in some site details', 'component' => 'setup-wizard-keys', 'config' => [ @@ -208,7 +208,7 @@ public function setup_wizard_steps() { ], [ 'key' => 'celebration', - 'name' => 'Celebration', + 'name' => 'Finished', 'component' => 'setup-wizard-celebration', ] ]; From 55de7586854dc95699dadf1ef2c8810962ab1105 Mon Sep 17 00:00:00 2001 From: corsac Date: Tue, 7 Jan 2025 16:24:54 +0100 Subject: [PATCH 43/48] intro and finish wording --- dt-core/admin/components/setup-wizard-celebration.js | 5 +++-- dt-core/admin/components/setup-wizard-intro.js | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-celebration.js b/dt-core/admin/components/setup-wizard-celebration.js index 6056cc2d6..fe5ed2e85 100644 --- a/dt-core/admin/components/setup-wizard-celebration.js +++ b/dt-core/admin/components/setup-wizard-celebration.js @@ -29,8 +29,9 @@ export class SetupWizardCelebration extends OpenLitElement {

    All finished

    - You can change all of these choices in the "Settings (D.T)" tab in - the WordPress Admin. + After closing this setup wizard, you'll find yourself in the + WordPress admin dashboard. From there, you can explore these + settings and continue customizing your Disciple.Tools site.

    Disciple.Tools has a huge ability to be customized to serve your diff --git a/dt-core/admin/components/setup-wizard-intro.js b/dt-core/admin/components/setup-wizard-intro.js index 699f73484..6ff86977f 100644 --- a/dt-core/admin/components/setup-wizard-intro.js +++ b/dt-core/admin/components/setup-wizard-intro.js @@ -21,7 +21,7 @@ export class SetupWizardIntro extends OpenLitElement {

    Setting up Disciple.Tools for you

    - We're glad you are here, and want to help set you up so you can take + We're glad you are here, and we want to help set you up so you can take advantage of the power tool that is Disciple.Tools.

    @@ -37,13 +37,13 @@ export class SetupWizardIntro extends OpenLitElement {

    1. - In Part 1 we'll choose which parts of the system we want to enable + We'll choose which parts of the system we want to enable
    2. - In Part 2 we'll choose which plugins we want to install + We'll select which plugins we want to install
    3. - In Part 3 we'll look at some extra setup options + We'll look at some extra setup options

    From 899f3aaef0b8c62b7a24aa40fc9c8760d9e06860 Mon Sep 17 00:00:00 2001 From: squigglybob Date: Wed, 8 Jan 2025 14:15:33 +0000 Subject: [PATCH 44/48] tweask (#2637) * feat: reduce space between title and text on intro slide * refactor: change class flow --> stack * fix: force macs to show scrollbars * feat: add dismiss button to toasts; feat: persist toasts * feat: add toast instead of followup slide for use-case selection * refactor: change class cover --> step-layout; fix: hide toast close button when toast is hidden * feat: only save keys if a key has changed * chore: disable people-groups step by default * fix: moving backwards past hidden step * fix: prevent user from navigating away from setup plugins page while installing --- .../components/setup-wizard-celebration.js | 4 +- .../admin/components/setup-wizard-details.js | 2 +- .../admin/components/setup-wizard-intro.js | 4 +- dt-core/admin/components/setup-wizard-keys.js | 21 ++++--- .../admin/components/setup-wizard-modules.js | 41 ++++++------- .../components/setup-wizard-people-groups.js | 21 ++++--- .../admin/components/setup-wizard-plugins.js | 28 ++++++--- .../components/setup-wizard-use-cases.js | 38 ++++++++---- dt-core/admin/components/setup-wizard.js | 59 ++++++++++++++----- dt-core/admin/menu/menu-setup-wizard.php | 2 +- 10 files changed, 143 insertions(+), 77 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-celebration.js b/dt-core/admin/components/setup-wizard-celebration.js index fe5ed2e85..e33214a59 100644 --- a/dt-core/admin/components/setup-wizard-celebration.js +++ b/dt-core/admin/components/setup-wizard-celebration.js @@ -25,9 +25,9 @@ export class SetupWizardCelebration extends OpenLitElement { render() { return html` -
    +

    All finished

    -
    +

    After closing this setup wizard, you'll find yourself in the WordPress admin dashboard. From there, you can explore these diff --git a/dt-core/admin/components/setup-wizard-details.js b/dt-core/admin/components/setup-wizard-details.js index dd61f5026..ebea0e740 100644 --- a/dt-core/admin/components/setup-wizard-details.js +++ b/dt-core/admin/components/setup-wizard-details.js @@ -29,7 +29,7 @@ export class SetupWizardDetails extends OpenLitElement { render() { return html` -

    +
    Sort out details here
    +

    Setting up Disciple.Tools for you

    -
    +

    We're glad you are here, and we want to help set you up so you can take advantage of the power tool that is Disciple.Tools. diff --git a/dt-core/admin/components/setup-wizard-keys.js b/dt-core/admin/components/setup-wizard-keys.js index 55c69ddaa..53146c453 100644 --- a/dt-core/admin/components/setup-wizard-keys.js +++ b/dt-core/admin/components/setup-wizard-keys.js @@ -7,6 +7,7 @@ export class SetupWizardKeys extends OpenLitElement { step: { type: Object }, firstStep: { type: Boolean }, toastMessage: { type: String, attribute: false }, + _changed: { type: String, attribute: false }, _options: { type: Object, attribute: false }, _saving: { type: Boolean, attribute: false }, _finished: { type: Boolean, attribute: false }, @@ -18,6 +19,7 @@ export class SetupWizardKeys extends OpenLitElement { this.toastMessage = ''; this._saving = false; this._finished = false; + this._changed = false; this._options = { dt_mapbox_api_key: '', dt_google_map_key: '', @@ -30,7 +32,7 @@ export class SetupWizardKeys extends OpenLitElement { this.dispatchEvent(new CustomEvent('back')); } async next() { - if (this._finished) { + if (this._finished || !this._changed) { this.dispatchEvent(new CustomEvent('next')); return; } @@ -45,25 +47,25 @@ export class SetupWizardKeys extends OpenLitElement { this.dispatchEvent(new CustomEvent('next')); } nextLabel() { - if (this._finished) { + if (this._finished || !this._changed) { return 'Next'; } return 'Confirm'; } setToastMessage(message) { this.toastMessage = message; - setTimeout(() => { - this.toastMessage = ''; - }, 3000); + } + dismissToast() { + this.toastMessage = ''; } render() { this._options.dt_mapbox_api_key = this.step.config.dt_mapbox_api_key; this._options.dt_google_map_key = this.step.config.dt_google_map_key; return html` -

    +

    Mapping and Geocoding

    -
    +

    Disciple.Tools provides basic mapping functionality for locations at the country, state, or county level. For more precise geolocation, @@ -163,6 +165,7 @@ export class SetupWizardKeys extends OpenLitElement { name="mapbox" .value=${this.step.config.dt_mapbox_api_key || ''} @input=${(e) => { + this._changed = true; this._options.dt_mapbox_api_key = e.target.value; }} /> @@ -231,6 +234,7 @@ export class SetupWizardKeys extends OpenLitElement { name="mapbox" .value=${this.step.config.dt_google_map_key || ''} @input=${(e) => { + this._changed = true; this._options.dt_google_map_key = e.target.value; }} /> @@ -242,6 +246,9 @@ export class SetupWizardKeys extends OpenLitElement { class="ms-auto card success toast" data-state=${this.toastMessage.length ? '' : 'empty'} > + ${this.toastMessage}

    diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index f8a5f495d..366e03c8a 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -75,9 +75,9 @@ export class SetupWizardModules extends OpenLitElement { } setToastMessage(message) { this.toastMessage = message; - setTimeout(() => { - this.toastMessage = ''; - }, 3000); + } + dismissToast() { + this.toastMessage = ''; } toggleModule(key) { const checkbox = this.renderRoot.querySelector(`#${key}`); @@ -106,9 +106,9 @@ export class SetupWizardModules extends OpenLitElement { render() { return html` -
    +

    Module selection

    -
    +
    ${this.stage === 'work' ? html`

    @@ -161,21 +161,22 @@ export class SetupWizardModules extends OpenLitElement { - ${this.finished - ? html` -

    -

    ${this.toastMessage}

    -

    - You can enable and disable these modules to your - liking in the "Settings (D.T)" section of the - Wordpress admin. -

    -
    - ` - : ''} +
    + +

    ${this.toastMessage}

    +

    + You can enable and disable these modules to your liking in + the "Settings (D.T)" section of the Wordpress admin. +

    +
    ` : ''}
    diff --git a/dt-core/admin/components/setup-wizard-people-groups.js b/dt-core/admin/components/setup-wizard-people-groups.js index f397a204f..87eaba1f7 100644 --- a/dt-core/admin/components/setup-wizard-people-groups.js +++ b/dt-core/admin/components/setup-wizard-people-groups.js @@ -186,17 +186,17 @@ export class SetupWizardPeopleGroups extends OpenLitElement { } setToastMessage(message) { this.toastMessage = message; - setTimeout(() => { - this.toastMessage = ''; - }, 3000); + } + dismissToast() { + this.toastMessage = ''; } render() { return html` -
    +

    Import People Groups

    -
    -
    +
    +

    If you're not sure which people groups to add, you can add them all.
    (There are around 17,000.) @@ -218,7 +218,7 @@ export class SetupWizardPeopleGroups extends OpenLitElement { !this.importingFinished && !this.importStopped ? html` -

    +

    Installing ${this.batchSize} people groups of @@ -245,7 +245,7 @@ export class SetupWizardPeopleGroups extends OpenLitElement { ${this.stoppingImport ? html`

    Stopping Import

    ` : ''} ${this.importStopped ? html`

    Import Stopped

    ` : ''}
    -
    +
    ${!this.importingAll && !this.importingFinished ? html`

    or

    @@ -274,7 +274,7 @@ export class SetupWizardPeopleGroups extends OpenLitElement {
    ` : ''} -
    +
    ${this.peopleGroups.length > 0 ? html` @@ -332,6 +332,9 @@ export class SetupWizardPeopleGroups extends OpenLitElement { class="ms-auto card success toast" data-state=${this.toastMessage.length ? '' : 'empty'} > + ${this.toastMessage} diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index ff46d26c0..d503d4a06 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -37,14 +37,16 @@ export class SetupWizardPlugins extends OpenLitElement { } back() { - this.dispatchEvent(new CustomEvent('back')); + if (this.canNavigate()) { + this.dispatchEvent(new CustomEvent('back')); + } } skip() { this.dispatchEvent(new CustomEvent('next')); } async next() { const plugins_to_install = this.getPluginsToInstall(); - if (this.finished || plugins_to_install.length === 0) { + if (this.canNavigate()) { this.dispatchEvent(new CustomEvent('next')); return; } @@ -85,17 +87,19 @@ export class SetupWizardPlugins extends OpenLitElement { this.requestUpdate(); } nextLabel() { - const plugins_to_install = this.getPluginsToInstall(); - if (this.finished || plugins_to_install.length === 0) { + if (this.canNavigate()) { return 'Next'; } return 'Confirm'; } + canNavigate() { + return this.finished || this.getPluginsToInstall().length === 0; + } setToastMessage(message) { this.toastMessage = message; - setTimeout(() => { - this.toastMessage = ''; - }, 3000); + } + dismissToast() { + this.toastMessage = ''; } getPluginsToInstall() { const plugins_to_install = this.plugins.filter((plugin) => plugin.selected); @@ -104,9 +108,9 @@ export class SetupWizardPlugins extends OpenLitElement { render() { return html` -
    +

    Recommended Plugins

    -
    +

    Plugins are optional and add additional functionality to Disciple.Tools based on your needs. @@ -184,6 +188,12 @@ export class SetupWizardPlugins extends OpenLitElement { class="ms-auto card success toast" data-state=${this.toastMessage.length ? '' : 'empty'} > + ${this.toastMessage}

    diff --git a/dt-core/admin/components/setup-wizard-use-cases.js b/dt-core/admin/components/setup-wizard-use-cases.js index cfa28d535..932116939 100644 --- a/dt-core/admin/components/setup-wizard-use-cases.js +++ b/dt-core/admin/components/setup-wizard-use-cases.js @@ -9,6 +9,7 @@ export class SetupWizardUseCases extends OpenLitElement { return { step: { type: Object }, firstStep: { type: Boolean }, + toastMessage: { type: String, attribute: false }, stage: { type: String, attribute: false }, useCases: { type: Array, attribute: false }, options: { type: Object, attribute: false }, @@ -20,6 +21,7 @@ export class SetupWizardUseCases extends OpenLitElement { constructor() { super(); this.stage = 'work'; + this.toastMessage = ''; this.data = window.setupWizardShare.data; this.translations = window.setupWizardShare.translations; this.availableModules = []; @@ -95,14 +97,21 @@ export class SetupWizardUseCases extends OpenLitElement { window.setupWizardShare.data.use_cases[option].selected = this.options[option]; } + this.setToastMessage('Use cases selected'); + } + setToastMessage(message) { + this.toastMessage = message; + } + dismissToast() { + this.toastMessage = ''; } render() { return html` -
    +

    Use Cases

    -
    - ${this.stage === 'work' && this.useCases +
    + ${this.useCases ? html`

    Choose one or more of these use cases to tailor what parts of @@ -145,15 +154,20 @@ export class SetupWizardUseCases extends OpenLitElement {

    ` : ''} - ${this.stage === 'follow-up' - ? html` -

    Use cases selected.

    -

    - Based on the use cases you have now chosen, we can recommend - some modules and plugins that we think will be helpful. -

    - ` - : ''} +
    + + +

    ${this.toastMessage}

    +

    + Based on the use cases you have now chosen, we can recommend some + modules and plugins that we think will be helpful. +

    +
    * { + .stack > * { margin-block: 0; } - .flow > * + * { + .stack > * + * { margin-block-start: var(--spacing, 1rem); } .grid { @@ -133,22 +144,22 @@ export class SetupWizard extends LitElement { ); } } - .cover { + .step-layout { display: flex; position: relative; flex-direction: column; height: min(80vh, 800px); } - .cover > * { + .step-layout > * { margin-block: 1rem; } - .cover > .content { + .step-layout > .content { margin-block-end: auto; } - .cover > :first-child:not(.content) { + .step-layout > :first-child:not(.content) { margin-block-start: 0; } - .cover > :last-child:not(.content) { + .step-layout > :last-child:not(.content) { margin-block-end: 0; } .with-sidebar { @@ -302,7 +313,7 @@ export class SetupWizard extends LitElement { bottom: 0; right: 0; margin: 1rem; - margin-bottom: 3rem; + margin-bottom: 4rem; transition: opacity 300ms ease 200ms, transform 500ms cubic-bezier(0.5, 0.05, 0.2, 1.5) 200ms; @@ -312,6 +323,22 @@ export class SetupWizard extends LitElement { transform: translateY(0.25em); transition: none; padding: 0; + + & .close-btn { + height: 0; + } + } + + & .close-btn { + position: absolute; + color: inherit; + top: 0; + right: -0.8rem; + + &:hover { + border-color: transparent; + color: black; + } } } .input-group { @@ -484,7 +511,7 @@ export class SetupWizard extends LitElement {
    { plugin.selected = !plugin.selected && !disabled; + this.finished = false; this.requestUpdate(); }} > From 985fe6fc82bfbead01b96ee25858b45a677d37dd Mon Sep 17 00:00:00 2001 From: corsac Date: Thu, 9 Jan 2025 16:42:48 +0100 Subject: [PATCH 47/48] Also save options change after "Confirm" is clicked --- dt-core/admin/components/setup-wizard-keys.js | 22 +++++++++++++------ .../admin/components/setup-wizard-modules.js | 2 ++ .../admin/components/setup-wizard-plugins.js | 14 ++++++------ .../components/setup-wizard-use-cases.js | 16 +++++++++++--- 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-keys.js b/dt-core/admin/components/setup-wizard-keys.js index 53146c453..c25b19297 100644 --- a/dt-core/admin/components/setup-wizard-keys.js +++ b/dt-core/admin/components/setup-wizard-keys.js @@ -32,15 +32,15 @@ export class SetupWizardKeys extends OpenLitElement { this.dispatchEvent(new CustomEvent('back')); } async next() { - if (this._finished || !this._changed) { + if (this._finished && !this._changed) { this.dispatchEvent(new CustomEvent('next')); return; } - this._saving = true; await window.dt_admin_shared.update_dt_options(this._options); this._saving = false; this._finished = true; + this._changed = false; this.setToastMessage('Keys saved'); } skip() { @@ -59,9 +59,19 @@ export class SetupWizardKeys extends OpenLitElement { this.toastMessage = ''; } - render() { + updateOption(option, value) { + this._options[option] = value; + this._changed = true; + this._finished = false; + this.dismissToast(); + } + + firstUpdated() { this._options.dt_mapbox_api_key = this.step.config.dt_mapbox_api_key; this._options.dt_google_map_key = this.step.config.dt_google_map_key; + } + + render() { return html`

    Mapping and Geocoding

    @@ -165,8 +175,7 @@ export class SetupWizardKeys extends OpenLitElement { name="mapbox" .value=${this.step.config.dt_mapbox_api_key || ''} @input=${(e) => { - this._changed = true; - this._options.dt_mapbox_api_key = e.target.value; + this.updateOption('dt_mapbox_api_key', e.target.value); }} /> @@ -234,8 +243,7 @@ export class SetupWizardKeys extends OpenLitElement { name="mapbox" .value=${this.step.config.dt_google_map_key || ''} @input=${(e) => { - this._changed = true; - this._options.dt_google_map_key = e.target.value; + this.updateOption('dt_google_map_key', e.target.value); }} /> diff --git a/dt-core/admin/components/setup-wizard-modules.js b/dt-core/admin/components/setup-wizard-modules.js index 366e03c8a..c6a783bc3 100644 --- a/dt-core/admin/components/setup-wizard-modules.js +++ b/dt-core/admin/components/setup-wizard-modules.js @@ -88,6 +88,8 @@ export class SetupWizardModules extends OpenLitElement { checkbox.checked = true; this.selectedModules[key] = true; } + this.finished = false; + this.dismissToast(); } async submitModuleChanges() { this.loading = true; diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index 85714af39..c815e2259 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -106,6 +106,12 @@ export class SetupWizardPlugins extends OpenLitElement { getPluginsToInstall() { return this.plugins.filter((plugin) => plugin.selected && !plugin.active); } + togglePlugin(plugin, disabled) { + plugin.selected = !plugin.selected && !disabled; + this.finished = false; + this.dismissToast(); + this.requestUpdate(); + } render() { return html` @@ -154,13 +160,7 @@ export class SetupWizardPlugins extends OpenLitElement { } return html` -
    { - plugin.selected = !plugin.selected && !disabled; - this.finished = false; - this.requestUpdate(); - }} - > + this.togglePlugin(plugin, disabled)}>
    ${plugin.name} ${action} this.options[option]); + } saveOptions() { for (const option in this.options) { window.setupWizardShare.data.use_cases[option].selected = this.options[option]; } - this.setToastMessage('Use cases selected'); + if (this.selectedOptions().length) { + this.setToastMessage('Use cases selected'); + } else { + this.setToastMessage('No use cases selected'); + } } setToastMessage(message) { this.toastMessage = message; @@ -164,8 +173,9 @@ export class SetupWizardUseCases extends OpenLitElement {

    ${this.toastMessage}

    - Based on the use cases you have now chosen, we can recommend some - modules and plugins that we think will be helpful. + ${this.selectedOptions().length + ? 'Based on the use case(s) you have now chosen, we can recommend some modules and plugins that we think will be helpful.' + : 'In the next steps, simply choose what options seems best'}

    From 486fac790917fe3fc239b6b39e60969de32642ba Mon Sep 17 00:00:00 2001 From: corsac Date: Thu, 9 Jan 2025 16:47:06 +0100 Subject: [PATCH 48/48] Plugins: Only disable back and skip buttons while plugins are installing --- dt-core/admin/components/setup-wizard-plugins.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dt-core/admin/components/setup-wizard-plugins.js b/dt-core/admin/components/setup-wizard-plugins.js index c815e2259..1c8370a03 100644 --- a/dt-core/admin/components/setup-wizard-plugins.js +++ b/dt-core/admin/components/setup-wizard-plugins.js @@ -39,12 +39,14 @@ export class SetupWizardPlugins extends OpenLitElement { } back() { - if (this.canNavigate()) { + if (!this.loading) { this.dispatchEvent(new CustomEvent('back')); } } skip() { - this.dispatchEvent(new CustomEvent('next')); + if (!this.loading) { + this.dispatchEvent(new CustomEvent('next')); + } } async next() { const plugins_to_install = this.getPluginsToInstall();