diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 18b10d9c9..10970190a 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,3 +1,6 @@ +Do not merge PR, only review it and approve/request changes. +Merge is allowed by QA Engineer only. + **Related Issue/Ticket:** **PLEASE CHECK BASE BRANCH FOR YOUR PR** diff --git a/README.md b/README.md index 7be13ba38..cd87283c3 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Virtual Y is a package for Open Y and consists of features, needed to organize g Active development is currently happening at [fivejars/openy_gated_content](https://github.com/fivejars/openy_gated_content). Pull requests should be submitted there. They will be pulled into this repo as they are reviewed and released. ## Server requirements -In order to work Virtual Y requires HTTP server to allow +In order to work Virtual Y requires HTTP server to allow - GET - POST - DELETE @@ -56,7 +56,7 @@ If you facing with [error] Configuration user.role.anonymous depends on configuration (rest.resource.openy_gc_auth_custom, rest.resource.openy_gc_auth_custom_confirm) that will not exist after import. ``` It’s looks like that previous updates were failed. -If you dont use Custom auth provider - disable that module and it should help. +If you don't use Custom auth provider - disable that module, and it should help. If you use it - try manually delete that config and try again ```sh drush cdel rest.resource.openy_gc_auth_custom_confirm @@ -64,7 +64,7 @@ drush cdel rest.resource.openy_gc_auth_custom_confirm Another one ``` -Drupal\Component\Plugin\Exception\PluginNotFoundException while adding Views handlers for field Parts of day on index Default: The "" plugin does not exist. Valid plugin IDs for Drupal\search_api\DataType\DataTypePluginManager are: boolean, date, integer, decimal, string, text in +Drupal\Component\Plugin\Exception\PluginNotFoundException while adding Views handlers for field Parts of day on index Default: The "" plugin does not exist. Valid plugin IDs for Drupal\search_api\DataType\DataTypePluginManager are: boolean, date, integer, decimal, string, text in ``` This error was because one of the service lived in a custom folder. Try to analyse what service is broken and fix it. diff --git a/assets/css/admin_ui_styles.css b/assets/css/admin_ui_styles.css index 880b378d4..6c3b08c01 100644 --- a/assets/css/admin_ui_styles.css +++ b/assets/css/admin_ui_styles.css @@ -10,3 +10,15 @@ float: left; width: calc(100% - 40px); } + +#fetched-data tr.new-item { + font-weight: bold; +} + +#fetched-data tr.disabled { + opacity: 0.76; +} + +.ui-dialog .ui-dialog-titlebar-close.no-close { + display: none; +} diff --git a/composer.json b/composer.json index 0a21fd8f2..a069c6cd1 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,7 @@ "description": "Open Y Virtual Y Content", "type": "drupal-module", "require": { - "ymcatwincities/openy": "*", + "ymcatwincities/openy": "9.*", "drupal/recurring_events": "^2.0@beta", "ymcatwincities/daxko_sso": "*", "drupal/jsonapi_image_styles": "^2.0.0", @@ -12,6 +12,7 @@ "drupal/date_recur": "^2.0|^3.0", "drupal/date_recur_modular": "^2.0|^3.0", "drupal/state_machine": "^1.4", + "drupal/views_data_export": "^1.0", "ext-json": "*", "ext-zlib": "*" }, @@ -34,6 +35,13 @@ "drupal/jsonapi_image_styles": { "ParseError: syntax error, unexpected 'EntityTypeManagerInterface' (3229668)": "https://www.drupal.org/files/issues/2021-08-24/3229668-2.patch", "TypeError: Argument 1 passed to Drupal\\jsonapi_image_styles\\EventSubscriber\\ConfigSubscriber::onResponse() must be an instance of Symfony\\Component\\HttpKernel\\Event\\ResponseEvent (3229545)": "https://git.drupalcode.org/project/jsonapi_image_styles/-/merge_requests/2/diffs.patch" + }, + "drupal/core": { + "Enable disabling tableselect element options https://www.drupal.org/i/2895352": "https://www.drupal.org/files/issues/2019-12-03/2895352-42-8.8.x.patch", + "[PRODDEV-484] An error occurs after admin indexes the data https://dgo.to/3138528": "https://www.drupal.org/files/issues/2020-05-21/getentitiestoview_change_the_interface_of_the_first_argument_3138528_3.patch" + }, + "drupal/blazy": { + "[PRODDEV-484] An error occurs after admin indexes the data https://dgo.to/3252140": "https://git.drupalcode.org/project/blazy/-/merge_requests/6.diff" } }, "patches-ignore": { diff --git a/config/install/openy_gated_content.settings.yml b/config/install/openy_gated_content.settings.yml index 5f09d320e..fbe4eb259 100644 --- a/config/install/openy_gated_content.settings.yml +++ b/config/install/openy_gated_content.settings.yml @@ -70,3 +70,7 @@ top_menu: background_color_light: '#F2F2F2' links_color_dark: '#ffffff' background_color_dark: 'black' +menu_config: + schedule: false + favorites: false + categories: false diff --git a/config/install/openy_gated_content.welcome_email_settings.yml b/config/install/openy_gated_content.welcome_email_settings.yml new file mode 100644 index 000000000..8b7f28cac --- /dev/null +++ b/config/install/openy_gated_content.welcome_email_settings.yml @@ -0,0 +1,16 @@ +enabled: 1 +email_subject: 'Welcome to Virtual Y!' +email_body: | +
Explore your favorite YMCA programs from home or on the go!
+ +Thanks for joining our Virtual Y community. We are excited to have you here. With Virtual Y, you can:
+ +See you online!
+ +Your YMCA team
diff --git a/config/install/views.view.virtual_y_users_log.yml b/config/install/views.view.virtual_y_users_log.yml new file mode 100644 index 000000000..a853983bd --- /dev/null +++ b/config/install/views.view.virtual_y_users_log.yml @@ -0,0 +1,698 @@ +langcode: en +status: true +dependencies: + config: + - system.menu.admin + - user.role.virtual_y + module: + - csv_serialization + - rest + - serialization + - user + - views_data_export +id: virtual_y_users_log +label: 'Virtual Y Users Log' +module: views +description: '' +tag: '' +base_table: users_field_data +base_field: uid +display: + default: + display_plugin: default + id: default + display_title: Master + position: 0 + display_options: + access: + type: perm + options: + perm: 'access user profiles' + cache: + type: tag + options: { } + query: + type: views_query + options: + disable_sql_rewrite: false + distinct: false + replica: false + query_comment: '' + query_tags: { } + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + pager: + type: full + options: + items_per_page: 30 + offset: 0 + id: 0 + total_pages: null + tags: + previous: ‹‹ + next: ›› + first: '« First' + last: 'Last »' + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + quantity: 9 + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + override: true + sticky: false + caption: '' + summary: '' + description: '' + columns: + name: name + login: login + roles_target_id: roles_target_id + info: + name: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + login: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + roles_target_id: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + default: '-1' + empty_table: false + row: + type: fields + fields: + name: + id: name + table: users_field_data + field: name + entity_type: user + entity_field: name + alter: + alter_text: false + make_link: false + absolute: false + trim: false + word_boundary: false + ellipsis: false + strip_tags: false + html: false + hide_empty: false + empty_zero: false + plugin_id: field + relationship: none + group_type: group + admin_label: '' + label: Name + exclude: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_alter_empty: true + click_sort_column: value + type: user_name + settings: { } + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + login: + id: login + table: users_field_data + field: login + relationship: none + group_type: group + admin_label: '' + label: 'Last login' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: timestamp + settings: + date_format: short + custom_date_format: 'YYYY-MM-DD HH:MM:SS' + timezone: '' + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: user + entity_field: login + plugin_id: field + roles_target_id: + id: roles_target_id + table: user__roles + field: roles_target_id + relationship: none + group_type: group + admin_label: '' + label: Roles + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + type: separator + separator: ', ' + entity_type: user + entity_field: roles + plugin_id: user_roles + filters: + status: + value: '1' + table: users_field_data + field: status + plugin_id: boolean + entity_type: user + entity_field: status + id: status + expose: + operator: '' + operator_limit_selection: false + operator_list: { } + group: 1 + roles_target_id: + id: roles_target_id + table: user__roles + field: roles_target_id + relationship: none + group_type: group + admin_label: '' + operator: or + value: + virtual_y: virtual_y + group: 1 + exposed: false + expose: + operator_id: '' + label: '' + description: '' + use_operator: false + operator: '' + operator_limit_selection: false + operator_list: { } + identifier: '' + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + reduce: false + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + reduce_duplicates: false + entity_type: user + entity_field: roles + plugin_id: user_roles + login_1: + id: login_1 + table: users_field_data + field: login + relationship: none + group_type: group + admin_label: 'Date from' + operator: '>=' + value: + min: '' + max: '' + value: '' + type: date + group: 1 + exposed: true + expose: + operator_id: login_1_op + label: 'Date Start' + description: 'Format: YYYY-MM-DD HH:MM:SS' + use_operator: false + operator: login_1_op + operator_limit_selection: false + operator_list: { } + identifier: created_min + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + virtual_y: '0' + virtual_ymca_editor: '0' + virtual_y_premium: '0' + virtual_y_trial: '0' + administrator: '0' + editor: '0' + location_editor: '0' + contributor: '0' + intern: '0' + digital_signage_editor: '0' + digital_signage_admin: '0' + mindbody_manager: '0' + eclc_manager: '0' + pricing_plan_editor: '0' + trainer: '0' + placeholder: '' + min_placeholder: '' + max_placeholder: '' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + entity_type: user + entity_field: login + plugin_id: date + login: + id: login + table: users_field_data + field: login + relationship: none + group_type: group + admin_label: 'Date to' + operator: '<=' + value: + min: '' + max: '' + value: '' + type: date + group: 1 + exposed: true + expose: + operator_id: login_op + label: 'Date To' + description: '' + use_operator: false + operator: login_op + operator_limit_selection: false + operator_list: { } + identifier: created_max + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + virtual_y: '0' + virtual_ymca_editor: '0' + virtual_y_premium: '0' + virtual_y_trial: '0' + administrator: '0' + editor: '0' + location_editor: '0' + contributor: '0' + intern: '0' + digital_signage_editor: '0' + digital_signage_admin: '0' + mindbody_manager: '0' + eclc_manager: '0' + pricing_plan_editor: '0' + trainer: '0' + placeholder: '' + min_placeholder: '' + max_placeholder: '' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + entity_type: user + entity_field: login + plugin_id: date + uid: + id: uid + table: users_field_data + field: uid + relationship: none + group_type: group + admin_label: '' + operator: in + value: { } + group: 1 + exposed: true + expose: + operator_id: uid_op + label: Name + description: '' + use_operator: false + operator: uid_op + operator_limit_selection: false + operator_list: { } + identifier: uid + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + virtual_y: '0' + virtual_ymca_editor: '0' + virtual_y_premium: '0' + virtual_y_trial: '0' + administrator: '0' + editor: '0' + location_editor: '0' + contributor: '0' + intern: '0' + digital_signage_editor: '0' + digital_signage_admin: '0' + mindbody_manager: '0' + eclc_manager: '0' + pricing_plan_editor: '0' + trainer: '0' + reduce: false + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + entity_type: user + entity_field: uid + plugin_id: user_name + sorts: + login: + id: login + table: users_field_data + field: login + relationship: none + group_type: group + admin_label: '' + order: DESC + exposed: true + expose: + label: 'Last login' + granularity: day + entity_type: user + entity_field: login + plugin_id: date + title: 'Virtual Y Users Log' + header: + result: + id: result + table: views + field: result + relationship: none + group_type: group + admin_label: '' + empty: false + content: 'Displaying @start - @end of @total' + plugin_id: result + footer: { } + empty: { } + relationships: { } + arguments: + login: + id: login + table: users_field_data + field: login + relationship: none + group_type: group + admin_label: '' + default_action: ignore + exception: + value: all + title_enable: false + title: All + title_enable: false + title: '' + default_argument_type: fixed + default_argument_options: + argument: '' + default_argument_skip_url: false + summary_options: + base_path: '' + count: true + items_per_page: 25 + override: false + summary: + sort_order: asc + number_of_records: 0 + format: default_summary + specify_validation: false + validate: + type: none + fail: 'not found' + validate_options: { } + entity_type: user + entity_field: login + plugin_id: date + display_extenders: + views_advanced_routing_route: + route: '' + filter_groups: + operator: AND + groups: + 1: AND + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - 'url.query_args:sort_by' + - 'url.query_args:sort_order' + - user.permissions + tags: { } + data_export_1: + display_plugin: data_export + id: data_export_1 + display_title: 'Data export' + position: 3 + display_options: + display_extenders: + views_advanced_routing_route: + route: '' + row: + type: data_field + options: + field_options: + name: + alias: '' + raw_output: true + login: + alias: '' + raw_output: false + roles_target_id: + alias: '' + raw_output: false + path: users-virtual-y.csv + filename: '[view:id].csv' + automatic_download: true + displays: + page_1: page_1 + default: '0' + style: + type: data_export + options: + formats: + csv: csv + csv_settings: + delimiter: ',' + enclosure: '"' + escape_char: \ + strip_tags: true + trim: true + encoding: utf8 + xls_settings: + xls_format: Excel2007 + metadata: + creator: '' + last_modified_by: '' + title: '' + description: '' + subject: '' + keywords: '' + category: '' + manager: '' + company: '' + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - request_format + - url + - 'url.query_args:sort_by' + - 'url.query_args:sort_order' + - user.permissions + tags: { } + page_1: + display_plugin: page + id: page_1 + display_title: Page + position: 1 + display_options: + display_extenders: + views_advanced_routing_route: + route: '' + path: admin/virtual-y-logs/virtual-y-users-log + menu: + type: normal + title: 'Virtual Y Users Log' + description: '' + expanded: true + parent: openy_gated_content.logs + weight: 100 + context: '1' + menu_name: admin + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - 'url.query_args:sort_by' + - 'url.query_args:sort_order' + - user.permissions + tags: { } diff --git a/js/gated-content/dist/gated-content.css b/js/gated-content/dist/gated-content.css index 6706344fc..8eb7d4fd1 100644 --- a/js/gated-content/dist/gated-content.css +++ b/js/gated-content/dist/gated-content.css @@ -1 +1 @@ -.cachet-book-32-28{font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-weight:400;font-size:32px}@media only screen and (max-width:991px){.cachet-book-32-28{font-size:28px}}.cachet-book-30-24{font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-weight:400;font-size:30px}@media only screen and (max-width:991px){.cachet-book-30-24{font-size:24px}}.cachet-book-24-20{font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-weight:400;font-size:24px}@media only screen and (max-width:991px){.cachet-book-24-20{font-size:20px}}.cachet-book-18{font-size:18px}.cachet-book-18,.cachet-book-20{font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-weight:400}.cachet-book-20{font-size:20px}.cachet-medium-24-20,.paragraph-headline .paragraph-headline__content .paragraph-headline__link{font-family:Cachet Medium,Cachet W01 Medium,Cachet,Verdana,sans-serif;font-weight:500;font-size:24px}@media only screen and (max-width:991px){.cachet-medium-24-20,.paragraph-headline .paragraph-headline__content .paragraph-headline__link{font-size:20px}}.cachet-medium-16-14,.paragraph-headline .paragraph-headline__content .paragraph-headline__description a.btn{font-family:Cachet Medium,Cachet W01 Medium,Cachet,Verdana,sans-serif;font-weight:500;font-size:16px}@media only screen and (max-width:991px){.cachet-medium-16-14,.paragraph-headline .paragraph-headline__content .paragraph-headline__description a.btn{font-size:14px}}.cachet-medium-20-18,.paragraph-headline .paragraph-headline__content .paragraph-headline__description a.btn.btn-lg{font-family:Cachet Medium,Cachet W01 Medium,Cachet,Verdana,sans-serif;font-weight:500;font-size:20px}@media only screen and (max-width:991px){.cachet-medium-20-18,.paragraph-headline .paragraph-headline__content .paragraph-headline__description a.btn.btn-lg{font-size:18px}}.verdana-16-14{font-family:Verdana,sans-serif;font-size:16px}@media only screen and (max-width:991px){.verdana-16-14{font-size:14px}}.verdana-14-12{font-family:Verdana,sans-serif;font-size:14px}@media only screen and (max-width:991px){.verdana-14-12{font-size:12px}}.text-thunder{color:#231f20!important}.text-white{color:#fff!important}.text-black{color:#000!important}.text-gray{color:#636466!important}.text-red{color:#c00!important}.bg-black{background-color:#000!important}.bg-white{background-color:#fff!important}.bg-red{background-color:#c00!important}.fill-white{fill:#fff!important}.fill-gray{fill:#636466!important}.fill-red{fill:#c00!important}.fill-camarone{fill:#060!important}.border-thunder{border-color:#231f20!important}.border-concrete{border-color:#f2f2f2!important}.p-10-5{padding:10px}@media only screen and (max-width:991px){.p-10-5{padding:5px}}.pt-20-10,.py-20-10{padding-top:20px}@media only screen and (max-width:991px){.pt-20-10,.py-20-10{padding-top:10px}}.pb-20-10,.py-20-10{padding-bottom:20px}@media only screen and (max-width:991px){.pb-20-10,.py-20-10{padding-bottom:10px}}.pt-40-20,.py-40-20{padding-top:40px}@media only screen and (max-width:991px){.pt-40-20,.py-40-20{padding-top:20px}}.pb-40-20,.py-40-20{padding-bottom:40px}@media only screen and (max-width:991px){.pb-40-20,.py-40-20{padding-bottom:20px}}.mt-20-10,.my-20-10{margin-top:20px}@media only screen and (max-width:991px){.mt-20-10,.my-20-10{margin-top:10px}}.mb-20-10,.my-20-10{margin-bottom:20px}@media only screen and (max-width:991px){.mb-20-10,.my-20-10{margin-bottom:10px}}.mt-40-20,.my-40-20{margin-top:40px}@media only screen and (max-width:991px){.mt-40-20,.my-40-20{margin-top:20px}}.mb-40-20,.my-40-20{margin-bottom:40px}@media only screen and (max-width:991px){.mb-40-20,.my-40-20{margin-bottom:20px}}@media only screen and (max-width:991px){.px--20-10{padding-left:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.px--20-10{padding-left:10px}}@media only screen and (max-width:991px){.px--20-10{padding-right:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.px--20-10{padding-right:10px}}.px-36-24{padding-left:36px;padding-right:36px}@media only screen and (max-width:991px){.px-36-24{padding-left:24px;padding-right:24px}}.four-columns{display:-ms-grid;display:grid;-ms-grid-rows:(auto)[10];grid-template-rows:repeat(10,auto);-ms-grid-columns:1fr 40px 1fr 40px 1fr 40px 1fr;grid-template-columns:repeat(4,1fr);grid-column-gap:40px;margin-top:20px}.four-columns>:first-child{-ms-grid-row:1;-ms-grid-column:1}.four-columns>:nth-child(2){-ms-grid-row:1;-ms-grid-column:3}.four-columns>:nth-child(3){-ms-grid-row:1;-ms-grid-column:5}.four-columns>:nth-child(4){-ms-grid-row:1;-ms-grid-column:7}.four-columns>:nth-child(5){-ms-grid-row:2;-ms-grid-column:1}.four-columns>:nth-child(6){-ms-grid-row:2;-ms-grid-column:3}.four-columns>:nth-child(7){-ms-grid-row:2;-ms-grid-column:5}.four-columns>:nth-child(8){-ms-grid-row:2;-ms-grid-column:7}.four-columns>:nth-child(9){-ms-grid-row:3;-ms-grid-column:1}.four-columns>:nth-child(10){-ms-grid-row:3;-ms-grid-column:3}.four-columns>:nth-child(11){-ms-grid-row:3;-ms-grid-column:5}.four-columns>:nth-child(12){-ms-grid-row:3;-ms-grid-column:7}.four-columns>:nth-child(13){-ms-grid-row:4;-ms-grid-column:1}.four-columns>:nth-child(14){-ms-grid-row:4;-ms-grid-column:3}.four-columns>:nth-child(15){-ms-grid-row:4;-ms-grid-column:5}.four-columns>:nth-child(16){-ms-grid-row:4;-ms-grid-column:7}.four-columns>:nth-child(17){-ms-grid-row:5;-ms-grid-column:1}.four-columns>:nth-child(18){-ms-grid-row:5;-ms-grid-column:3}.four-columns>:nth-child(19){-ms-grid-row:5;-ms-grid-column:5}.four-columns>:nth-child(20){-ms-grid-row:5;-ms-grid-column:7}.four-columns>:nth-child(21){-ms-grid-row:6;-ms-grid-column:1}.four-columns>:nth-child(22){-ms-grid-row:6;-ms-grid-column:3}.four-columns>:nth-child(23){-ms-grid-row:6;-ms-grid-column:5}.four-columns>:nth-child(24){-ms-grid-row:6;-ms-grid-column:7}.four-columns>:nth-child(25){-ms-grid-row:7;-ms-grid-column:1}.four-columns>:nth-child(26){-ms-grid-row:7;-ms-grid-column:3}.four-columns>:nth-child(27){-ms-grid-row:7;-ms-grid-column:5}.four-columns>:nth-child(28){-ms-grid-row:7;-ms-grid-column:7}.four-columns>:nth-child(29){-ms-grid-row:8;-ms-grid-column:1}.four-columns>:nth-child(30){-ms-grid-row:8;-ms-grid-column:3}.four-columns>:nth-child(31){-ms-grid-row:8;-ms-grid-column:5}.four-columns>:nth-child(32){-ms-grid-row:8;-ms-grid-column:7}.four-columns>:nth-child(33){-ms-grid-row:9;-ms-grid-column:1}.four-columns>:nth-child(34){-ms-grid-row:9;-ms-grid-column:3}.four-columns>:nth-child(35){-ms-grid-row:9;-ms-grid-column:5}.four-columns>:nth-child(36){-ms-grid-row:9;-ms-grid-column:7}.four-columns>:nth-child(37){-ms-grid-row:10;-ms-grid-column:1}.four-columns>:nth-child(38){-ms-grid-row:10;-ms-grid-column:3}.four-columns>:nth-child(39){-ms-grid-row:10;-ms-grid-column:5}.four-columns>:nth-child(40){-ms-grid-row:10;-ms-grid-column:7}@media only screen and (max-width:991px){.four-columns{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,1fr)}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.four-columns{-ms-grid-columns:1fr;grid-template-columns:1fr}}@media only screen and (max-width:991px){.four-columns{grid-column-gap:20px;margin-top:10px}}.four-columns>div:nth-child(n+2){margin-top:0}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.four-columns>div:nth-child(n+2){margin-top:10px}}.four-columns>div:nth-child(n+3){margin-top:0}@media only screen and (max-width:991px){.four-columns>div:nth-child(n+3){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.four-columns>div:nth-child(n+3){margin-top:10px}}.four-columns>div:nth-child(n+5){margin-top:40px}@media only screen and (max-width:991px){.four-columns>div:nth-child(n+5){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.four-columns>div:nth-child(n+5){margin-top:10px}}.three-columns{display:-ms-grid;display:grid;-ms-grid-rows:(auto)[10];grid-template-rows:repeat(10,auto);-ms-grid-columns:1fr 40px 1fr 40px 1fr;grid-template-columns:repeat(3,1fr);grid-column-gap:40px;margin-top:20px}.three-columns>:first-child{-ms-grid-row:1;-ms-grid-column:1}.three-columns>:nth-child(2){-ms-grid-row:1;-ms-grid-column:3}.three-columns>:nth-child(3){-ms-grid-row:1;-ms-grid-column:5}.three-columns>:nth-child(4){-ms-grid-row:2;-ms-grid-column:1}.three-columns>:nth-child(5){-ms-grid-row:2;-ms-grid-column:3}.three-columns>:nth-child(6){-ms-grid-row:2;-ms-grid-column:5}.three-columns>:nth-child(7){-ms-grid-row:3;-ms-grid-column:1}.three-columns>:nth-child(8){-ms-grid-row:3;-ms-grid-column:3}.three-columns>:nth-child(9){-ms-grid-row:3;-ms-grid-column:5}.three-columns>:nth-child(10){-ms-grid-row:4;-ms-grid-column:1}.three-columns>:nth-child(11){-ms-grid-row:4;-ms-grid-column:3}.three-columns>:nth-child(12){-ms-grid-row:4;-ms-grid-column:5}.three-columns>:nth-child(13){-ms-grid-row:5;-ms-grid-column:1}.three-columns>:nth-child(14){-ms-grid-row:5;-ms-grid-column:3}.three-columns>:nth-child(15){-ms-grid-row:5;-ms-grid-column:5}.three-columns>:nth-child(16){-ms-grid-row:6;-ms-grid-column:1}.three-columns>:nth-child(17){-ms-grid-row:6;-ms-grid-column:3}.three-columns>:nth-child(18){-ms-grid-row:6;-ms-grid-column:5}.three-columns>:nth-child(19){-ms-grid-row:7;-ms-grid-column:1}.three-columns>:nth-child(20){-ms-grid-row:7;-ms-grid-column:3}.three-columns>:nth-child(21){-ms-grid-row:7;-ms-grid-column:5}.three-columns>:nth-child(22){-ms-grid-row:8;-ms-grid-column:1}.three-columns>:nth-child(23){-ms-grid-row:8;-ms-grid-column:3}.three-columns>:nth-child(24){-ms-grid-row:8;-ms-grid-column:5}.three-columns>:nth-child(25){-ms-grid-row:9;-ms-grid-column:1}.three-columns>:nth-child(26){-ms-grid-row:9;-ms-grid-column:3}.three-columns>:nth-child(27){-ms-grid-row:9;-ms-grid-column:5}.three-columns>:nth-child(28){-ms-grid-row:10;-ms-grid-column:1}.three-columns>:nth-child(29){-ms-grid-row:10;-ms-grid-column:3}.three-columns>:nth-child(30){-ms-grid-row:10;-ms-grid-column:5}@media only screen and (max-width:991px){.three-columns{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,1fr)}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.three-columns{-ms-grid-columns:1fr;grid-template-columns:1fr}}@media only screen and (max-width:991px){.three-columns{grid-column-gap:20px;margin-top:10px}}.three-columns>div:nth-child(n+2){margin-top:0}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.three-columns>div:nth-child(n+2){margin-top:10px}}.three-columns>div:nth-child(n+3){margin-top:0}@media only screen and (max-width:991px){.three-columns>div:nth-child(n+3){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.three-columns>div:nth-child(n+3){margin-top:10px}}.three-columns>div:nth-child(n+5){margin-top:40px}@media only screen and (max-width:991px){.three-columns>div:nth-child(n+5){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.three-columns>div:nth-child(n+5){margin-top:10px}}.two-columns{display:-ms-grid;display:grid;-ms-grid-rows:(auto)[10];grid-template-rows:repeat(10,auto);-ms-grid-columns:1fr 40px 1fr;grid-template-columns:repeat(2,1fr);grid-column-gap:40px;margin-top:20px}.two-columns>:first-child{-ms-grid-row:1;-ms-grid-column:1}.two-columns>:nth-child(2){-ms-grid-row:1;-ms-grid-column:3}.two-columns>:nth-child(3){-ms-grid-row:2;-ms-grid-column:1}.two-columns>:nth-child(4){-ms-grid-row:2;-ms-grid-column:3}.two-columns>:nth-child(5){-ms-grid-row:3;-ms-grid-column:1}.two-columns>:nth-child(6){-ms-grid-row:3;-ms-grid-column:3}.two-columns>:nth-child(7){-ms-grid-row:4;-ms-grid-column:1}.two-columns>:nth-child(8){-ms-grid-row:4;-ms-grid-column:3}.two-columns>:nth-child(9){-ms-grid-row:5;-ms-grid-column:1}.two-columns>:nth-child(10){-ms-grid-row:5;-ms-grid-column:3}.two-columns>:nth-child(11){-ms-grid-row:6;-ms-grid-column:1}.two-columns>:nth-child(12){-ms-grid-row:6;-ms-grid-column:3}.two-columns>:nth-child(13){-ms-grid-row:7;-ms-grid-column:1}.two-columns>:nth-child(14){-ms-grid-row:7;-ms-grid-column:3}.two-columns>:nth-child(15){-ms-grid-row:8;-ms-grid-column:1}.two-columns>:nth-child(16){-ms-grid-row:8;-ms-grid-column:3}.two-columns>:nth-child(17){-ms-grid-row:9;-ms-grid-column:1}.two-columns>:nth-child(18){-ms-grid-row:9;-ms-grid-column:3}.two-columns>:nth-child(19){-ms-grid-row:10;-ms-grid-column:1}.two-columns>:nth-child(20){-ms-grid-row:10;-ms-grid-column:3}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.two-columns{-ms-grid-columns:1fr;grid-template-columns:1fr}}@media only screen and (max-width:991px){.two-columns{grid-column-gap:20px;margin-top:10px}}.two-columns>div:nth-child(n+2){margin-top:0}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.two-columns>div:nth-child(n+2){margin-top:10px}}.two-columns>div:nth-child(n+3){margin-top:0}@media only screen and (max-width:991px){.two-columns>div:nth-child(n+3){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.two-columns>div:nth-child(n+3){margin-top:10px}}.two-columns>div:nth-child(n+5){margin-top:40px}@media only screen and (max-width:991px){.two-columns>div:nth-child(n+5){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.two-columns>div:nth-child(n+5){margin-top:10px}}.one-columns{display:-ms-grid;display:grid;-ms-grid-rows:(auto)[10];grid-template-rows:repeat(10,auto);-ms-grid-columns:1fr;grid-template-columns:repeat(1,1fr);grid-column-gap:40px;margin-top:20px}.one-columns>:first-child{-ms-grid-row:1;-ms-grid-column:1}.one-columns>:nth-child(2){-ms-grid-row:2;-ms-grid-column:1}.one-columns>:nth-child(3){-ms-grid-row:3;-ms-grid-column:1}.one-columns>:nth-child(4){-ms-grid-row:4;-ms-grid-column:1}.one-columns>:nth-child(5){-ms-grid-row:5;-ms-grid-column:1}.one-columns>:nth-child(6){-ms-grid-row:6;-ms-grid-column:1}.one-columns>:nth-child(7){-ms-grid-row:7;-ms-grid-column:1}.one-columns>:nth-child(8){-ms-grid-row:8;-ms-grid-column:1}.one-columns>:nth-child(9){-ms-grid-row:9;-ms-grid-column:1}.one-columns>:nth-child(10){-ms-grid-row:10;-ms-grid-column:1}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.one-columns{-ms-grid-columns:1fr;grid-template-columns:1fr}}@media only screen and (max-width:991px){.one-columns{grid-column-gap:20px;margin-top:10px}}.one-columns>div:nth-child(n+2){margin-top:0}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.one-columns>div:nth-child(n+2){margin-top:10px}}.one-columns>div:nth-child(n+3){margin-top:0}@media only screen and (max-width:991px){.one-columns>div:nth-child(n+3){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.one-columns>div:nth-child(n+3){margin-top:10px}}.one-columns>div:nth-child(n+5){margin-top:40px}@media only screen and (max-width:991px){.one-columns>div:nth-child(n+5){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.one-columns>div:nth-child(n+5){margin-top:10px}}.listing-header{display:flex;align-items:center;justify-content:space-between}.listing-header .title{margin:0;font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-weight:400;font-size:24px}@media only screen and (max-width:991px){.listing-header .title{font-size:20px}}.listing-header .view-all{font-size:20px;text-decoration:underline}@media only screen and (max-width:991px){.listing-header .view-all{font-size:18px}}.listing-header .view-all:after{content:"→"}.listing-header button.view-all{color:#0060af;border:none;background-color:initial}.listing-header button.view-all:hover{color:#0070aa}.empty-listing{padding:30px;text-align:center}.teaser{position:relative;transform:scale(1);transition:All .1s;border-top:5px solid #92278f}.teaser:hover{transform:scale(1.01);box-shadow:0 4px 6px rgba(0,0,0,.25)}.teaser>a{display:flex;flex-direction:column;cursor:pointer;height:100%}.teaser>a:hover{text-decoration:none}.teaser>a .preview{background-repeat:no-repeat;background-size:contain;padding-bottom:56.25%;height:0;width:100%}.teaser>a .info{flex-grow:1;display:flex;flex-direction:column;border-right:1px solid #efefef;border-bottom:1px solid #efefef;border-left:1px solid #efefef}.teaser>a .title{flex-grow:1;color:#0060af;font-weight:700;font-size:16px}@media only screen and (max-width:991px){.teaser>a .title{font-size:14px}}.teaser .add-to-favorite{position:absolute;right:0;bottom:0;padding:13px 15px;width:55px;height:50px}.one-columns .teaser .date,.one-columns .teaser .instructor,.one-columns .teaser .time{width:33%}@media only screen and (max-width:991px){.one-columns .teaser .date,.one-columns .teaser .instructor,.one-columns .teaser .time{width:100%}}.two-columns .teaser .date,.two-columns .teaser .time{width:50%}@media only screen and (max-width:991px){.two-columns .teaser .date,.two-columns .teaser .time{width:100%}}.video-level{border-radius:5px;width:30px;height:30px;margin:-5px 10px -5px 0;float:left;display:flex;align-items:center;justify-content:center;background-color:#636466;color:#fff;font-weight:700}.gc-button{display:block;margin-top:20px;margin-right:auto;margin-left:auto;outline:none!important;border:none;border-radius:5px;background-color:#0060af;padding:10px 20px;text-transform:uppercase;color:#fff}.gc-button:focus,.gc-button:hover,.gc-button:visited{color:#fff}.gc-button:disabled{opacity:.6}.indigo-button{border:2px solid #fff;border-radius:6px;background-color:#92278f;cursor:pointer;padding-top:11px;padding-bottom:11px;text-align:center;text-transform:uppercase;margin:24px}@media only screen and (max-width:991px){.indigo-button{margin:12px}}.indigo-button:hover{background-color:#6a1c68}.timer{border:1px solid #231f20;border-radius:12px;padding:5px 10px;font-size:10px}.timer.live{background-color:#92278f;color:#fff}.canceled,.private{color:#fff;background-color:#231f20;text-transform:uppercase;font-family:Verdana,sans-serif;font-weight:700;display:inline-block;margin-top:10px}.canceled{display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;border-color:#c00;background-color:#c00}.adjust-button{display:flex;align-items:center;outline:none!important;border:1px solid #f2f2f2;border-radius:5px;background-color:#fff;padding:15px;text-transform:capitalize;font-family:Verdana,sans-serif;font-size:14px}@media only screen and (max-width:991px){.adjust-button{font-size:0}}.adjust-button:before{background-image:url(img/sliders-h-solid.216b6a7f.svg);width:18px;height:18px;content:" ";margin-right:15px}@media only screen and (max-width:991px){.adjust-button:before{margin-right:0}}.accordion-tab .accordion-tab__header{display:flex;justify-content:space-between;border-top:1px solid #636466;cursor:pointer;padding:18px 24px;color:#636466;font-weight:700}.accordion-tab .accordion-tab__header:hover{color:#4a4b4c}.accordion-tab .accordion-tab__content{padding:0 24px 18px}.pagination .page-item .page-link{border:none}.pagination .page-item.active .page-link{margin-left:10px;margin-right:10px}.svg-container{display:-ms-inline-grid;display:inline-grid}.top-menu{position:fixed;background-color:#000;width:100%;z-index:1030}@media only screen and (max-width:991px){.top-menu{z-index:39}}.top-menu>div{display:flex;align-items:center;justify-content:flex-end;padding-top:30px;padding-bottom:15px}@media only screen and (max-width:991px){.top-menu>div{padding-top:10px;padding-bottom:10px}}.top-menu>div>div:not(:first-child){display:block}@media only screen and (max-width:991px){.top-menu>div>div:not(:first-child){display:none}}.top-menu>div a{display:inline-block;text-decoration:none}.top-menu>div div:first-child{flex-grow:1}.top-menu>div div:first-child a{font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;padding-bottom:12px;font-size:20px}@media only screen and (max-width:991px){.top-menu>div div:first-child a{padding-bottom:0;font-size:18px}}.top-menu>div div:not(:first-child) a:hover{border-bottom:2px solid;padding-bottom:10px}@media only screen and (max-width:991px){.top-menu>div div:not(:first-child) a:hover{border-bottom:1px solid;padding-bottom:12px}}.top-menu>div div:not(:first-child):not(:last-child) a{padding-right:10px;padding-left:10px}.top-menu>div div:not(:first-child) a{padding-bottom:12px;font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-size:16px}.top-menu>div div:not(:first-child) a.router-link-active{border-bottom:2px solid;padding-bottom:10px}@media only screen and (max-width:991px){.top-menu>div div:not(:first-child) a.router-link-active{border-bottom:1px solid;padding-bottom:12px}}@media only screen and (max-width:991px){.top-menu>div div:not(:first-child) a{font-size:12px}}.top-menu>div div:not(:first-child) a svg{margin-right:10px;vertical-align:text-top}.top-menu>div div:last-child{padding-left:10px}.top-menu>div button{justify-content:flex-end;outline:none;border:none;background-color:transparent;padding:0;text-align:right;display:none;padding-right:10px}@media only screen and (max-width:991px){.top-menu>div button{display:flex}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.top-menu>div button{padding-right:19px}}.top-menu>div button svg{width:27px}.top-menu>div button.opened svg{width:14px}.top-menu.menuOpen{position:fixed;top:0!important;z-index:2000;background-color:#f2f2f2;width:100vw;height:100vh;top:0;padding:initial}@media only screen and (max-width:991px){.top-menu.menuOpen{padding:11px 34px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.top-menu.menuOpen{padding:11px 10px}}.top-menu.menuOpen>div{display:-ms-grid;display:grid;max-width:none;-ms-grid-columns:1fr initial 1fr;grid-template-columns:1fr 1fr;gap:initial}@media only screen and (max-width:991px){.top-menu.menuOpen>div{gap:10px 20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.top-menu.menuOpen>div{gap:10px}}.top-menu.menuOpen>div div{display:block}.top-menu.menuOpen>div button,.top-menu.menuOpen>div div:first-child{margin-bottom:20px;color:#636466}.top-menu.menuOpen>div div:not(:first-child){padding:0;text-align:center;color:#636466}.top-menu.menuOpen>div div:not(:first-child) a{border:1px solid #636466;border-radius:5px;padding:15px 10px;width:100%;font-family:Verdana,sans-serif}@media (max-width:600px){.with-date-filter{flex-direction:column}.with-date-filter .videos__date-filter .date{min-width:auto}}.videos__date-filter{margin:0;line-height:24px;font-size:24px}@media (max-width:600px){.videos__date-filter{display:flex;-ms-grid-row-align:center;align-self:center;justify-content:space-between;padding-top:20px;width:100%}}.videos__date-filter>button{border:none;background-color:#fff;color:#636466}.videos__date-filter>button:focus{outline:0}.videos__date-filter>button.left{padding-left:0}.videos__date-filter>button.right{padding-right:0}.videos__date-filter .date{display:inline-block;padding:0 20px;min-width:310px;text-align:center}.video-teaser{background-color:#231f20}.video-teaser>a .info{border:none}.video-teaser>a .title{color:#fff;padding:10px}@media only screen and (max-width:991px){.video-teaser>a .title{padding:5px}}.video-teaser>a .instructor,.video-teaser>a .level{display:flex;align-items:center;color:#fff;padding:0 10px 10px;font-size:12px}@media only screen and (max-width:991px){.video-teaser>a .instructor,.video-teaser>a .level{padding:0 5px 5px;font-size:10px}}.video-teaser>a .instructor .svg-container,.video-teaser>a .level .svg-container{margin-right:12px;font-size:20px;fill:#fff}.video-teaser>a .timer{align-self:flex-start;border:1px solid #636466;border-radius:12px;background-color:#fff;padding:5px 10px;text-transform:capitalize;color:#231f20;font-size:10px;margin:12px 10px}@media only screen and (max-width:991px){.video-teaser>a .timer{margin:12px 5px}}.video-teaser>a .preview{position:relative;align-self:flex-start}.video-teaser>a .preview .play-button{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-width:0;border-radius:24px;background-color:#92278f;padding:0;width:48px;height:48px}.video-teaser>a .preview .play-button:before{display:inline-block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:11px solid #fff;width:0;height:0;content:" "}.video-teaser>a:focus .preview .play-button,.video-teaser>a:hover .preview .play-button{background-color:#7e227b}.event-teaser>a .info{padding:10px}@media only screen and (max-width:991px){.event-teaser>a .info{padding:5px 5px 10px}}.event-teaser>a .info .date,.event-teaser>a .info .instructor,.event-teaser>a .info .time,.event-teaser>a .info .title{padding-bottom:10px}@media only screen and (max-width:991px){.event-teaser>a .info .date,.event-teaser>a .info .instructor,.event-teaser>a .info .time,.event-teaser>a .info .title{padding-bottom:5px}}.event-teaser>a .info .date,.event-teaser>a .info .instructor,.event-teaser>a .info .level,.event-teaser>a .info .time{display:flex;align-items:center;color:#231f20;font-size:12px}@media only screen and (max-width:991px){.event-teaser>a .info .date,.event-teaser>a .info .instructor,.event-teaser>a .info .level,.event-teaser>a .info .time{font-size:10px}}.event-teaser>a .info .date .svg-container,.event-teaser>a .info .instructor .svg-container,.event-teaser>a .info .level .svg-container,.event-teaser>a .info .time .svg-container{margin-right:12px;font-size:20px;fill:#636466}.event-teaser>a .info .instructor{color:#000}.event-teaser>a .info .timer{align-self:flex-start;margin-top:11px;border:1px solid #636466;border-radius:12px;padding:5px 10px;color:#000;font-size:10px}.event-teaser>a .info .timer.live{background-color:#92278f;color:#fff}.category-teaser,.duration-teaser,.instructor-teaser{background-clip:border-box;min-width:0}.category-teaser>a .preview,.duration-teaser>a .preview,.instructor-teaser>a .preview{background-size:cover;padding-bottom:50%}.category-teaser>a .info,.duration-teaser>a .info,.instructor-teaser>a .info{flex-grow:0;border:none;padding:10px 10px 58px}@media only screen and (max-width:991px){.category-teaser>a .info,.duration-teaser>a .info,.instructor-teaser>a .info{padding:10px 10px 53px}}.category-teaser>a .info .sub-categories,.duration-teaser>a .info .sub-categories,.instructor-teaser>a .info .sub-categories{margin-top:10px;color:#231f20}.category-teaser>a .info .sub-categories__items,.duration-teaser>a .info .sub-categories__items,.instructor-teaser>a .info .sub-categories__items{padding:0;margin:0;list-style:none}.category-teaser>a .info .sub-categories__item,.duration-teaser>a .info .sub-categories__item,.instructor-teaser>a .info .sub-categories__item{display:inline}.category-teaser>a .info .sub-categories__item:not(:last-of-type):after,.duration-teaser>a .info .sub-categories__item:not(:last-of-type):after,.instructor-teaser>a .info .sub-categories__item:not(:last-of-type):after{content:", "}.blog-teaser{min-height:70px}.blog-teaser .info{padding:10px 10px 48px}@media only screen and (max-width:991px){.blog-teaser .info{padding:5px 5px 48px}}.add-to-calendar button{margin-right:10px;border:2px solid #f2f2f2;border-radius:50%;background-color:#fff;padding:14px;width:50px;height:50px;line-height:1px;font-size:18px}.add-to-calendar button:focus{outline:none}.add-to-calendar .dropdown-menu .btn-link{display:block;padding:10px 20px}.add-to-favorite{display:inline-block;background-image:url(img/favorites-outlined.4df06a61.svg);background-repeat:no-repeat;background-position:50%;background-size:20px 20px;cursor:pointer;width:20px;height:20px}.add-to-favorite .spinner{width:25px;height:25px}.add-to-favorite.white{background-image:url(img/favorites-solid-white.78c46cf3.svg)}.add-to-favorite.active{background-image:url(img/favorites-solid-red.249b5138.svg)}.add-to-favorite.loading{background-image:none}.add-to-favorite.rounded-border{position:static;margin-right:10px;border:2px solid #231f20;border-radius:50%;background-size:20px 21px;padding:11px 10px;width:50px;height:50px}.title-wrapper .add-to-favorite{position:static;margin-left:15px}.title-wrapper .add-to-favorite .spinner{margin-top:-10px}@media (hover),(min--moz-device-pixel-ratio:0),(min-width:0 \0){.add-to-favorite:not(.loading):hover{background-image:url(img/favorites-solid-red.249b5138.svg)}}.modal-mask{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:table;transition:opacity .3s ease}.modal-wrapper{display:table-cell;vertical-align:middle}.modal-container{width:400px;max-height:80vh;display:flex;flex-direction:column;margin:0 auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 8px rgba(0,0,0,.33);transition:all .3s ease;font-family:Helvetica,Arial,sans-serif}.modal-container .modal-body{margin:20px 0;overflow-y:scroll}.modal-container .modal-default-button{float:right}.modal-enter,.modal-leave-active{opacity:0}.modal-enter .modal-container,.modal-leave-active .modal-container{transform:scale(1.1)}.adjust-modal .modal-container{width:-webkit-max-content;width:-moz-max-content;width:max-content}.adjust-modal .modal-container button{outline:none!important}.adjust-modal .modal-container .modal-header{display:flex;align-items:center;justify-content:space-between;height:48px;padding:12px 10px}@media only screen and (max-width:991px){.adjust-modal .modal-container .modal-header{padding:14px 10px 13px}}.adjust-modal .modal-container .modal-header:after,.adjust-modal .modal-container .modal-header:before{display:none}.adjust-modal .modal-container .modal-header h3{margin:0;text-transform:uppercase;color:#636466;font-family:Cachet Medium,Cachet W01 Medium,Cachet,Verdana,sans-serif;font-size:16px}@media only screen and (max-width:991px){.adjust-modal .modal-container .modal-header h3{font-size:14px}}.adjust-modal .modal-container .modal-header button{border:none;background-color:initial;font-size:24px}.adjust-modal .modal-container .modal-body{display:flex;margin:0;color:#000;flex-direction:row;padding:20px}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.adjust-modal .modal-container .modal-body{flex-direction:column}}@media only screen and (max-width:991px){.adjust-modal .modal-container .modal-body{padding:10px}}.adjust-modal .modal-container .modal-body>div{min-width:310px;font-family:Verdana,sans-serif;font-size:14px}@media only screen and (max-width:991px){.adjust-modal .modal-container .modal-body>div{font-size:12px}}.adjust-modal .modal-container .modal-body>div>h4{margin-bottom:14px;color:#000;font-family:Verdana,sans-serif;font-weight:700;font-size:14px}@media only screen and (max-width:991px){.adjust-modal .modal-container .modal-body>div>h4{font-size:12px}}.adjust-modal .modal-container .modal-body>div .form-check{display:flex;align-items:center;padding-left:8px;padding-bottom:21px}@media only screen and (max-width:991px){.adjust-modal .modal-container .modal-body>div .form-check{padding-bottom:14px}}.adjust-modal .modal-container .modal-body>div .form-check label{position:relative;margin-bottom:0;cursor:pointer;padding-left:28px;font-family:Verdana,sans-serif;font-weight:400}.adjust-modal .modal-container .modal-body>div .form-check label input{position:absolute;opacity:0;cursor:pointer;width:0;height:0}.adjust-modal .modal-container .modal-body>div .form-check label .checkmark{position:absolute;top:0;left:0;background-image:url(img/rb-off.60079faf.svg);background-size:20px;width:20px;height:20px}.adjust-modal .modal-container .modal-body>div .form-check label input:checked~.checkmark{background-image:url(img/rb-on.99cd90ac.svg)}.adjust-modal .modal-container .modal-body>div .form-check label input[disabled=disabled]~.caption{color:#9f9f9f}.adjust-modal .modal-container .modal-body>div .form-check label input[disabled=disabled]~.checkmark{background-image:url(img/rb-off-gray.f0264ba9.svg)}.adjust-modal .modal-container .modal-footer{display:flex;justify-content:space-between;background-color:#f2f2f2;padding:10px}.adjust-modal .modal-container .modal-footer:after,.adjust-modal .modal-container .modal-footer:before{display:none}.adjust-modal .modal-container .modal-footer button{margin:0;border-radius:5px;padding:10px 20px;text-transform:uppercase;line-height:26px;font-family:Cachet Medium,Cachet W01 Medium,Cachet,Verdana,sans-serif;font-size:20px}.adjust-modal .modal-container .modal-footer .btn.btn-outline-primary{border-width:2px;border-style:solid;border-color:#0060af;background-color:#fff;color:#0060af}.adjust-modal .modal-container .modal-footer .btn.btn-outline-primary:hover{background-color:#0060af;color:#fff}.adjust-modal .modal-container .modal-footer .btn-primary{border-width:2px;background-color:#0060af;color:#fff}.adjust-modal .modal-container .modal-footer .btn-primary:hover{border-width:2px;border-style:solid;border-color:#0060af;background-color:#fff;color:#0060af}.paragraph-headline,.spinner-center{display:flex;justify-content:center}.paragraph-headline{background-color:#000;background-repeat:no-repeat;background-position:50%;background-size:cover;min-height:420px;padding:90px 10px}@media only screen and (max-width:991px){.paragraph-headline{min-height:300px;padding:77px 10px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.paragraph-headline{padding:65px 10px}}.paragraph-headline .paragraph-headline__content{border-radius:10px;background-color:rgba(0,0,0,.8);text-align:center;min-width:500px;max-width:720px;padding:40px}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content{min-width:300px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.paragraph-headline .paragraph-headline__content{min-width:100%}}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content{max-width:460px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.paragraph-headline .paragraph-headline__content{max-width:100%}}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content{padding:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.paragraph-headline .paragraph-headline__content{padding:20px 10px}}.paragraph-headline .paragraph-headline__content>:not(:last-child){padding-bottom:20px}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content>:not(:last-child){padding-bottom:10px}}.paragraph-headline .paragraph-headline__content .paragraph-headline__title{color:#fff;font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-weight:400;font-size:42px}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content .paragraph-headline__title{font-size:32px}}.paragraph-headline .paragraph-headline__content .paragraph-headline__description{color:#fff;font-size:18px}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content .paragraph-headline__description{font-size:16px}}.paragraph-headline .paragraph-headline__content .paragraph-headline__description p:not(:last-child){opacity:.8}.paragraph-headline .paragraph-headline__content .paragraph-headline__description a.btn{border:2px solid #fff;border-radius:5px;background-color:transparent;text-transform:uppercase}.paragraph-headline .paragraph-headline__content .paragraph-headline__description a.btn:hover{border-color:#ccc;background-color:#fff;text-decoration:none;color:#000}.paragraph-headline .paragraph-headline__content .paragraph-headline__link{display:inline-block;border:2px solid #fff;border-radius:5px;text-transform:uppercase;color:#fff;padding:12px 40px}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content .paragraph-headline__link{padding:10px 30px}}.paragraph-headline .paragraph-headline__content .paragraph-headline__link:hover{border-color:#ccc;background-color:#fff;text-decoration:none;color:#000}.personal-training-teaser>a .info .timers-wrapper{display:flex}.personal-training-teaser>a .info .canceled{margin-left:15px;border-color:#c00}.personal-training-teaser>a .info .canceled,.personal-training-teaser>a .info .private{color:#fff}.personal-training-page .personal-training-meeting{display:flex;position:fixed;top:0;left:0;flex-direction:column;z-index:2000;padding-top:0;width:100vw;max-width:none;height:100%}.personal-training-page .join-meeting{display:flex;align-items:center;justify-content:center;background-image:url(img/background.f64aa3f6.png);background-size:auto;height:400px;background-position:50%;background-repeat:no-repeat}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.personal-training-page .join-meeting{background-image:url(img/background-m.1759a037.png)}}@media only screen and (max-width:991px){.personal-training-page .join-meeting{background-size:cover}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.personal-training-page .join-meeting{height:360px}}.personal-training-page .join-meeting.shadow{box-shadow:inset 0 0 0 2000px rgba(0,0,0,.6)!important}.personal-training-page .join-meeting.shadow .message{border-radius:6px;background-color:#000;padding:24px;color:#fff}.personal-training-page .meeting-player{position:relative;background-color:#000;height:100%}.personal-training-page .meeting-player .video-wrapper{overflow:hidden;background-repeat:no-repeat;background-position:50%;background-size:cover}.personal-training-page .meeting-player video{transform:scaleX(-1);display:block;margin:-1px;height:calc(100% + 2px);width:calc(100% + 2px)}.personal-training-page .meeting-player .partner{background-image:url(img/background.f64aa3f6.png)}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.personal-training-page .meeting-player .partner{background-image:url(img/background-m.1759a037.png)}}.personal-training-page .meeting-player .local{background-image:url(img/join-options-video.05afcf0a.png)}.personal-training-page .meeting-player .connected{background:#000}.personal-training-page .meeting-player.view-inset .partner{position:absolute;width:100%;height:100%}.personal-training-page .meeting-player.view-inset .partner.connected{left:50%;transform:translateX(-50%)}.personal-training-page .meeting-player.view-inset .local{position:absolute;right:0;bottom:0;width:20%;min-width:150px}.personal-training-page .meeting-player.view-horizontal .video-wrapper{width:100%}.personal-training-page .meeting-player.view-horizontal .local,.personal-training-page .meeting-player.view-horizontal .partner{position:absolute;left:50%;transform:translateX(-50%);height:50%}.personal-training-page .meeting-player.view-horizontal .local{top:50%}.personal-training-page .meeting-player.view-horizontal video{width:100%}.personal-training-page .meeting-player.view-vertical .local,.personal-training-page .meeting-player.view-vertical .partner{position:absolute;top:50%;transform:translateY(-50%);width:50%}.personal-training-page .meeting-player.view-vertical .local{left:50%}.personal-training-page .audio-state-indicator,.personal-training-page .video-state-indicator{position:absolute;bottom:5px;height:30px;width:30px;z-index:1}.personal-training-page .audio-state-indicator .svg-container,.personal-training-page .video-state-indicator .svg-container{border-radius:50%;background-color:#c00;padding:6px;font-size:18px}.personal-training-page .audio-state-indicator{left:5px}.personal-training-page .audio-state-indicator .indication{border-radius:50%;background-color:#63ffda;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.personal-training-page .audio-state-indicator .indication:before{content:"";display:block;padding-top:100%}.personal-training-page .video-state-indicator{left:40px}.personal-training-page .control-panel{display:flex;padding:14px 24px}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.personal-training-page .control-panel{padding:0}}.personal-training-page .control-panel .full-screen{display:block}@media only screen and (max-width:991px){.personal-training-page .control-panel .full-screen{display:none}}.personal-training-page .control-panel .chat{margin-left:auto}.personal-training-page .control-panel>div{display:flex;flex-direction:column;align-items:center;position:relative;cursor:pointer}.personal-training-page .control-panel>div:not(:last-child){margin-right:12px}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.personal-training-page .control-panel>div:not(:last-child){margin-right:0}}.personal-training-page .control-panel>div .svg-container{padding:9px;font-size:26px;border:2px solid #fff;border-radius:50%}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.personal-training-page .control-panel>div .svg-container{border:none;border-radius:0}}.personal-training-page .control-panel>div span:nth-child(2){padding-top:6px;text-align:center;font-size:10px;display:block}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.personal-training-page .control-panel>div span:nth-child(2){display:none}}.personal-training-page .control-panel>div.enabled .svg-container{background-color:#060}.personal-training-page .control-panel>div.view .svg-container{padding:12px;font-size:20px}.personal-training-page .control-panel .chat.unread .svg-container{border:2px solid #c00}.personal-training-page .control-panel .chat.unread .unread-count{position:absolute;top:-5px;width:24px;height:24px;text-align:center;background-color:red;border-radius:12px;font-weight:700;font-size:12px;line-height:20px;right:-5px}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.personal-training-page .control-panel .chat.unread .unread-count{right:35px}}.personal-training-page .modal-join-options .modal-container{background-color:#000;color:#fff;width:72vw;max-height:80vh}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.personal-training-page .modal-join-options .modal-container{width:100vw}}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container{max-height:100vh}}.personal-training-page .modal-join-options .modal-container .modal-footer,.personal-training-page .modal-join-options .modal-container .modal-header{display:none}.personal-training-page .modal-join-options .modal-container .modal-body{display:-ms-grid;display:grid;margin:0;padding:0;overflow-y:initial;-ms-grid-columns:1fr .5fr;grid-template-columns:1fr .5fr}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container .modal-body{-ms-grid-columns:1fr;grid-template-columns:1fr}}.personal-training-page .modal-join-options .modal-container .modal-body .controls,.personal-training-page .modal-join-options .modal-container .modal-body .header,.personal-training-page .modal-join-options .modal-container .modal-body .join{-ms-grid-column:2;grid-column:2}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container .modal-body .controls,.personal-training-page .modal-join-options .modal-container .modal-body .header,.personal-training-page .modal-join-options .modal-container .modal-body .join{-ms-grid-column:1;grid-column:1}}.personal-training-page .modal-join-options .modal-container .modal-body .video{background-image:url(img/join-options-video.05afcf0a.png);background-repeat:no-repeat;background-position:50%;background-size:cover;-ms-grid-column:1;grid-column:1;position:relative;margin:24px;min-height:307px;-ms-grid-row:1;-ms-grid-row-span:3;grid-row:1/span 3}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container .modal-body .video{margin:12px;min-height:100px;-ms-grid-row:2;grid-row:2}}.personal-training-page .modal-join-options .modal-container .modal-body .video video{transform:scaleX(-1);width:100%;height:100%}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container .modal-body .video video{height:auto}}.personal-training-page .modal-join-options .modal-container .modal-body .header{display:flex;align-items:flex-start;margin-top:11px;-ms-grid-row:1;grid-row:1}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container .modal-body .header{margin-left:12px}}.personal-training-page .modal-join-options .modal-container .modal-body .header button{margin-left:auto;outline:none;border:none;background-color:transparent;padding:0 17px;color:#fff}.personal-training-page .modal-join-options .modal-container .modal-body .controls{display:flex;align-items:center;justify-content:space-around}.personal-training-page .modal-join-options .modal-container .modal-body .controls .cam,.personal-training-page .modal-join-options .modal-container .modal-body .controls .mic,.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings{display:flex;flex-direction:column;align-items:center;cursor:pointer}.personal-training-page .modal-join-options .modal-container .modal-body .controls .cam .svg-container,.personal-training-page .modal-join-options .modal-container .modal-body .controls .mic .svg-container,.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings .svg-container{border-radius:50%;background-color:#c00;padding:13px;font-size:26px}.personal-training-page .modal-join-options .modal-container .modal-body .controls .cam .switch-icon,.personal-training-page .modal-join-options .modal-container .modal-body .controls .mic .switch-icon,.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings .switch-icon{margin-left:12px;font-size:52px}.personal-training-page .modal-join-options .modal-container .modal-body .controls .cam>div,.personal-training-page .modal-join-options .modal-container .modal-body .controls .mic>div,.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings>div{display:flex}.personal-training-page .modal-join-options .modal-container .modal-body .controls .cam>span,.personal-training-page .modal-join-options .modal-container .modal-body .controls .mic>span,.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings>span{padding-top:6px;font-size:10px}.personal-training-page .modal-join-options .modal-container .modal-body .controls .cam.enabled .svg-container,.personal-training-page .modal-join-options .modal-container .modal-body .controls .mic.enabled .svg-container,.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings.enabled .svg-container{background-color:#060}.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings .svg-container{background-color:#000}.personal-training-page .modal-join-options .modal-container .modal-body .join .error-message{margin-top:30px}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container .modal-body .join .error-message{margin-top:15px}}.personal-training-page .modal-join-options .modal-container .modal-body .join .indigo-button.disabled{border-color:#636466;background-color:#000;color:#636466!important}@media (max-width:823px) and (max-height:500px) and (orientation:landscape){.personal-training-page .modal-join-options .modal-container{width:100vw;height:100vh;max-height:none}.personal-training-page .modal-join-options .modal-container .modal-body{-ms-grid-columns:1fr 200px;grid-template-columns:1fr 200px}.personal-training-page .modal-join-options .modal-container .modal-body .controls,.personal-training-page .modal-join-options .modal-container .modal-body .header,.personal-training-page .modal-join-options .modal-container .modal-body .join{-ms-grid-column:2;grid-column:2}.personal-training-page .modal-join-options .modal-container .modal-body .video{-ms-grid-row-align:center;align-self:center;-ms-grid-column:1;grid-column:1;-ms-grid-row:1;-ms-grid-row-span:3;grid-row:1/span 3}}@media (max-width:500px) and (max-height:823px) and (orientation:portrait){.personal-training-page .modal-join-options .modal-container .modal-body .video video{height:50vh}}@media only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:portrait) and (-webkit-min-device-pixel-ratio:1),only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:portrait) and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-width:834px) and (max-device-width:834px) and (orientation:portrait) and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-width:1024px) and (max-device-width:1024px) and (orientation:portrait) and (-webkit-min-device-pixel-ratio:2){.personal-training-page .modal-join-options .modal-body{-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr}.personal-training-page .modal-join-options .modal-body .header{grid-column:1/span2}.personal-training-page .modal-join-options .modal-body .controls,.personal-training-page .modal-join-options .modal-body .join{-ms-grid-column:2;grid-column:2}.personal-training-page .modal-join-options .modal-body .video{-ms-grid-row:2;-ms-grid-row-span:2;grid-row:2/span 2}.personal-training-page .modal-join-options .modal-body .video video{max-height:500px}}.personal-training-page .modal-view-options .modal-container{background-color:#000;color:#fff;width:30vw}@media only screen and (max-width:991px){.personal-training-page .modal-view-options .modal-container{width:60vw}}.personal-training-page .modal-view-options .modal-container .modal-header{display:flex;align-items:flex-start;border-bottom:#636466;padding:12px}.personal-training-page .modal-view-options .modal-container .modal-header button{margin-left:auto;outline:none;border:none;background-color:transparent;padding:0 17px;color:#fff;font-size:18px}.personal-training-page .modal-view-options .modal-container .modal-body{margin:0;padding:0;overflow-y:initial}.personal-training-page .modal-view-options .modal-container .modal-body>div{display:flex;align-items:center;border-bottom:#636466;cursor:pointer;padding:15px 12px}.personal-training-page .modal-view-options .modal-container .modal-body>div .svg-container{padding-right:15px;font-size:18px}.personal-training-page .modal-view-options .modal-container .modal-body>div.selected,.personal-training-page .modal-view-options .modal-container .modal-body>div:hover{background-color:#231f20}.personal-training-page .modal-view-options .modal-container .modal-footer{display:none}.personal-training-page .modal-leave-meeting .modal-container{width:400px}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.personal-training-page .modal-leave-meeting .modal-container{width:300px}}.personal-training-page .modal-leave-meeting .modal-container .modal-header{border-bottom:none;padding:14px 15px 14px 24px;text-transform:uppercase;color:#636466;font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-size:18px;font-weight:400}.personal-training-page .modal-leave-meeting .modal-container .modal-header .modal-default-button{border:none;background-color:initial;padding:0;line-height:24px;font-size:24px}.personal-training-page .modal-leave-meeting .modal-container .modal-body{margin:0;padding:17px 24px 24px;overflow-y:initial}.personal-training-page .modal-leave-meeting .modal-container .modal-body .button{float:left;border:2px solid #0060af;border-radius:6px;background-color:#fff;cursor:pointer;padding:9px 24px;height:auto;text-transform:uppercase;color:#0060af;font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-size:24px}.personal-training-page .modal-leave-meeting .modal-container .modal-body .button:hover{background-color:#0060af;color:#fff}.personal-training-page .modal-leave-meeting .modal-container .modal-body .button:last-child{float:right;background-color:#0060af;color:#fff}.personal-training-page .modal-leave-meeting .modal-container .modal-body .button:last-child:hover{background-color:#fff;color:#0060af}.personal-training-page .modal-leave-meeting .modal-container .modal-footer{display:none}.personal-training-page .modal-chat .modal-wrapper{display:block}.personal-training-page .modal-chat .modal-wrapper .modal-container{height:100%;max-height:100%;position:absolute;right:0;width:430px}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){.personal-training-page .modal-chat .modal-wrapper .modal-container{width:100%}}.personal-training-page .modal-chat .modal-wrapper .modal-header{align-items:center;padding:24px;color:#636466;font-weight:700}.personal-training-page .modal-chat .modal-wrapper .modal-header button{border:none;background:none;font-size:30px;height:30px;line-height:0}.personal-training-page .modal-chat .modal-wrapper .modal-body{margin:0;background-color:#f2f2f2;position:relative;flex:1 1 auto;padding:1rem}.personal-training-page .modal-chat .modal-wrapper .modal-footer{display:flex;flex-wrap:wrap;align-items:center;border-top:1px solid #9f9f9f;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px);justify-content:space-between;padding:24px}@media only screen and (max-width:991px){.personal-training-page .modal-chat .modal-wrapper .modal-footer{padding:10px}}.personal-training-page .modal-chat .modal-wrapper .modal-footer input{width:80%;padding:12px;border-radius:0;border:1px solid #636466}.personal-training-page .modal-chat .modal-wrapper .modal-footer button{width:50px;height:50px;background-color:#92278f;border:none;border-radius:6px;transition:opacity .4s}.personal-training-page .modal-chat .modal-wrapper .modal-footer button:disabled,.personal-training-page .modal-chat .modal-wrapper .modal-footer button:hover{opacity:.7}.personal-training-page .modal-chat .message{display:flex;justify-content:left;margin:0 10px 24px}.personal-training-page .modal-chat .message .user-icon{min-width:48px;height:48px;margin:0 10px 0 0;text-align:center;line-height:48px;font-weight:700;border-radius:24px;border:2px solid #636466;color:#636466;background-color:#fff}.personal-training-page .modal-chat .message .message-card .message-header{margin-bottom:12px}.personal-training-page .modal-chat .message .message-card .message-author{font-size:12px;font-weight:700}.personal-training-page .modal-chat .message .message-card .message-time{font-size:10px}.personal-training-page .modal-chat .message .message-card .message-body{font-size:14px}.personal-training-page .modal-chat .message.d-right{justify-content:space-between;flex-direction:row-reverse}.personal-training-page .modal-chat .message.d-right .user-icon{margin:0 0 0 10px;color:#fff;background-color:#636466}.personal-training-page .modal-chat .message.d-right .message-card{float:right}.personal-training-page .modal-device-manager .modal-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100vw}.personal-training-page .modal-device-manager .modal-container .modal-header{border-bottom:none;padding:14px 15px 14px 24px;text-transform:uppercase;color:#636466;font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-size:18px;font-weight:400}.personal-training-page .modal-device-manager .modal-container .modal-header .modal-default-button{margin-left:20px;border:none;background-color:initial;padding:0;line-height:24px;font-size:24px}.personal-training-page .modal-device-manager .modal-container .modal-body{margin:0;padding:0 24px 24px;overflow-y:initial}.personal-training-page .modal-device-manager .modal-container .modal-body .select{display:flex;flex-direction:column}.personal-training-page .modal-device-manager .modal-container .modal-body .select label{margin-bottom:0}.personal-training-page .modal-device-manager .modal-container .modal-body .select:not(:last-child){margin-bottom:10px}.personal-training-page .modal-device-manager .modal-container .modal-footer{display:none}.modal-body .filter input:disabled,.modal-body .filter input:disabled+label{opacity:.5}#gated-content .gated-content-video-page{padding-bottom:30px}#gated-content .gated-content-video-page .video-wrapper{background-color:#000}@media (max-width:768px){#gated-content .gated-content-video-page .video-wrapper .video{width:100%}}#gated-content .gated-content-video-page .video-wrapper .video .youtube,#gated-content .gated-content-video-page .video-wrapper .video .youtube_playlist{position:relative;padding:56.25% 0 0 0}#gated-content .gated-content-video-page .video-wrapper .video .youtube>iframe,#gated-content .gated-content-video-page .video-wrapper .video .youtube_playlist>iframe{position:absolute;top:0;left:0;border-width:0;width:100%;height:100%}#gated-content .gated-content-video-page .video-wrapper .video .vimeo_event{padding:65.91% 0 0 0;position:relative}#gated-content .gated-content-video-page .video-wrapper .video .vimeo_event iframe{position:absolute;top:0;left:0;width:100%!important;height:100%!important}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer{display:-ms-grid;display:grid;-ms-grid-columns:65% 35%;grid-template-columns:65% 35%}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer{-ms-grid-columns:1fr;grid-template-columns:1fr}}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:first-child,#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(2),#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(4){-ms-grid-column:1;grid-column:1;padding-right:40px}@media only screen and (max-width:991px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:first-child,#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(2),#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(4){padding-right:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:first-child,#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(2),#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(4){padding-right:0}}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__fav{-ms-grid-row:2;grid-row:2;display:flex;align-items:center}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(3){-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-row-span:3;grid-row-end:4}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(3){-ms-grid-column:1;grid-column:1;-ms-grid-row:3;grid-row-start:3;-ms-grid-row-span:initial;grid-row-end:auto;padding-bottom:20px}}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(3) .svg-container{font-size:18px;margin-right:14px}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(3) .svg-container{margin-right:10px}}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(4){-ms-grid-row:3;grid-row:3}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(4){-ms-grid-row:4;grid-row:4}}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__block{display:flex;align-items:center;padding:10px 0}@media only screen and (max-width:991px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__block{padding:8px 0}}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__block:first-child{padding-top:0}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__block ul{list-style:none;padding:0;margin:0}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__category .video-footer__category-list-item li{display:inline}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__category .video-footer__category-list-item li:not(:last-of-type):after{content:" > "}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__equipment{margin-bottom:0;padding-top:5px;font-size:12px;list-style-type:none}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__equipment li:before{content:"+"}#gated-content .gated-content-video-page .video-footer-wrapper.bg-black .video-footer__block a{color:#fff}#gated-content .gated-content-video-page .video-footer-wrapper.bg-black .video-footer__block a:hover{color:#ccc}@media (min-width:768px){.one-column #gated-content .gated-content-video-page .video{padding:0}.one-column #gated-content .videos{padding-right:0;padding-left:0}}.gated-content-category-page .title-wrapper ul{padding:0;margin:0}.gated-content-category-page .title-wrapper ul>li{display:inline}.gated-content-category-page .title-wrapper ul>li:not(:last-of-type):after{content:" > "}.gated-content-blog-page .blog-page__image{position:relative;background-position:50%;background-size:cover;padding:30% 0 0 0}.gated-content-blog-page .blog-page__categories ul{list-style:none;padding:0}.gated-content-blog-page .blog-page__category li{display:inline}.gated-content-blog-page .blog-page__category li:not(:last-of-type):after{content:" > "}.gated-content-blog-page .add-to-favorite{overflow:hidden;background-size:20px 20px}.gated-content-schedule-page{width:100%;color:#000}.date-filter{width:100%;position:fixed;display:flex;justify-content:center;background-color:#f2f2f2;font-size:16px}@media only screen and (max-width:991px){.date-filter{font-size:14px}}.date-filter>button{border:none;color:#636466;background-color:#f2f2f2;height:48px;width:48px;padding:0}.date-filter>button[disabled]{opacity:.5}.date-filter>button:focus{outline:0}.date-filter .date{min-width:244px;text-align:center;line-height:48px}@media only screen and (max-width:991px){.date-filter .date{min-width:124px}}.calendar{font-size:14px}.calendar .mobile{display:none;margin-top:20px;padding:0 15px}@media only screen and (max-width:991px){.calendar .mobile{display:block}}.calendar .mobile .day{width:100%}.calendar .mobile .day .header{display:flex;align-items:center;padding:0 10px;border-top:1px solid #636466}.calendar .mobile .day .header .caption{font-weight:700;flex-grow:1;color:#636466}.calendar .mobile .day .header .count{font-size:10px}.calendar .mobile .day .header>button{height:48px;width:48px;border:none;background-color:#fff;color:#636466;padding:0}.calendar .mobile .day .header>button:focus{outline:0}.calendar .mobile .day .header .day-expand{display:none}.calendar .mobile .day .items{height:auto;transition:all .5s ease}.calendar .mobile .day.collapsed .header .day-expand{display:block}.calendar .mobile .day.collapsed .header .day-collapse{display:none}.calendar .mobile .day.collapsed .items{height:0;display:none}.calendar .desktop{display:block}@media only screen and (max-width:991px){.calendar .desktop{display:none}}.calendar .desktop .slot.dates{width:100%;position:fixed;background-color:#f2f2f2}.calendar .desktop .slot>div{max-width:1170px;margin:0 auto}.calendar .desktop .slot .caption{display:flex;flex-wrap:wrap}.calendar .desktop .slot .caption .hour-card{flex-basis:0;flex-grow:1;max-width:100%;padding:8px 10px;background-color:#f2f2f2;font-weight:700;text-align:center}.calendar .desktop .slot .caption .hour-card.active{color:#fff;background-color:#92278f}.calendar .desktop .slot .hour-row{display:flex;flex-wrap:wrap}.calendar .desktop .slot .hour-row .event-cell{flex-basis:0;flex-grow:1;max-width:100%;background-color:#fff;border:1px solid #f2f2f2}.calendar .desktop .slot .hour-row .event-cell.date{padding:10px;text-align:center}.calendar .desktop .slot .hour-row .event-cell.date .weekday{font-weight:700;text-transform:uppercase}.calendar .desktop .slot .hour-row .event-cell.date.active{color:#fff;background-color:#92278f;border-color:#92278f}.calendar .empty-listing{margin:0 auto;max-width:1170px;padding:10px;border:1px solid #f2f2f2}@media only screen and (max-width:991px){.calendar .empty-listing{padding:0 15px;border:none}}.calendar .schedule-event-card{height:100%;display:flex;flex-direction:column;border-top:none}@media only screen and (max-width:991px){.calendar .schedule-event-card{flex-direction:row;border-top:1px solid #f2f2f2}}.calendar .schedule-event-card.past{display:block}@media only screen and (max-width:991px){.calendar .schedule-event-card.past{display:none}}.calendar .schedule-event-card .info{padding:10px;flex-grow:1}.calendar .schedule-event-card .info .time{font-size:12px;font-weight:700}.calendar .schedule-event-card .info .title a{font-weight:700}.calendar .schedule-event-card .info .instructor{font-size:12px}.calendar .schedule-event-card .add-to-favorite{position:static;display:flex;align-items:center;margin-left:12px;height:auto;min-height:44px}.virtual-meeting-page .virtual-meeting-page__image{height:400px;position:relative;background-size:cover;background-position:50%;display:flex;align-items:center;justify-content:center;text-align:center}.virtual-meeting-page .virtual-meeting-page__image .virtual-meeting-page__link .btn{background-color:#2f2f2f}.virtual-meeting-page .virtual-meeting-page__image .virtual-meeting-page__link .btn:hover{background-color:#0070aa}.virtual-meeting-page .virtual-meeting-page__image.zoom-wrapper{height:650px}.virtual-meeting-page .virtual-meeting-page__image.zoom-wrapper iframe{border:none;background-color:#fff;overflow:hidden}.login{padding-top:30px;padding-bottom:30px}.login,.login h2.title{text-align:center}.login form{max-width:305px;margin:30px auto}.login form .form-item{margin:0 0 15px}.login form .recaptcha{margin:0;padding:15px 0}.login form .btn{margin:0 auto;display:block}.personify-auth{display:flex;flex-direction:column;align-items:center}.personify-auth .alert{display:inline-block}.personify-auth .btn,.personify-auth .btn:hover{color:#fff}.openy_carnation-based.openy-gated-content main>div>div>.banner{display:none}.openy_carnation-based.openy-gated-content main>div>div>.breadcrumbs-wrapper{display:none!important}.openy_carnation-based.openy-gated-content #gated-content{padding-top:80px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content #gated-content{padding-top:85px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content #gated-content{padding-top:45px}}.openy_carnation-based.openy-gated-content #gated-content .top-menu{top:130px;z-index:1030}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content #gated-content .top-menu{top:78px;z-index:39}}.openy_carnation-based.openy-gated-content #gated-content .top-menu.menuOpen{z-index:2000}.openy_carnation-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:110px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:112px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:56px}}.openy_carnation-based.openy-gated-content #gated-content .date-filter{top:217px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content #gated-content .date-filter{top:165px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content #gated-content .date-filter{top:125px}}.openy_carnation-based.openy-gated-content #gated-content .calendar .desktop .slot.dates{top:263px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content #gated-content .calendar .desktop .slot.dates{top:213px}}.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content{padding-top:0}.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .top-menu{top:170px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .top-menu{top:117px}}.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .gated-content-schedule-page{padding-top:0}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .gated-content-schedule-page{padding-top:3px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .gated-content-schedule-page{padding-top:56px}}.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .date-filter{top:257px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .date-filter{top:204px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .date-filter{top:164px}}.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .calendar .desktop .slot.dates{top:305px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .calendar .desktop .slot.dates{top:252px}}.openy_carnation-based.openy-gated-content.toolbar-fixed .openy-page-tabs{margin-top:80px!important}.openy_carnation-based.openy-gated-content.toolbar-tray-open #gated-content .top-menu{top:209px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.toolbar-tray-open #gated-content .top-menu{top:117px}}.openy_carnation-based.openy-gated-content.toolbar-tray-open #gated-content .date-filter{top:296px}.openy_carnation-based.openy-gated-content.toolbar-tray-open #gated-content .calendar .desktop .slot.dates{top:344px}.openy_carnation-based.openy-gated-content.alerts #openy_alerts_header_placeholder{margin-top:217px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts #openy_alerts_header_placeholder{margin-top:165px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content.alerts #openy_alerts_header_placeholder{margin-top:125px}}.openy_carnation-based.openy-gated-content.alerts #gated-content{padding-top:0}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.toolbar-fixed #openy_alerts_header_placeholder{margin-top:125px}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule .layout-container,.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule .layout-container .viewport{overflow:initial}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page{padding-top:0!important}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{position:static;position:sticky;top:217px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{top:165px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{top:116px}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{position:static;position:sticky;top:265px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:213px}}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-vertical #toolbar-bar{position:fixed}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #openy_alerts_app_header{margin-top:122px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #openy_alerts_app_header{margin-top:0}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .date-filter{top:256px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .date-filter{top:204px}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:304px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:252px}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #openy_alerts_app_header{margin-top:164px}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .date-filter{top:295px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .date-filter{top:204px}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:343px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:252px}}.openy_lily-based.openy-gated-content .breadcrumb-container,.openy_lily-based.openy-gated-content .return-to-top{display:none}.openy_lily-based.openy-gated-content #gated-content .top-menu{top:162px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content #gated-content .top-menu{top:80px}}.openy_lily-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:112px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:56px}}.openy_lily-based.openy-gated-content #gated-content .date-filter{top:247px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content #gated-content .date-filter{top:127px}}.openy_lily-based.openy-gated-content #gated-content .calendar .desktop .slot.dates{top:292px}.openy_lily-based.openy-gated-content.toolbar-fixed header#page-head .top-navs .nav-wrapper .main-nav.affix{top:120px!important}.openy_lily-based.openy-gated-content.toolbar-fixed #gated-content .gated-content-schedule-page{padding-top:48px}.openy_lily-based.openy-gated-content.toolbar-tray-open #gated-content .top-menu{top:189px;z-index:500}.openy_lily-based.openy-gated-content.toolbar-tray-open #gated-content .gated-content-schedule-page{padding-top:45px}.openy_lily-based.openy-gated-content.toolbar-tray-open #gated-content .date-filter{top:274px}.openy_lily-based.openy-gated-content.toolbar-tray-open #gated-content .calendar .desktop .slot.dates{top:319px}.openy_lily-based.openy-gated-content.alerts #openy_alerts_app_header{margin-top:85px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content.alerts #openy_alerts_app_header{margin-top:47px}}.openy_lily-based.openy-gated-content.alerts #gated-content{padding-top:0}.openy_lily-based.openy-gated-content.alerts.toolbar-fixed #openy_alerts_app_header{margin-top:63px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content.alerts.toolbar-fixed #openy_alerts_app_header,.openy_lily-based.openy-gated-content.alerts.toolbar-fixed .viewport{margin-top:0}}.openy_lily-based.openy-gated-content.alerts.toolbar-tray-open #openy_alerts_app_header{margin-top:60px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content.alerts.toolbar-tray-open #openy_alerts_app_header{margin-top:0}}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule .layout-container,.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule .layout-container .viewport{overflow:initial}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page{padding-top:0!important}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{position:static;position:sticky;top:247px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{top:126px}}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{position:static;position:sticky;top:295px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-vertical #toolbar-bar{position:fixed}}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #openy_alerts_app_header{margin-top:122px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #openy_alerts_app_header{margin-top:0}}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .date-filter{top:246px}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:294px}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #openy_alerts_app_header{margin-top:164px}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .date-filter{top:273px}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:321px}.openy_rose-based.openy-gated-content #block-openy-rose-breadcrumbs{display:none}.openy_rose-based.openy-gated-content #gated-content .top-menu{z-index:500;top:165px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content #gated-content .top-menu{z-index:1030;top:70px}}.openy_rose-based.openy-gated-content #gated-content .top-menu>div button{padding-right:0}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content #gated-content .top-menu>div button{padding-right:8px}}.openy_rose-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:115px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:52px}}.openy_rose-based.openy-gated-content #gated-content .date-filter{top:250px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content #gated-content .date-filter{top:117px}}.openy_rose-based.openy-gated-content #gated-content .calendar .desktop .slot.dates{top:298px}.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content{padding-top:0}.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content .top-menu,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content .top-menu{top:202px}.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content .gated-content-schedule-page,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content .gated-content-schedule-page{padding-top:46px}.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content .date-filter,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content .date-filter{top:287px}.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content .calendar .desktop .slot.dates,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content .calendar .desktop .slot.dates{top:335px}.openy_rose-based.openy-gated-content.toolbar-horizontal .openy-page-tabs,.openy_rose-based.openy-gated-content.toolbar-vertical .openy-page-tabs{margin-top:100px!important}@media (max-width:991px){.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content .top-menu,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content .top-menu{top:109px}.openy_rose-based.openy-gated-content.toolbar-horizontal .viewport,.openy_rose-based.openy-gated-content.toolbar-vertical .viewport{margin-top:86px}}@media (max-width:609px){.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content .top-menu,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content .top-menu{top:109px}}.openy_rose-based.openy-gated-content.toolbar-tray-open #gated-content .top-menu{top:244px}.openy_rose-based.openy-gated-content.toolbar-tray-open #gated-content .gated-content-schedule-page{padding-top:48px}.openy_rose-based.openy-gated-content.toolbar-tray-open #gated-content .date-filter{top:329px}.openy_rose-based.openy-gated-content.toolbar-tray-open #gated-content .calendar .desktop .slot.dates{top:377px}.openy_rose-based.openy-gated-content.primary-menu-minimize #gated-content .top-menu{top:42px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.primary-menu-minimize #gated-content .top-menu{top:109px}}.openy_rose-based.openy-gated-content.primary-menu-minimize #gated-content .gated-content-schedule-page{padding-top:0}.openy_rose-based.openy-gated-content.primary-menu-minimize #gated-content .date-filter{top:127px}.openy_rose-based.openy-gated-content.primary-menu-minimize #gated-content .calendar .desktop .slot.dates{top:175px}.openy_rose-based.openy-gated-content.primary-menu-minimize.toolbar-fixed #gated-content .top-menu{top:81px}.openy_rose-based.openy-gated-content.primary-menu-minimize.toolbar-fixed #gated-content .date-filter{top:166px}.openy_rose-based.openy-gated-content.primary-menu-minimize.toolbar-fixed #gated-content .calendar .desktop .slot.dates{top:214px}.openy_rose-based.openy-gated-content.alerts #openy_alerts_app_header{margin-top:85px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.alerts #openy_alerts_app_header{margin-top:47px}}.openy_rose-based.openy-gated-content.alerts #gated-content{padding-top:0}.openy_rose-based.openy-gated-content.alerts.toolbar-fixed #openy_alerts_app_header{margin-top:83px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.alerts.toolbar-fixed #openy_alerts_app_header{margin-top:0}}.openy_rose-based.openy-gated-content.alerts.toolbar-tray-open #openy_alerts_app_header{margin-top:85px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.alerts.toolbar-tray-open #openy_alerts_app_header{margin-top:0}}.openy_rose-based.openy-gated-content.alerts .openy-page-tabs{margin-top:10px!important}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule .viewport{overflow:initial}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page{padding-top:0!important}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{position:static;position:sticky;top:250px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{top:116px}}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{position:static;position:sticky;top:298px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.primary-menu-minimize #gated-content .gated-content-schedule-page{padding-top:0!important}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.primary-menu-minimize #gated-content .gated-content-schedule-page .date-filter{position:static;position:sticky;top:126px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.primary-menu-minimize #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{position:static;position:sticky;top:174px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-vertical #toolbar-bar{position:fixed}}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #openy_alerts_app_header{margin-top:122px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #openy_alerts_app_header{margin-top:0}}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .date-filter{top:287px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:335px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.primary-menu-minimize #gated-content .gated-content-schedule-page .date-filter{top:165px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.primary-menu-minimize #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:213px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #openy_alerts_app_header{margin-top:164px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .date-filter{top:326px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:374px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open.primary-menu-minimize #gated-content .gated-content-schedule-page .date-filter{top:166px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open.primary-menu-minimize #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:214px}#gated-content{padding-bottom:30px;padding-top:80px}@media only screen and (max-width:991px){#gated-content{padding-top:45px}}#gated-content .gated-container{padding:10px}@media (min-width:768px){#gated-content .gated-container{margin-left:auto;margin-right:auto;padding:30px 15px;max-width:750px}}@media (min-width:992px){#gated-content .gated-container{max-width:970px}}@media (min-width:1200px){#gated-content .gated-container{max-width:1170px}}#gated-content .gated-containerV2{margin-left:auto;margin-right:auto;max-width:1140px}@media only screen and (max-width:991px){#gated-content .gated-containerV2{max-width:940px}}@media only screen and (max-width:767px),only screen and (max-width:823px) and (max-height:500px){#gated-content .gated-containerV2{max-width:none}}#gated-content .fixed-button{position:fixed;width:48px;height:48px;border-radius:50%;border:2px solid #fff;cursor:pointer;opacity:.8;transition:all .2s ease-in-out}#gated-content .fixed-button a{display:block;color:#fff}#gated-content .fixed-button:hover{opacity:1;box-shadow:0 0 10px rgba(0,0,0,.25)}#gated-content .scroll-to-top{right:30px;bottom:30px;background-color:#0060af;z-index:1}#gated-content .title-wrapper{display:flex;align-items:center;justify-content:space-between}#gated-content .title-inline{display:inline-block}.spinner{justify-content:center} \ No newline at end of file +.cachet-book-32-28{font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-weight:400;font-size:32px}@media only screen and (max-width:991px){.cachet-book-32-28{font-size:28px}}.cachet-book-30-24{font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-weight:400;font-size:30px}@media only screen and (max-width:991px){.cachet-book-30-24{font-size:24px}}.cachet-book-24-20{font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-weight:400;font-size:24px}@media only screen and (max-width:991px){.cachet-book-24-20{font-size:20px}}.cachet-book-18{font-size:18px}.cachet-book-18,.cachet-book-20{font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-weight:400}.cachet-book-20{font-size:20px}.cachet-medium-24-20,.paragraph-headline .paragraph-headline__content .paragraph-headline__link{font-family:Cachet Medium,Cachet W01 Medium,Cachet,Verdana,sans-serif;font-weight:500;font-size:24px}@media only screen and (max-width:991px){.cachet-medium-24-20,.paragraph-headline .paragraph-headline__content .paragraph-headline__link{font-size:20px}}.cachet-medium-16-14,.paragraph-headline .paragraph-headline__content .paragraph-headline__description a.btn{font-family:Cachet Medium,Cachet W01 Medium,Cachet,Verdana,sans-serif;font-weight:500;font-size:16px}@media only screen and (max-width:991px){.cachet-medium-16-14,.paragraph-headline .paragraph-headline__content .paragraph-headline__description a.btn{font-size:14px}}.cachet-medium-20-18,.paragraph-headline .paragraph-headline__content .paragraph-headline__description a.btn.btn-lg{font-family:Cachet Medium,Cachet W01 Medium,Cachet,Verdana,sans-serif;font-weight:500;font-size:20px}@media only screen and (max-width:991px){.cachet-medium-20-18,.paragraph-headline .paragraph-headline__content .paragraph-headline__description a.btn.btn-lg{font-size:18px}}.verdana-16-14{font-family:Verdana,sans-serif;font-size:16px}@media only screen and (max-width:991px){.verdana-16-14{font-size:14px}}.verdana-14-12{font-family:Verdana,sans-serif;font-size:14px}@media only screen and (max-width:991px){.verdana-14-12{font-size:12px}}.text-thunder{color:#231f20!important}.text-white{color:#fff!important}.text-black{color:#000!important}.text-gray{color:#636466!important}.text-red{color:#c00!important}.bg-black{background-color:#000!important}.bg-white{background-color:#fff!important}.bg-red{background-color:#c00!important}.fill-white{fill:#fff!important}.fill-gray{fill:#636466!important}.fill-red{fill:#c00!important}.fill-camarone{fill:#060!important}.border-thunder{border-color:#231f20!important}.border-concrete{border-color:#f2f2f2!important}.p-10-5{padding:10px}@media only screen and (max-width:991px){.p-10-5{padding:5px}}.pt-20-10,.py-20-10{padding-top:20px}@media only screen and (max-width:991px){.pt-20-10,.py-20-10{padding-top:10px}}.pb-20-10,.py-20-10{padding-bottom:20px}@media only screen and (max-width:991px){.pb-20-10,.py-20-10{padding-bottom:10px}}.pt-40-20,.py-40-20{padding-top:40px}@media only screen and (max-width:991px){.pt-40-20,.py-40-20{padding-top:20px}}.pb-40-20,.py-40-20{padding-bottom:40px}@media only screen and (max-width:991px){.pb-40-20,.py-40-20{padding-bottom:20px}}.mt-20-10,.my-20-10{margin-top:20px}@media only screen and (max-width:991px){.mt-20-10,.my-20-10{margin-top:10px}}.mb-20-10,.my-20-10{margin-bottom:20px}@media only screen and (max-width:991px){.mb-20-10,.my-20-10{margin-bottom:10px}}.mt-40-20,.my-40-20{margin-top:40px}@media only screen and (max-width:991px){.mt-40-20,.my-40-20{margin-top:20px}}.mb-40-20,.my-40-20{margin-bottom:40px}@media only screen and (max-width:991px){.mb-40-20,.my-40-20{margin-bottom:20px}}@media only screen and (max-width:991px){.px--20-10{padding-left:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.px--20-10{padding-left:10px}}@media only screen and (max-width:991px){.px--20-10{padding-right:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.px--20-10{padding-right:10px}}.px-36-24{padding-left:36px;padding-right:36px}@media only screen and (max-width:991px){.px-36-24{padding-left:24px;padding-right:24px}}.four-columns{display:-ms-grid;display:grid;-ms-grid-rows:(auto)[10];grid-template-rows:repeat(10,auto);-ms-grid-columns:1fr 40px 1fr 40px 1fr 40px 1fr;grid-template-columns:repeat(4,1fr);grid-column-gap:40px;margin-top:20px}.four-columns>:first-child{-ms-grid-row:1;-ms-grid-column:1}.four-columns>:nth-child(2){-ms-grid-row:1;-ms-grid-column:3}.four-columns>:nth-child(3){-ms-grid-row:1;-ms-grid-column:5}.four-columns>:nth-child(4){-ms-grid-row:1;-ms-grid-column:7}.four-columns>:nth-child(5){-ms-grid-row:2;-ms-grid-column:1}.four-columns>:nth-child(6){-ms-grid-row:2;-ms-grid-column:3}.four-columns>:nth-child(7){-ms-grid-row:2;-ms-grid-column:5}.four-columns>:nth-child(8){-ms-grid-row:2;-ms-grid-column:7}.four-columns>:nth-child(9){-ms-grid-row:3;-ms-grid-column:1}.four-columns>:nth-child(10){-ms-grid-row:3;-ms-grid-column:3}.four-columns>:nth-child(11){-ms-grid-row:3;-ms-grid-column:5}.four-columns>:nth-child(12){-ms-grid-row:3;-ms-grid-column:7}.four-columns>:nth-child(13){-ms-grid-row:4;-ms-grid-column:1}.four-columns>:nth-child(14){-ms-grid-row:4;-ms-grid-column:3}.four-columns>:nth-child(15){-ms-grid-row:4;-ms-grid-column:5}.four-columns>:nth-child(16){-ms-grid-row:4;-ms-grid-column:7}.four-columns>:nth-child(17){-ms-grid-row:5;-ms-grid-column:1}.four-columns>:nth-child(18){-ms-grid-row:5;-ms-grid-column:3}.four-columns>:nth-child(19){-ms-grid-row:5;-ms-grid-column:5}.four-columns>:nth-child(20){-ms-grid-row:5;-ms-grid-column:7}.four-columns>:nth-child(21){-ms-grid-row:6;-ms-grid-column:1}.four-columns>:nth-child(22){-ms-grid-row:6;-ms-grid-column:3}.four-columns>:nth-child(23){-ms-grid-row:6;-ms-grid-column:5}.four-columns>:nth-child(24){-ms-grid-row:6;-ms-grid-column:7}.four-columns>:nth-child(25){-ms-grid-row:7;-ms-grid-column:1}.four-columns>:nth-child(26){-ms-grid-row:7;-ms-grid-column:3}.four-columns>:nth-child(27){-ms-grid-row:7;-ms-grid-column:5}.four-columns>:nth-child(28){-ms-grid-row:7;-ms-grid-column:7}.four-columns>:nth-child(29){-ms-grid-row:8;-ms-grid-column:1}.four-columns>:nth-child(30){-ms-grid-row:8;-ms-grid-column:3}.four-columns>:nth-child(31){-ms-grid-row:8;-ms-grid-column:5}.four-columns>:nth-child(32){-ms-grid-row:8;-ms-grid-column:7}.four-columns>:nth-child(33){-ms-grid-row:9;-ms-grid-column:1}.four-columns>:nth-child(34){-ms-grid-row:9;-ms-grid-column:3}.four-columns>:nth-child(35){-ms-grid-row:9;-ms-grid-column:5}.four-columns>:nth-child(36){-ms-grid-row:9;-ms-grid-column:7}.four-columns>:nth-child(37){-ms-grid-row:10;-ms-grid-column:1}.four-columns>:nth-child(38){-ms-grid-row:10;-ms-grid-column:3}.four-columns>:nth-child(39){-ms-grid-row:10;-ms-grid-column:5}.four-columns>:nth-child(40){-ms-grid-row:10;-ms-grid-column:7}@media only screen and (max-width:991px){.four-columns{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,1fr)}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.four-columns{-ms-grid-columns:1fr;grid-template-columns:1fr}}@media only screen and (max-width:991px){.four-columns{grid-column-gap:20px;margin-top:10px}}.four-columns>div:nth-child(n+2){margin-top:0}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.four-columns>div:nth-child(n+2){margin-top:10px}}.four-columns>div:nth-child(n+3){margin-top:0}@media only screen and (max-width:991px){.four-columns>div:nth-child(n+3){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.four-columns>div:nth-child(n+3){margin-top:10px}}.four-columns>div:nth-child(n+5){margin-top:40px}@media only screen and (max-width:991px){.four-columns>div:nth-child(n+5){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.four-columns>div:nth-child(n+5){margin-top:10px}}.three-columns{display:-ms-grid;display:grid;-ms-grid-rows:(auto)[10];grid-template-rows:repeat(10,auto);-ms-grid-columns:1fr 40px 1fr 40px 1fr;grid-template-columns:repeat(3,1fr);grid-column-gap:40px;margin-top:20px}.three-columns>:first-child{-ms-grid-row:1;-ms-grid-column:1}.three-columns>:nth-child(2){-ms-grid-row:1;-ms-grid-column:3}.three-columns>:nth-child(3){-ms-grid-row:1;-ms-grid-column:5}.three-columns>:nth-child(4){-ms-grid-row:2;-ms-grid-column:1}.three-columns>:nth-child(5){-ms-grid-row:2;-ms-grid-column:3}.three-columns>:nth-child(6){-ms-grid-row:2;-ms-grid-column:5}.three-columns>:nth-child(7){-ms-grid-row:3;-ms-grid-column:1}.three-columns>:nth-child(8){-ms-grid-row:3;-ms-grid-column:3}.three-columns>:nth-child(9){-ms-grid-row:3;-ms-grid-column:5}.three-columns>:nth-child(10){-ms-grid-row:4;-ms-grid-column:1}.three-columns>:nth-child(11){-ms-grid-row:4;-ms-grid-column:3}.three-columns>:nth-child(12){-ms-grid-row:4;-ms-grid-column:5}.three-columns>:nth-child(13){-ms-grid-row:5;-ms-grid-column:1}.three-columns>:nth-child(14){-ms-grid-row:5;-ms-grid-column:3}.three-columns>:nth-child(15){-ms-grid-row:5;-ms-grid-column:5}.three-columns>:nth-child(16){-ms-grid-row:6;-ms-grid-column:1}.three-columns>:nth-child(17){-ms-grid-row:6;-ms-grid-column:3}.three-columns>:nth-child(18){-ms-grid-row:6;-ms-grid-column:5}.three-columns>:nth-child(19){-ms-grid-row:7;-ms-grid-column:1}.three-columns>:nth-child(20){-ms-grid-row:7;-ms-grid-column:3}.three-columns>:nth-child(21){-ms-grid-row:7;-ms-grid-column:5}.three-columns>:nth-child(22){-ms-grid-row:8;-ms-grid-column:1}.three-columns>:nth-child(23){-ms-grid-row:8;-ms-grid-column:3}.three-columns>:nth-child(24){-ms-grid-row:8;-ms-grid-column:5}.three-columns>:nth-child(25){-ms-grid-row:9;-ms-grid-column:1}.three-columns>:nth-child(26){-ms-grid-row:9;-ms-grid-column:3}.three-columns>:nth-child(27){-ms-grid-row:9;-ms-grid-column:5}.three-columns>:nth-child(28){-ms-grid-row:10;-ms-grid-column:1}.three-columns>:nth-child(29){-ms-grid-row:10;-ms-grid-column:3}.three-columns>:nth-child(30){-ms-grid-row:10;-ms-grid-column:5}@media only screen and (max-width:991px){.three-columns{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,1fr)}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.three-columns{-ms-grid-columns:1fr;grid-template-columns:1fr}}@media only screen and (max-width:991px){.three-columns{grid-column-gap:20px;margin-top:10px}}.three-columns>div:nth-child(n+2){margin-top:0}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.three-columns>div:nth-child(n+2){margin-top:10px}}.three-columns>div:nth-child(n+3){margin-top:0}@media only screen and (max-width:991px){.three-columns>div:nth-child(n+3){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.three-columns>div:nth-child(n+3){margin-top:10px}}.three-columns>div:nth-child(n+5){margin-top:40px}@media only screen and (max-width:991px){.three-columns>div:nth-child(n+5){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.three-columns>div:nth-child(n+5){margin-top:10px}}.two-columns{display:-ms-grid;display:grid;-ms-grid-rows:(auto)[10];grid-template-rows:repeat(10,auto);-ms-grid-columns:1fr 40px 1fr;grid-template-columns:repeat(2,1fr);grid-column-gap:40px;margin-top:20px}.two-columns>:first-child{-ms-grid-row:1;-ms-grid-column:1}.two-columns>:nth-child(2){-ms-grid-row:1;-ms-grid-column:3}.two-columns>:nth-child(3){-ms-grid-row:2;-ms-grid-column:1}.two-columns>:nth-child(4){-ms-grid-row:2;-ms-grid-column:3}.two-columns>:nth-child(5){-ms-grid-row:3;-ms-grid-column:1}.two-columns>:nth-child(6){-ms-grid-row:3;-ms-grid-column:3}.two-columns>:nth-child(7){-ms-grid-row:4;-ms-grid-column:1}.two-columns>:nth-child(8){-ms-grid-row:4;-ms-grid-column:3}.two-columns>:nth-child(9){-ms-grid-row:5;-ms-grid-column:1}.two-columns>:nth-child(10){-ms-grid-row:5;-ms-grid-column:3}.two-columns>:nth-child(11){-ms-grid-row:6;-ms-grid-column:1}.two-columns>:nth-child(12){-ms-grid-row:6;-ms-grid-column:3}.two-columns>:nth-child(13){-ms-grid-row:7;-ms-grid-column:1}.two-columns>:nth-child(14){-ms-grid-row:7;-ms-grid-column:3}.two-columns>:nth-child(15){-ms-grid-row:8;-ms-grid-column:1}.two-columns>:nth-child(16){-ms-grid-row:8;-ms-grid-column:3}.two-columns>:nth-child(17){-ms-grid-row:9;-ms-grid-column:1}.two-columns>:nth-child(18){-ms-grid-row:9;-ms-grid-column:3}.two-columns>:nth-child(19){-ms-grid-row:10;-ms-grid-column:1}.two-columns>:nth-child(20){-ms-grid-row:10;-ms-grid-column:3}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.two-columns{-ms-grid-columns:1fr;grid-template-columns:1fr}}@media only screen and (max-width:991px){.two-columns{grid-column-gap:20px;margin-top:10px}}.two-columns>div:nth-child(n+2){margin-top:0}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.two-columns>div:nth-child(n+2){margin-top:10px}}.two-columns>div:nth-child(n+3){margin-top:0}@media only screen and (max-width:991px){.two-columns>div:nth-child(n+3){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.two-columns>div:nth-child(n+3){margin-top:10px}}.two-columns>div:nth-child(n+5){margin-top:40px}@media only screen and (max-width:991px){.two-columns>div:nth-child(n+5){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.two-columns>div:nth-child(n+5){margin-top:10px}}.one-columns{display:-ms-grid;display:grid;-ms-grid-rows:(auto)[10];grid-template-rows:repeat(10,auto);-ms-grid-columns:1fr;grid-template-columns:repeat(1,1fr);grid-column-gap:40px;margin-top:20px}.one-columns>:first-child{-ms-grid-row:1;-ms-grid-column:1}.one-columns>:nth-child(2){-ms-grid-row:2;-ms-grid-column:1}.one-columns>:nth-child(3){-ms-grid-row:3;-ms-grid-column:1}.one-columns>:nth-child(4){-ms-grid-row:4;-ms-grid-column:1}.one-columns>:nth-child(5){-ms-grid-row:5;-ms-grid-column:1}.one-columns>:nth-child(6){-ms-grid-row:6;-ms-grid-column:1}.one-columns>:nth-child(7){-ms-grid-row:7;-ms-grid-column:1}.one-columns>:nth-child(8){-ms-grid-row:8;-ms-grid-column:1}.one-columns>:nth-child(9){-ms-grid-row:9;-ms-grid-column:1}.one-columns>:nth-child(10){-ms-grid-row:10;-ms-grid-column:1}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.one-columns{-ms-grid-columns:1fr;grid-template-columns:1fr}}@media only screen and (max-width:991px){.one-columns{grid-column-gap:20px;margin-top:10px}}.one-columns>div:nth-child(n+2){margin-top:0}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.one-columns>div:nth-child(n+2){margin-top:10px}}.one-columns>div:nth-child(n+3){margin-top:0}@media only screen and (max-width:991px){.one-columns>div:nth-child(n+3){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.one-columns>div:nth-child(n+3){margin-top:10px}}.one-columns>div:nth-child(n+5){margin-top:40px}@media only screen and (max-width:991px){.one-columns>div:nth-child(n+5){margin-top:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.one-columns>div:nth-child(n+5){margin-top:10px}}.listing-header{display:flex;align-items:center;justify-content:space-between}.listing-header .title{margin:0;font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-weight:400;font-size:24px}@media only screen and (max-width:991px){.listing-header .title{font-size:20px}}.listing-header .view-all{font-size:20px;text-decoration:underline}@media only screen and (max-width:991px){.listing-header .view-all{font-size:18px}}.listing-header .view-all:after{content:"→"}.listing-header button.view-all{color:#0060af;border:none;background-color:initial}.listing-header button.view-all:hover{color:#0070aa}.empty-listing{padding:30px;text-align:center}.teaser{position:relative;transform:scale(1);transition:All .1s;border-top:5px solid #92278f}.teaser:hover{transform:scale(1.01);box-shadow:0 4px 6px rgba(0,0,0,.25)}.teaser>a{display:flex;flex-direction:column;cursor:pointer;height:100%}.teaser>a:hover{text-decoration:none}.teaser>a .preview{background-repeat:no-repeat;background-size:contain;padding-bottom:56.25%;height:0;width:100%}.teaser>a .info{flex-grow:1;display:flex;flex-direction:column;border-right:1px solid #efefef;border-bottom:1px solid #efefef;border-left:1px solid #efefef}.teaser>a .title{flex-grow:1;color:#0060af;font-weight:700;font-size:16px}@media only screen and (max-width:991px){.teaser>a .title{font-size:14px}}.teaser .add-to-favorite{position:absolute;right:0;bottom:0;padding:13px 15px;width:55px;height:50px}.one-columns .teaser .date,.one-columns .teaser .instructor,.one-columns .teaser .time{width:33%}@media only screen and (max-width:991px){.one-columns .teaser .date,.one-columns .teaser .instructor,.one-columns .teaser .time{width:100%}}.two-columns .teaser .date,.two-columns .teaser .time{width:50%}@media only screen and (max-width:991px){.two-columns .teaser .date,.two-columns .teaser .time{width:100%}}.video-level{border-radius:5px;width:30px;height:30px;margin:-5px 10px -5px 0;float:left;display:flex;align-items:center;justify-content:center;background-color:#636466;color:#fff;font-weight:700}.gc-button{display:block;margin-top:20px;margin-right:auto;margin-left:auto;outline:none!important;border:none;border-radius:5px;background-color:#0060af;padding:10px 20px;text-transform:uppercase;color:#fff}.gc-button:focus,.gc-button:hover,.gc-button:visited{color:#fff}.gc-button:disabled{opacity:.6}.indigo-button{border:2px solid #fff;border-radius:6px;background-color:#92278f;cursor:pointer;padding-top:11px;padding-bottom:11px;text-align:center;text-transform:uppercase;margin:24px}@media only screen and (max-width:991px){.indigo-button{margin:12px}}.indigo-button:hover{background-color:#6a1c68}.timer{border:1px solid #231f20;border-radius:12px;padding:5px 10px;font-size:10px}.timer.live{background-color:#92278f;color:#fff}.canceled,.private{color:#fff;background-color:#231f20;text-transform:uppercase;font-family:Verdana,sans-serif;font-weight:700;display:inline-block;margin-top:10px}.canceled{display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;border-color:#c00;background-color:#c00}.adjust-button{display:flex;align-items:center;outline:none!important;border:1px solid #f2f2f2;border-radius:5px;background-color:#fff;padding:15px;text-transform:capitalize;font-family:Verdana,sans-serif;font-size:14px}@media only screen and (max-width:991px){.adjust-button{font-size:0}}.adjust-button:before{background-image:url(img/sliders-h-solid.216b6a7f.svg);width:18px;height:18px;content:" ";margin-right:15px}@media only screen and (max-width:991px){.adjust-button:before{margin-right:0}}.accordion-tab .accordion-tab__header{display:flex;justify-content:space-between;border-top:1px solid #636466;cursor:pointer;padding:18px 24px;color:#636466;font-weight:700}.accordion-tab .accordion-tab__header:hover{color:#4a4b4c}.accordion-tab .accordion-tab__content{padding:0 24px 18px}.pagination .page-item .page-link{border:none}.pagination .page-item.active .page-link{margin-left:10px;margin-right:10px}.svg-container{display:-ms-inline-grid;display:inline-grid}.top-menu{position:fixed;background-color:#000;width:100%;z-index:1030}@media only screen and (max-width:991px){.top-menu{z-index:39}}.top-menu>div{display:flex;align-items:center;justify-content:flex-end;padding-top:30px;padding-bottom:15px}@media only screen and (max-width:991px){.top-menu>div{padding-top:10px;padding-bottom:10px}}.top-menu>div>div:not(:first-child){display:block}@media only screen and (max-width:991px){.top-menu>div>div:not(:first-child){display:none}}.top-menu>div a{display:inline-block;text-decoration:none}.top-menu>div div:first-child{flex-grow:1}.top-menu>div div:first-child a{font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;padding-bottom:12px;font-size:20px}@media only screen and (max-width:991px){.top-menu>div div:first-child a{padding-bottom:0;font-size:18px}}.top-menu>div div:not(:first-child) a:hover{border-bottom:2px solid;padding-bottom:10px}@media only screen and (max-width:991px){.top-menu>div div:not(:first-child) a:hover{border-bottom:1px solid;padding-bottom:12px}}.top-menu>div div:not(:first-child):not(:last-child) a{padding-right:10px;padding-left:10px}.top-menu>div div:not(:first-child) a{padding-bottom:12px;font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-size:16px}.top-menu>div div:not(:first-child) a.router-link-active{border-bottom:2px solid;padding-bottom:10px}@media only screen and (max-width:991px){.top-menu>div div:not(:first-child) a.router-link-active{border-bottom:1px solid;padding-bottom:12px}}@media only screen and (max-width:991px){.top-menu>div div:not(:first-child) a{font-size:12px}}.top-menu>div div:not(:first-child) a svg{margin-right:10px;vertical-align:text-top}.top-menu>div div:last-child{padding-left:10px}.top-menu>div button{justify-content:flex-end;outline:none;border:none;background-color:transparent;padding:0;text-align:right;display:none;padding-right:10px}@media only screen and (max-width:991px){.top-menu>div button{display:flex}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.top-menu>div button{padding-right:19px}}.top-menu>div button svg{width:27px}.top-menu>div button.opened svg{width:14px}.top-menu.menuOpen{position:fixed;top:0!important;z-index:2000;background-color:#f2f2f2;width:100vw;height:100vh;top:0;padding:initial}@media only screen and (max-width:991px){.top-menu.menuOpen{padding:11px 34px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.top-menu.menuOpen{padding:11px 10px}}.top-menu.menuOpen>div{display:-ms-grid;display:grid;max-width:none;-ms-grid-columns:1fr initial 1fr;grid-template-columns:1fr 1fr;gap:initial}@media only screen and (max-width:991px){.top-menu.menuOpen>div{gap:10px 20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.top-menu.menuOpen>div{gap:10px}}.top-menu.menuOpen>div div{display:block}.top-menu.menuOpen>div button,.top-menu.menuOpen>div div:first-child{margin-bottom:20px;color:#636466}.top-menu.menuOpen>div div:not(:first-child){padding:0;text-align:center;color:#636466}.top-menu.menuOpen>div div:not(:first-child) a{border:1px solid #636466;border-radius:5px;padding:15px 10px;width:100%;font-family:Verdana,sans-serif}@media(max-width:600px){.with-date-filter{flex-direction:column}.with-date-filter .videos__date-filter .date{min-width:auto}}.videos__date-filter{margin:0;line-height:24px;font-size:24px}@media (max-width:600px){.videos__date-filter{display:flex;-ms-grid-row-align:center;align-self:center;justify-content:space-between;padding-top:20px;width:100%}}.videos__date-filter>button{border:none;background-color:#fff;color:#636466}.videos__date-filter>button:focus{outline:0}.videos__date-filter>button.left{padding-left:0}.videos__date-filter>button.right{padding-right:0}.videos__date-filter .date{display:inline-block;padding:0 20px;min-width:310px;text-align:center}.video-teaser{background-color:#231f20}.video-teaser>a .info{border:none}.video-teaser>a .title{color:#fff;padding:10px}@media only screen and (max-width:991px){.video-teaser>a .title{padding:5px}}.video-teaser>a .instructor,.video-teaser>a .level{display:flex;align-items:center;color:#fff;padding:0 10px 10px;font-size:12px}@media only screen and (max-width:991px){.video-teaser>a .instructor,.video-teaser>a .level{padding:0 5px 5px;font-size:10px}}.video-teaser>a .instructor .svg-container,.video-teaser>a .level .svg-container{margin-right:12px;font-size:20px;fill:#fff}.video-teaser>a .timer{align-self:flex-start;border:1px solid #636466;border-radius:12px;background-color:#fff;padding:5px 10px;text-transform:capitalize;color:#231f20;font-size:10px;margin:12px 10px}@media only screen and (max-width:991px){.video-teaser>a .timer{margin:12px 5px}}.video-teaser>a .preview{position:relative;align-self:flex-start}.video-teaser>a .preview .play-button{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-width:0;border-radius:24px;background-color:#92278f;padding:0;width:48px;height:48px}.video-teaser>a .preview .play-button:before{display:inline-block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:11px solid #fff;width:0;height:0;content:" "}.video-teaser>a:focus .preview .play-button,.video-teaser>a:hover .preview .play-button{background-color:#7e227b}.event-teaser>a .info{padding:10px}@media only screen and (max-width:991px){.event-teaser>a .info{padding:5px 5px 10px}}.event-teaser>a .info .date,.event-teaser>a .info .instructor,.event-teaser>a .info .time,.event-teaser>a .info .title{padding-bottom:10px}@media only screen and (max-width:991px){.event-teaser>a .info .date,.event-teaser>a .info .instructor,.event-teaser>a .info .time,.event-teaser>a .info .title{padding-bottom:5px}}.event-teaser>a .info .date,.event-teaser>a .info .instructor,.event-teaser>a .info .level,.event-teaser>a .info .time{display:flex;align-items:center;color:#231f20;font-size:12px}@media only screen and (max-width:991px){.event-teaser>a .info .date,.event-teaser>a .info .instructor,.event-teaser>a .info .level,.event-teaser>a .info .time{font-size:10px}}.event-teaser>a .info .date .svg-container,.event-teaser>a .info .instructor .svg-container,.event-teaser>a .info .level .svg-container,.event-teaser>a .info .time .svg-container{margin-right:12px;font-size:20px;fill:#636466}.event-teaser>a .info .instructor{color:#000}.event-teaser>a .info .timer{align-self:flex-start;margin-top:11px;border:1px solid #636466;border-radius:12px;padding:5px 10px;color:#000;font-size:10px}.event-teaser>a .info .timer.live{background-color:#92278f;color:#fff}.category-teaser,.duration-teaser,.instructor-teaser{background-clip:border-box;min-width:0}.category-teaser>a .preview,.duration-teaser>a .preview,.instructor-teaser>a .preview{background-size:cover;padding-bottom:50%}.category-teaser>a .info,.duration-teaser>a .info,.instructor-teaser>a .info{flex-grow:0;border:none;padding:10px 10px 58px}@media only screen and (max-width:991px){.category-teaser>a .info,.duration-teaser>a .info,.instructor-teaser>a .info{padding:10px 10px 53px}}.category-teaser>a .info .sub-categories,.duration-teaser>a .info .sub-categories,.instructor-teaser>a .info .sub-categories{margin-top:10px;color:#231f20}.category-teaser>a .info .sub-categories__items,.duration-teaser>a .info .sub-categories__items,.instructor-teaser>a .info .sub-categories__items{padding:0;margin:0;list-style:none}.category-teaser>a .info .sub-categories__item,.duration-teaser>a .info .sub-categories__item,.instructor-teaser>a .info .sub-categories__item{display:inline}.category-teaser>a .info .sub-categories__item:not(:last-of-type):after,.duration-teaser>a .info .sub-categories__item:not(:last-of-type):after,.instructor-teaser>a .info .sub-categories__item:not(:last-of-type):after{content:", "}.blog-teaser{min-height:70px}.blog-teaser .info{padding:10px 10px 48px}@media only screen and (max-width:991px){.blog-teaser .info{padding:5px 5px 48px}}.add-to-calendar button{margin-right:10px;border:2px solid #f2f2f2;border-radius:50%;background-color:#fff;padding:14px;width:50px;height:50px;line-height:1px;font-size:18px}.add-to-calendar button:focus{outline:none}.add-to-calendar .dropdown-menu .btn-link{display:block;padding:10px 20px}.add-to-favorite{display:inline-block;background-image:url(img/favorites-outlined.4df06a61.svg);background-repeat:no-repeat;background-position:50%;background-size:20px 20px;cursor:pointer;width:20px;height:20px}.add-to-favorite .spinner{width:25px;height:25px}.add-to-favorite.white{background-image:url(img/favorites-solid-white.78c46cf3.svg)}.add-to-favorite.active{background-image:url(img/favorites-solid-red.249b5138.svg)}.add-to-favorite.loading{background-image:none}.add-to-favorite.rounded-border{position:static;margin-right:10px;border:2px solid #231f20;border-radius:50%;background-size:20px 21px;padding:11px 10px;width:50px;height:50px}.title-wrapper .add-to-favorite{position:static;margin-left:15px}.title-wrapper .add-to-favorite .spinner{margin-top:-10px}@media(hover),(min--moz-device-pixel-ratio:0),(min-width:0 \0){.add-to-favorite:not(.loading):hover{background-image:url(img/favorites-solid-red.249b5138.svg)}}.modal-mask{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:table;transition:opacity .3s ease}.modal-wrapper{display:table-cell;vertical-align:middle}.modal-container{width:400px;max-height:80vh;display:flex;flex-direction:column;margin:0 auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 8px rgba(0,0,0,.33);transition:all .3s ease;font-family:Helvetica,Arial,sans-serif}.modal-container .modal-body{margin:20px 0;overflow-y:scroll}.modal-container .modal-default-button{float:right}.modal-enter,.modal-leave-active{opacity:0}.modal-enter .modal-container,.modal-leave-active .modal-container{transform:scale(1.1)}.adjust-modal .modal-container{width:-webkit-max-content;width:-moz-max-content;width:max-content}.adjust-modal .modal-container button{outline:none!important}.adjust-modal .modal-container .modal-header{display:flex;align-items:center;justify-content:space-between;height:48px;padding:12px 10px}@media only screen and (max-width:991px){.adjust-modal .modal-container .modal-header{padding:14px 10px 13px}}.adjust-modal .modal-container .modal-header:after,.adjust-modal .modal-container .modal-header:before{display:none}.adjust-modal .modal-container .modal-header h3{margin:0;text-transform:uppercase;color:#636466;font-family:Cachet Medium,Cachet W01 Medium,Cachet,Verdana,sans-serif;font-size:16px}@media only screen and (max-width:991px){.adjust-modal .modal-container .modal-header h3{font-size:14px}}.adjust-modal .modal-container .modal-header button{border:none;background-color:initial;font-size:24px}.adjust-modal .modal-container .modal-body{display:flex;margin:0;color:#000;flex-direction:row;padding:20px}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.adjust-modal .modal-container .modal-body{flex-direction:column}}@media only screen and (max-width:991px){.adjust-modal .modal-container .modal-body{padding:10px}}.adjust-modal .modal-container .modal-body>div{min-width:310px;font-family:Verdana,sans-serif;font-size:14px}@media only screen and (max-width:991px){.adjust-modal .modal-container .modal-body>div{font-size:12px}}.adjust-modal .modal-container .modal-body>div>h4{margin-bottom:14px;color:#000;font-family:Verdana,sans-serif;font-weight:700;font-size:14px}@media only screen and (max-width:991px){.adjust-modal .modal-container .modal-body>div>h4{font-size:12px}}.adjust-modal .modal-container .modal-body>div .form-check{display:flex;align-items:center;padding-left:8px;padding-bottom:21px}@media only screen and (max-width:991px){.adjust-modal .modal-container .modal-body>div .form-check{padding-bottom:14px}}.adjust-modal .modal-container .modal-body>div .form-check label{position:relative;margin-bottom:0;cursor:pointer;padding-left:28px;font-family:Verdana,sans-serif;font-weight:400}.adjust-modal .modal-container .modal-body>div .form-check label input{position:absolute;opacity:0;cursor:pointer;width:0;height:0}.adjust-modal .modal-container .modal-body>div .form-check label .checkmark{position:absolute;top:0;left:0;background-image:url(img/rb-off.60079faf.svg);background-size:20px;width:20px;height:20px}.adjust-modal .modal-container .modal-body>div .form-check label input:checked~.checkmark{background-image:url(img/rb-on.99cd90ac.svg)}.adjust-modal .modal-container .modal-body>div .form-check label input[disabled=disabled]~.caption{color:#9f9f9f}.adjust-modal .modal-container .modal-body>div .form-check label input[disabled=disabled]~.checkmark{background-image:url(img/rb-off-gray.f0264ba9.svg)}.adjust-modal .modal-container .modal-footer{display:flex;justify-content:space-between;background-color:#f2f2f2;padding:10px}.adjust-modal .modal-container .modal-footer:after,.adjust-modal .modal-container .modal-footer:before{display:none}.adjust-modal .modal-container .modal-footer button{margin:0;border-radius:5px;padding:10px 20px;text-transform:uppercase;line-height:26px;font-family:Cachet Medium,Cachet W01 Medium,Cachet,Verdana,sans-serif;font-size:20px}.adjust-modal .modal-container .modal-footer .btn.btn-outline-primary{border-width:2px;border-style:solid;border-color:#0060af;background-color:#fff;color:#0060af}.adjust-modal .modal-container .modal-footer .btn.btn-outline-primary:hover{background-color:#0060af;color:#fff}.adjust-modal .modal-container .modal-footer .btn-primary{border-width:2px;background-color:#0060af;color:#fff}.adjust-modal .modal-container .modal-footer .btn-primary:hover{border-width:2px;border-style:solid;border-color:#0060af;background-color:#fff;color:#0060af}.paragraph-headline,.spinner-center{display:flex;justify-content:center}.paragraph-headline{background-color:#000;background-repeat:no-repeat;background-position:50%;background-size:cover;min-height:420px;padding:90px 10px}@media only screen and (max-width:991px){.paragraph-headline{min-height:300px;padding:77px 10px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.paragraph-headline{padding:65px 10px}}.paragraph-headline .paragraph-headline__content{border-radius:10px;background-color:rgba(0,0,0,.8);text-align:center;min-width:500px;max-width:720px;padding:40px}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content{min-width:300px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.paragraph-headline .paragraph-headline__content{min-width:100%}}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content{max-width:460px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.paragraph-headline .paragraph-headline__content{max-width:100%}}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content{padding:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.paragraph-headline .paragraph-headline__content{padding:20px 10px}}.paragraph-headline .paragraph-headline__content>:not(:last-child){padding-bottom:20px}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content>:not(:last-child){padding-bottom:10px}}.paragraph-headline .paragraph-headline__content .paragraph-headline__title{color:#fff;font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-weight:400;font-size:42px}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content .paragraph-headline__title{font-size:32px}}.paragraph-headline .paragraph-headline__content .paragraph-headline__description{color:#fff;font-size:18px}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content .paragraph-headline__description{font-size:16px}}.paragraph-headline .paragraph-headline__content .paragraph-headline__description p:not(:last-child){opacity:.8}.paragraph-headline .paragraph-headline__content .paragraph-headline__description a.btn{border:2px solid #fff;border-radius:5px;background-color:transparent;text-transform:uppercase}.paragraph-headline .paragraph-headline__content .paragraph-headline__description a.btn:hover{border-color:#ccc;background-color:#fff;text-decoration:none;color:#000}.paragraph-headline .paragraph-headline__content .paragraph-headline__link{display:inline-block;border:2px solid #fff;border-radius:5px;text-transform:uppercase;color:#fff;padding:12px 40px}@media only screen and (max-width:991px){.paragraph-headline .paragraph-headline__content .paragraph-headline__link{padding:10px 30px}}.paragraph-headline .paragraph-headline__content .paragraph-headline__link:hover{border-color:#ccc;background-color:#fff;text-decoration:none;color:#000}.personal-training-teaser>a .info .timers-wrapper{display:flex}.personal-training-teaser>a .info .canceled{margin-left:15px;border-color:#c00}.personal-training-teaser>a .info .canceled,.personal-training-teaser>a .info .private{color:#fff}.personal-training-page .personal-training-meeting{display:flex;position:fixed;top:0;left:0;flex-direction:column;z-index:2000;padding-top:0;width:100vw;max-width:none;height:100%}.personal-training-page .join-meeting{display:flex;align-items:center;justify-content:center;background-image:url(img/background.f64aa3f6.png);background-size:auto;height:400px;background-position:50%;background-repeat:no-repeat}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.personal-training-page .join-meeting{background-image:url(img/background-m.1759a037.png)}}@media only screen and (max-width:991px){.personal-training-page .join-meeting{background-size:cover}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.personal-training-page .join-meeting{height:360px}}.personal-training-page .join-meeting.shadow{box-shadow:inset 0 0 0 2000px rgba(0,0,0,.6)!important}.personal-training-page .join-meeting.shadow .message{border-radius:6px;background-color:#000;padding:24px;color:#fff}.personal-training-page .meeting-player{position:relative;background-color:#000;height:100%}.personal-training-page .meeting-player .video-wrapper{overflow:hidden;background-repeat:no-repeat;background-position:50%;background-size:cover}.personal-training-page .meeting-player video{transform:scaleX(-1);display:block;margin:-1px;height:calc(100% + 2px);width:calc(100% + 2px)}.personal-training-page .meeting-player .partner{background-image:url(img/background.f64aa3f6.png)}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.personal-training-page .meeting-player .partner{background-image:url(img/background-m.1759a037.png)}}.personal-training-page .meeting-player .local{background-image:url(img/join-options-video.05afcf0a.png)}.personal-training-page .meeting-player .connected{background:#000}.personal-training-page .meeting-player.view-inset .partner{position:absolute;width:100%;height:100%}.personal-training-page .meeting-player.view-inset .partner.connected{left:50%;transform:translateX(-50%)}.personal-training-page .meeting-player.view-inset .local{position:absolute;right:0;bottom:0;width:20%;min-width:150px}.personal-training-page .meeting-player.view-horizontal .video-wrapper{width:100%}.personal-training-page .meeting-player.view-horizontal .local,.personal-training-page .meeting-player.view-horizontal .partner{position:absolute;left:50%;transform:translateX(-50%);height:50%}.personal-training-page .meeting-player.view-horizontal .local{top:50%}.personal-training-page .meeting-player.view-horizontal video{width:100%}.personal-training-page .meeting-player.view-vertical .local,.personal-training-page .meeting-player.view-vertical .partner{position:absolute;top:50%;transform:translateY(-50%);width:50%}.personal-training-page .meeting-player.view-vertical .local{left:50%}.personal-training-page .audio-state-indicator,.personal-training-page .video-state-indicator{position:absolute;bottom:5px;height:30px;width:30px;z-index:1}.personal-training-page .audio-state-indicator .svg-container,.personal-training-page .video-state-indicator .svg-container{border-radius:50%;background-color:#c00;padding:6px;font-size:18px}.personal-training-page .audio-state-indicator{left:5px}.personal-training-page .audio-state-indicator .indication{border-radius:50%;background-color:#63ffda;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.personal-training-page .audio-state-indicator .indication:before{content:"";display:block;padding-top:100%}.personal-training-page .video-state-indicator{left:40px}.personal-training-page .control-panel{display:flex;padding:14px 24px}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.personal-training-page .control-panel{padding:0}}.personal-training-page .control-panel .full-screen{display:block}@media only screen and (max-width:991px){.personal-training-page .control-panel .full-screen{display:none}}.personal-training-page .control-panel .chat{margin-left:auto}.personal-training-page .control-panel>div{display:flex;flex-direction:column;align-items:center;position:relative;cursor:pointer}.personal-training-page .control-panel>div:not(:last-child){margin-right:12px}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.personal-training-page .control-panel>div:not(:last-child){margin-right:0}}.personal-training-page .control-panel>div .svg-container{padding:9px;font-size:26px;border:2px solid #fff;border-radius:50%}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.personal-training-page .control-panel>div .svg-container{border:none;border-radius:0}}.personal-training-page .control-panel>div span:nth-child(2){padding-top:6px;text-align:center;font-size:10px;display:block}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.personal-training-page .control-panel>div span:nth-child(2){display:none}}.personal-training-page .control-panel>div.enabled .svg-container{background-color:#060}.personal-training-page .control-panel>div.view .svg-container{padding:12px;font-size:20px}.personal-training-page .control-panel .chat.unread .svg-container{border:2px solid #c00}.personal-training-page .control-panel .chat.unread .unread-count{position:absolute;top:-5px;width:24px;height:24px;text-align:center;background-color:red;border-radius:12px;font-weight:700;font-size:12px;line-height:20px;right:-5px}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.personal-training-page .control-panel .chat.unread .unread-count{right:35px}}.personal-training-page .modal-join-options .modal-container{background-color:#000;color:#fff;width:72vw;max-height:80vh}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.personal-training-page .modal-join-options .modal-container{width:100vw}}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container{max-height:100vh}}.personal-training-page .modal-join-options .modal-container .modal-footer,.personal-training-page .modal-join-options .modal-container .modal-header{display:none}.personal-training-page .modal-join-options .modal-container .modal-body{display:-ms-grid;display:grid;margin:0;padding:0;overflow-y:initial;-ms-grid-columns:1fr .5fr;grid-template-columns:1fr .5fr}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container .modal-body{-ms-grid-columns:1fr;grid-template-columns:1fr}}.personal-training-page .modal-join-options .modal-container .modal-body .controls,.personal-training-page .modal-join-options .modal-container .modal-body .header,.personal-training-page .modal-join-options .modal-container .modal-body .join{-ms-grid-column:2;grid-column:2}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container .modal-body .controls,.personal-training-page .modal-join-options .modal-container .modal-body .header,.personal-training-page .modal-join-options .modal-container .modal-body .join{-ms-grid-column:1;grid-column:1}}.personal-training-page .modal-join-options .modal-container .modal-body .video{background-image:url(img/join-options-video.05afcf0a.png);background-repeat:no-repeat;background-position:50%;background-size:cover;-ms-grid-column:1;grid-column:1;position:relative;margin:24px;min-height:307px;-ms-grid-row:1;-ms-grid-row-span:3;grid-row:1/span 3}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container .modal-body .video{margin:12px;min-height:100px;-ms-grid-row:2;grid-row:2}}.personal-training-page .modal-join-options .modal-container .modal-body .video video{transform:scaleX(-1);width:100%;height:100%}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container .modal-body .video video{height:auto}}.personal-training-page .modal-join-options .modal-container .modal-body .header{display:flex;align-items:flex-start;margin-top:11px;-ms-grid-row:1;grid-row:1}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container .modal-body .header{margin-left:12px}}.personal-training-page .modal-join-options .modal-container .modal-body .header button{margin-left:auto;outline:none;border:none;background-color:transparent;padding:0 17px;color:#fff}.personal-training-page .modal-join-options .modal-container .modal-body .controls{display:flex;align-items:center;justify-content:space-around}.personal-training-page .modal-join-options .modal-container .modal-body .controls .cam,.personal-training-page .modal-join-options .modal-container .modal-body .controls .mic,.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings{display:flex;flex-direction:column;align-items:center;cursor:pointer}.personal-training-page .modal-join-options .modal-container .modal-body .controls .cam .svg-container,.personal-training-page .modal-join-options .modal-container .modal-body .controls .mic .svg-container,.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings .svg-container{border-radius:50%;background-color:#c00;padding:13px;font-size:26px}.personal-training-page .modal-join-options .modal-container .modal-body .controls .cam .switch-icon,.personal-training-page .modal-join-options .modal-container .modal-body .controls .mic .switch-icon,.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings .switch-icon{margin-left:12px;font-size:52px}.personal-training-page .modal-join-options .modal-container .modal-body .controls .cam>div,.personal-training-page .modal-join-options .modal-container .modal-body .controls .mic>div,.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings>div{display:flex}.personal-training-page .modal-join-options .modal-container .modal-body .controls .cam>span,.personal-training-page .modal-join-options .modal-container .modal-body .controls .mic>span,.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings>span{padding-top:6px;font-size:10px}.personal-training-page .modal-join-options .modal-container .modal-body .controls .cam.enabled .svg-container,.personal-training-page .modal-join-options .modal-container .modal-body .controls .mic.enabled .svg-container,.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings.enabled .svg-container{background-color:#060}.personal-training-page .modal-join-options .modal-container .modal-body .controls .settings .svg-container{background-color:#000}.personal-training-page .modal-join-options .modal-container .modal-body .join .error-message{margin-top:30px}@media only screen and (max-width:991px){.personal-training-page .modal-join-options .modal-container .modal-body .join .error-message{margin-top:15px}}.personal-training-page .modal-join-options .modal-container .modal-body .join .indigo-button.disabled{border-color:#636466;background-color:#000;color:#636466!important}@media(max-width:823px)and (max-height:500px)and (orientation:landscape){.personal-training-page .modal-join-options .modal-container{width:100vw;height:100vh;max-height:none}.personal-training-page .modal-join-options .modal-container .modal-body{-ms-grid-columns:1fr 200px;grid-template-columns:1fr 200px}.personal-training-page .modal-join-options .modal-container .modal-body .controls,.personal-training-page .modal-join-options .modal-container .modal-body .header,.personal-training-page .modal-join-options .modal-container .modal-body .join{-ms-grid-column:2;grid-column:2}.personal-training-page .modal-join-options .modal-container .modal-body .video{-ms-grid-row-align:center;align-self:center;-ms-grid-column:1;grid-column:1;-ms-grid-row:1;-ms-grid-row-span:3;grid-row:1/span 3}}@media(max-width:500px)and (max-height:823px)and (orientation:portrait){.personal-training-page .modal-join-options .modal-container .modal-body .video video{height:50vh}}@media only screen and (min-device-width:768px)and (max-device-width:1024px)and (orientation:portrait)and (-webkit-min-device-pixel-ratio:1),only screen and (min-device-width:768px)and (max-device-width:1024px)and (orientation:portrait)and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-width:834px)and (max-device-width:834px)and (orientation:portrait)and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-width:1024px)and (max-device-width:1024px)and (orientation:portrait)and (-webkit-min-device-pixel-ratio:2){.personal-training-page .modal-join-options .modal-body{-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr}.personal-training-page .modal-join-options .modal-body .header{grid-column:1/span2}.personal-training-page .modal-join-options .modal-body .controls,.personal-training-page .modal-join-options .modal-body .join{-ms-grid-column:2;grid-column:2}.personal-training-page .modal-join-options .modal-body .video{-ms-grid-row:2;-ms-grid-row-span:2;grid-row:2/span 2}.personal-training-page .modal-join-options .modal-body .video video{max-height:500px}}.personal-training-page .modal-view-options .modal-container{background-color:#000;color:#fff;width:30vw}@media only screen and (max-width:991px){.personal-training-page .modal-view-options .modal-container{width:60vw}}.personal-training-page .modal-view-options .modal-container .modal-header{display:flex;align-items:flex-start;border-bottom:#636466;padding:12px}.personal-training-page .modal-view-options .modal-container .modal-header button{margin-left:auto;outline:none;border:none;background-color:transparent;padding:0 17px;color:#fff;font-size:18px}.personal-training-page .modal-view-options .modal-container .modal-body{margin:0;padding:0;overflow-y:initial}.personal-training-page .modal-view-options .modal-container .modal-body>div{display:flex;align-items:center;border-bottom:#636466;cursor:pointer;padding:15px 12px}.personal-training-page .modal-view-options .modal-container .modal-body>div .svg-container{padding-right:15px;font-size:18px}.personal-training-page .modal-view-options .modal-container .modal-body>div.selected,.personal-training-page .modal-view-options .modal-container .modal-body>div:hover{background-color:#231f20}.personal-training-page .modal-view-options .modal-container .modal-footer{display:none}.personal-training-page .modal-leave-meeting .modal-container{width:400px}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.personal-training-page .modal-leave-meeting .modal-container{width:300px}}.personal-training-page .modal-leave-meeting .modal-container .modal-header{border-bottom:none;padding:14px 15px 14px 24px;text-transform:uppercase;color:#636466;font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-size:18px;font-weight:400}.personal-training-page .modal-leave-meeting .modal-container .modal-header .modal-default-button{border:none;background-color:initial;padding:0;line-height:24px;font-size:24px}.personal-training-page .modal-leave-meeting .modal-container .modal-body{margin:0;padding:17px 24px 24px;overflow-y:initial}.personal-training-page .modal-leave-meeting .modal-container .modal-body .button{float:left;border:2px solid #0060af;border-radius:6px;background-color:#fff;cursor:pointer;padding:9px 24px;height:auto;text-transform:uppercase;color:#0060af;font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-size:24px}.personal-training-page .modal-leave-meeting .modal-container .modal-body .button:hover{background-color:#0060af;color:#fff}.personal-training-page .modal-leave-meeting .modal-container .modal-body .button:last-child{float:right;background-color:#0060af;color:#fff}.personal-training-page .modal-leave-meeting .modal-container .modal-body .button:last-child:hover{background-color:#fff;color:#0060af}.personal-training-page .modal-leave-meeting .modal-container .modal-footer{display:none}.personal-training-page .modal-chat .modal-wrapper{display:block}.personal-training-page .modal-chat .modal-wrapper .modal-container{height:100%;max-height:100%;position:absolute;right:0;width:430px}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){.personal-training-page .modal-chat .modal-wrapper .modal-container{width:100%}}.personal-training-page .modal-chat .modal-wrapper .modal-header{align-items:center;padding:24px;color:#636466;font-weight:700}.personal-training-page .modal-chat .modal-wrapper .modal-header button{border:none;background:none;font-size:30px;height:30px;line-height:0}.personal-training-page .modal-chat .modal-wrapper .modal-body{margin:0;background-color:#f2f2f2;position:relative;flex:1 1 auto;padding:1rem}.personal-training-page .modal-chat .modal-wrapper .modal-footer{display:flex;flex-wrap:wrap;align-items:center;border-top:1px solid #9f9f9f;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px);justify-content:space-between;padding:24px}@media only screen and (max-width:991px){.personal-training-page .modal-chat .modal-wrapper .modal-footer{padding:10px}}.personal-training-page .modal-chat .modal-wrapper .modal-footer input{width:80%;padding:12px;border-radius:0;border:1px solid #636466}.personal-training-page .modal-chat .modal-wrapper .modal-footer button{width:50px;height:50px;background-color:#92278f;border:none;border-radius:6px;transition:opacity .4s}.personal-training-page .modal-chat .modal-wrapper .modal-footer button:disabled,.personal-training-page .modal-chat .modal-wrapper .modal-footer button:hover{opacity:.7}.personal-training-page .modal-chat .message{display:flex;justify-content:left;margin:0 10px 24px}.personal-training-page .modal-chat .message .user-icon{min-width:48px;height:48px;margin:0 10px 0 0;text-align:center;line-height:48px;font-weight:700;border-radius:24px;border:2px solid #636466;color:#636466;background-color:#fff}.personal-training-page .modal-chat .message .message-card .message-header{margin-bottom:12px}.personal-training-page .modal-chat .message .message-card .message-author{font-size:12px;font-weight:700}.personal-training-page .modal-chat .message .message-card .message-time{font-size:10px}.personal-training-page .modal-chat .message .message-card .message-body{font-size:14px}.personal-training-page .modal-chat .message.d-right{justify-content:space-between;flex-direction:row-reverse}.personal-training-page .modal-chat .message.d-right .user-icon{margin:0 0 0 10px;color:#fff;background-color:#636466}.personal-training-page .modal-chat .message.d-right .message-card{float:right}.personal-training-page .modal-device-manager .modal-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100vw}.personal-training-page .modal-device-manager .modal-container .modal-header{border-bottom:none;padding:14px 15px 14px 24px;text-transform:uppercase;color:#636466;font-family:Cachet Book,Cachet W01 Book,Cachet,Verdana,sans-serif;font-size:18px;font-weight:400}.personal-training-page .modal-device-manager .modal-container .modal-header .modal-default-button{margin-left:20px;border:none;background-color:initial;padding:0;line-height:24px;font-size:24px}.personal-training-page .modal-device-manager .modal-container .modal-body{margin:0;padding:0 24px 24px;overflow-y:initial}.personal-training-page .modal-device-manager .modal-container .modal-body .select{display:flex;flex-direction:column}.personal-training-page .modal-device-manager .modal-container .modal-body .select label{margin-bottom:0}.personal-training-page .modal-device-manager .modal-container .modal-body .select:not(:last-child){margin-bottom:10px}.personal-training-page .modal-device-manager .modal-container .modal-footer{display:none}.modal-body .filter input:disabled,.modal-body .filter input:disabled+label{opacity:.5}#gated-content .gated-content-video-page{padding-bottom:30px}#gated-content .gated-content-video-page .video-wrapper{background-color:#000}@media (max-width:768px){#gated-content .gated-content-video-page .video-wrapper .video{width:100%}}#gated-content .gated-content-video-page .video-wrapper .video .youtube,#gated-content .gated-content-video-page .video-wrapper .video .youtube_playlist{position:relative;padding:56.25% 0 0 0}#gated-content .gated-content-video-page .video-wrapper .video .youtube>iframe,#gated-content .gated-content-video-page .video-wrapper .video .youtube_playlist>iframe{position:absolute;top:0;left:0;border-width:0;width:100%;height:100%}#gated-content .gated-content-video-page .video-wrapper .video .vimeo_event{padding:65.91% 0 0 0;position:relative}#gated-content .gated-content-video-page .video-wrapper .video .vimeo_event iframe{position:absolute;top:0;left:0;width:100%!important;height:100%!important}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer{display:-ms-grid;display:grid;-ms-grid-columns:65% 35%;grid-template-columns:65% 35%}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer{-ms-grid-columns:1fr;grid-template-columns:1fr}}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:first-child,#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(2),#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(4){-ms-grid-column:1;grid-column:1;padding-right:40px}@media only screen and (max-width:991px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:first-child,#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(2),#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(4){padding-right:20px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:first-child,#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(2),#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(4){padding-right:0}}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__fav{-ms-grid-row:2;grid-row:2;display:flex;align-items:center}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(3){-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-row-span:3;grid-row-end:4}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(3){-ms-grid-column:1;grid-column:1;-ms-grid-row:3;grid-row-start:3;-ms-grid-row-span:initial;grid-row-end:auto;padding-bottom:20px}}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(3) .svg-container{font-size:18px;margin-right:14px}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(3) .svg-container{margin-right:10px}}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(4){-ms-grid-row:3;grid-row:3}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer>div:nth-child(4){-ms-grid-row:4;grid-row:4}}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__block{display:flex;align-items:center;padding:10px 0}@media only screen and (max-width:991px){#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__block{padding:8px 0}}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__block:first-child{padding-top:0}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__block ul{list-style:none;padding:0;margin:0}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__category .video-footer__category-list-item li{display:inline}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__category .video-footer__category-list-item li:not(:last-of-type):after{content:" > "}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__equipment{margin-bottom:0;padding-top:5px;font-size:12px;list-style-type:none}#gated-content .gated-content-video-page .video-footer-wrapper .video-footer .video-footer__equipment li:before{content:"+"}#gated-content .gated-content-video-page .video-footer-wrapper.bg-black .video-footer__block a{color:#fff}#gated-content .gated-content-video-page .video-footer-wrapper.bg-black .video-footer__block a:hover{color:#ccc}@media(min-width:768px){.one-column #gated-content .gated-content-video-page .video{padding:0}.one-column #gated-content .videos{padding-right:0;padding-left:0}}.gated-content-category-page .title-wrapper ul{padding:0;margin:0}.gated-content-category-page .title-wrapper ul>li{display:inline}.gated-content-category-page .title-wrapper ul>li:not(:last-of-type):after{content:" > "}.gated-content-blog-page .blog-page__image{position:relative;background-position:50%;background-size:cover;padding:30% 0 0 0}.gated-content-blog-page .blog-page__categories ul{list-style:none;padding:0}.gated-content-blog-page .blog-page__category li{display:inline}.gated-content-blog-page .blog-page__category li:not(:last-of-type):after{content:" > "}.gated-content-blog-page .add-to-favorite{overflow:hidden;background-size:20px 20px}.gated-content-schedule-page{width:100%;color:#000}.date-filter{width:100%;position:fixed;display:flex;justify-content:center;background-color:#f2f2f2;font-size:16px}@media only screen and (max-width:991px){.date-filter{font-size:14px}}.date-filter>button{border:none;color:#636466;background-color:#f2f2f2;height:48px;width:48px;padding:0}.date-filter>button[disabled]{opacity:.5}.date-filter>button:focus{outline:0}.date-filter .date{min-width:244px;text-align:center;line-height:48px}@media only screen and (max-width:991px){.date-filter .date{min-width:124px}}.calendar{font-size:14px}.calendar .mobile{display:none;margin-top:20px;padding:0 15px}@media only screen and (max-width:991px){.calendar .mobile{display:block}}.calendar .mobile .day{width:100%}.calendar .mobile .day .header{display:flex;align-items:center;padding:0 10px;border-top:1px solid #636466}.calendar .mobile .day .header .caption{font-weight:700;flex-grow:1;color:#636466}.calendar .mobile .day .header .count{font-size:10px}.calendar .mobile .day .header>button{height:48px;width:48px;border:none;background-color:#fff;color:#636466;padding:0}.calendar .mobile .day .header>button:focus{outline:0}.calendar .mobile .day .header .day-expand{display:none}.calendar .mobile .day .items{height:auto;transition:all .5s ease}.calendar .mobile .day.collapsed .header .day-expand{display:block}.calendar .mobile .day.collapsed .header .day-collapse{display:none}.calendar .mobile .day.collapsed .items{height:0;display:none}.calendar .desktop{display:block}@media only screen and (max-width:991px){.calendar .desktop{display:none}}.calendar .desktop .slot.dates{width:100%;position:fixed;background-color:#f2f2f2}.calendar .desktop .slot>div{max-width:1170px;margin:0 auto}.calendar .desktop .slot .caption{display:flex;flex-wrap:wrap}.calendar .desktop .slot .caption .hour-card{flex-basis:0;flex-grow:1;max-width:100%;padding:8px 10px;background-color:#f2f2f2;font-weight:700;text-align:center}.calendar .desktop .slot .caption .hour-card.active{color:#fff;background-color:#92278f}.calendar .desktop .slot .hour-row{display:flex;flex-wrap:wrap}.calendar .desktop .slot .hour-row .event-cell{flex-basis:0;flex-grow:1;max-width:100%;background-color:#fff;border:1px solid #f2f2f2}.calendar .desktop .slot .hour-row .event-cell.date{padding:10px;text-align:center}.calendar .desktop .slot .hour-row .event-cell.date .weekday{font-weight:700;text-transform:uppercase}.calendar .desktop .slot .hour-row .event-cell.date.active{color:#fff;background-color:#92278f;border-color:#92278f}.calendar .empty-listing{margin:0 auto;max-width:1170px;padding:10px;border:1px solid #f2f2f2}@media only screen and (max-width:991px){.calendar .empty-listing{padding:0 15px;border:none}}.calendar .schedule-event-card{height:100%;display:flex;flex-direction:column;border-top:none}@media only screen and (max-width:991px){.calendar .schedule-event-card{flex-direction:row;border-top:1px solid #f2f2f2}}.calendar .schedule-event-card.past{display:block}@media only screen and (max-width:991px){.calendar .schedule-event-card.past{display:none}}.calendar .schedule-event-card .info{padding:10px;flex-grow:1}.calendar .schedule-event-card .info .time{font-size:12px;font-weight:700}.calendar .schedule-event-card .info .title a{font-weight:700}.calendar .schedule-event-card .info .instructor{font-size:12px}.calendar .schedule-event-card .add-to-favorite{position:static;display:flex;align-items:center;margin-left:12px;height:auto;min-height:44px}.virtual-meeting-page .virtual-meeting-page__image{height:400px;position:relative;background-size:cover;background-position:50%;display:flex;align-items:center;justify-content:center;text-align:center}.virtual-meeting-page .virtual-meeting-page__image .virtual-meeting-page__link .btn{background-color:#2f2f2f}.virtual-meeting-page .virtual-meeting-page__image .virtual-meeting-page__link .btn:hover{background-color:#0070aa}.virtual-meeting-page .virtual-meeting-page__image.zoom-wrapper{height:650px}.virtual-meeting-page .virtual-meeting-page__image.zoom-wrapper iframe{border:none;background-color:#fff;overflow:hidden}.login{padding-top:30px;padding-bottom:30px}.login,.login h2.title{text-align:center}.login form{max-width:305px;margin:30px auto}.login form .form-item{margin:0 0 15px}.login form .recaptcha{margin:0;padding:15px 0}.login form .btn{margin:0 auto;display:block}.personify-auth{display:flex;flex-direction:column;align-items:center}.personify-auth .alert{display:inline-block}.personify-auth .btn,.personify-auth .btn:hover{color:#fff}.openy_carnation-based.openy-gated-content main>div>div>.banner{display:none}.openy_carnation-based.openy-gated-content main>div>div>.breadcrumbs-wrapper{display:none!important}.openy_carnation-based.openy-gated-content #gated-content{padding-top:80px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content #gated-content{padding-top:85px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content #gated-content{padding-top:45px}}.openy_carnation-based.openy-gated-content #gated-content .top-menu{top:130px;z-index:1030}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content #gated-content .top-menu{top:78px;z-index:39}}.openy_carnation-based.openy-gated-content #gated-content .top-menu.menuOpen{z-index:2000}.openy_carnation-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:110px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:112px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:56px}}.openy_carnation-based.openy-gated-content #gated-content .date-filter{top:217px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content #gated-content .date-filter{top:165px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content #gated-content .date-filter{top:125px}}.openy_carnation-based.openy-gated-content #gated-content .calendar .desktop .slot.dates{top:263px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content #gated-content .calendar .desktop .slot.dates{top:213px}}.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content{padding-top:0}.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .top-menu{top:170px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .top-menu{top:117px}}.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .gated-content-schedule-page{padding-top:0}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .gated-content-schedule-page{padding-top:3px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .gated-content-schedule-page{padding-top:56px}}.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .date-filter{top:257px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .date-filter{top:204px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .date-filter{top:164px}}.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .calendar .desktop .slot.dates{top:305px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.toolbar-fixed #gated-content .calendar .desktop .slot.dates{top:252px}}.openy_carnation-based.openy-gated-content.toolbar-fixed .openy-page-tabs{margin-top:80px!important}.openy_carnation-based.openy-gated-content.toolbar-tray-open #gated-content .top-menu{top:209px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.toolbar-tray-open #gated-content .top-menu{top:117px}}.openy_carnation-based.openy-gated-content.toolbar-tray-open #gated-content .date-filter{top:296px}.openy_carnation-based.openy-gated-content.toolbar-tray-open #gated-content .calendar .desktop .slot.dates{top:344px}.openy_carnation-based.openy-gated-content.alerts #openy_alerts_header_placeholder{margin-top:217px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts #openy_alerts_header_placeholder{margin-top:165px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content.alerts #openy_alerts_header_placeholder{margin-top:125px}}.openy_carnation-based.openy-gated-content.alerts #gated-content{padding-top:0}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.toolbar-fixed #openy_alerts_header_placeholder{margin-top:125px}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule .layout-container,.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule .layout-container .viewport{overflow:initial}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page{padding-top:0!important}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{position:static;position:sticky;top:217px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{top:165px}}@media only screen and (max-width:991px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{top:116px}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{position:static;position:sticky;top:265px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:213px}}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-vertical #toolbar-bar{position:fixed}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #openy_alerts_app_header{margin-top:122px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #openy_alerts_app_header{margin-top:0}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .date-filter{top:256px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .date-filter{top:204px}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:304px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:252px}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #openy_alerts_app_header{margin-top:164px}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .date-filter{top:295px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .date-filter{top:204px}}.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:343px}@media only screen and (max-width:1059px){.openy_carnation-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:252px}}.openy_lily-based.openy-gated-content .breadcrumb-container,.openy_lily-based.openy-gated-content .return-to-top{display:none}.openy_lily-based.openy-gated-content #gated-content .top-menu{top:162px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content #gated-content .top-menu{top:80px}}.openy_lily-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:112px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:56px}}.openy_lily-based.openy-gated-content #gated-content .date-filter{top:247px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content #gated-content .date-filter{top:127px}}.openy_lily-based.openy-gated-content #gated-content .calendar .desktop .slot.dates{top:292px}.openy_lily-based.openy-gated-content.toolbar-fixed header#page-head .top-navs .nav-wrapper .main-nav.affix{top:120px!important}.openy_lily-based.openy-gated-content.toolbar-fixed #gated-content .gated-content-schedule-page{padding-top:48px}.openy_lily-based.openy-gated-content.toolbar-tray-open #gated-content .top-menu{top:189px;z-index:500}.openy_lily-based.openy-gated-content.toolbar-tray-open #gated-content .gated-content-schedule-page{padding-top:45px}.openy_lily-based.openy-gated-content.toolbar-tray-open #gated-content .date-filter{top:274px}.openy_lily-based.openy-gated-content.toolbar-tray-open #gated-content .calendar .desktop .slot.dates{top:319px}.openy_lily-based.openy-gated-content.alerts #openy_alerts_app_header{margin-top:85px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content.alerts #openy_alerts_app_header{margin-top:47px}}.openy_lily-based.openy-gated-content.alerts #gated-content{padding-top:0}.openy_lily-based.openy-gated-content.alerts.toolbar-fixed #openy_alerts_app_header{margin-top:63px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content.alerts.toolbar-fixed #openy_alerts_app_header,.openy_lily-based.openy-gated-content.alerts.toolbar-fixed .viewport{margin-top:0}}.openy_lily-based.openy-gated-content.alerts.toolbar-tray-open #openy_alerts_app_header{margin-top:60px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content.alerts.toolbar-tray-open #openy_alerts_app_header{margin-top:0}}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule .layout-container,.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule .layout-container .viewport{overflow:initial}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page{padding-top:0!important}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{position:static;position:sticky;top:247px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{top:126px}}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{position:static;position:sticky;top:295px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-vertical #toolbar-bar{position:fixed}}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #openy_alerts_app_header{margin-top:122px}@media only screen and (max-width:991px){.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #openy_alerts_app_header{margin-top:0}}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .date-filter{top:246px}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:294px}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #openy_alerts_app_header{margin-top:164px}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .date-filter{top:273px}.openy_lily-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:321px}.openy_rose-based.openy-gated-content #block-openy-rose-breadcrumbs{display:none}.openy_rose-based.openy-gated-content #gated-content .top-menu{z-index:500;top:165px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content #gated-content .top-menu{z-index:1030;top:70px}}.openy_rose-based.openy-gated-content #gated-content .top-menu>div button{padding-right:0}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content #gated-content .top-menu>div button{padding-right:8px}}.openy_rose-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:115px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content #gated-content .gated-content-schedule-page{padding-top:52px}}.openy_rose-based.openy-gated-content #gated-content .date-filter{top:250px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content #gated-content .date-filter{top:117px}}.openy_rose-based.openy-gated-content #gated-content .calendar .desktop .slot.dates{top:298px}.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content{padding-top:0}.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content .top-menu,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content .top-menu{top:202px}.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content .gated-content-schedule-page,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content .gated-content-schedule-page{padding-top:46px}.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content .date-filter,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content .date-filter{top:287px}.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content .calendar .desktop .slot.dates,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content .calendar .desktop .slot.dates{top:335px}.openy_rose-based.openy-gated-content.toolbar-horizontal .openy-page-tabs,.openy_rose-based.openy-gated-content.toolbar-vertical .openy-page-tabs{margin-top:100px!important}@media(max-width:991px){.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content .top-menu,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content .top-menu{top:109px}.openy_rose-based.openy-gated-content.toolbar-horizontal .viewport,.openy_rose-based.openy-gated-content.toolbar-vertical .viewport{margin-top:86px}}@media(max-width:609px){.openy_rose-based.openy-gated-content.toolbar-horizontal #gated-content .top-menu,.openy_rose-based.openy-gated-content.toolbar-vertical #gated-content .top-menu{top:109px}}.openy_rose-based.openy-gated-content.toolbar-tray-open #gated-content .top-menu{top:244px}.openy_rose-based.openy-gated-content.toolbar-tray-open #gated-content .gated-content-schedule-page{padding-top:48px}.openy_rose-based.openy-gated-content.toolbar-tray-open #gated-content .date-filter{top:329px}.openy_rose-based.openy-gated-content.toolbar-tray-open #gated-content .calendar .desktop .slot.dates{top:377px}.openy_rose-based.openy-gated-content.primary-menu-minimize #gated-content .top-menu{top:42px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.primary-menu-minimize #gated-content .top-menu{top:109px}}.openy_rose-based.openy-gated-content.primary-menu-minimize #gated-content .gated-content-schedule-page{padding-top:0}.openy_rose-based.openy-gated-content.primary-menu-minimize #gated-content .date-filter{top:127px}.openy_rose-based.openy-gated-content.primary-menu-minimize #gated-content .calendar .desktop .slot.dates{top:175px}.openy_rose-based.openy-gated-content.primary-menu-minimize.toolbar-fixed #gated-content .top-menu{top:81px}.openy_rose-based.openy-gated-content.primary-menu-minimize.toolbar-fixed #gated-content .date-filter{top:166px}.openy_rose-based.openy-gated-content.primary-menu-minimize.toolbar-fixed #gated-content .calendar .desktop .slot.dates{top:214px}.openy_rose-based.openy-gated-content.alerts #openy_alerts_app_header{margin-top:85px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.alerts #openy_alerts_app_header{margin-top:47px}}.openy_rose-based.openy-gated-content.alerts #gated-content{padding-top:0}.openy_rose-based.openy-gated-content.alerts.toolbar-fixed #openy_alerts_app_header{margin-top:83px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.alerts.toolbar-fixed #openy_alerts_app_header{margin-top:0}}.openy_rose-based.openy-gated-content.alerts.toolbar-tray-open #openy_alerts_app_header{margin-top:85px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.alerts.toolbar-tray-open #openy_alerts_app_header{margin-top:0}}.openy_rose-based.openy-gated-content.alerts .openy-page-tabs{margin-top:10px!important}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule .viewport{overflow:initial}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page{padding-top:0!important}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{position:static;position:sticky;top:250px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .date-filter{top:116px}}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{position:static;position:sticky;top:298px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.primary-menu-minimize #gated-content .gated-content-schedule-page{padding-top:0!important}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.primary-menu-minimize #gated-content .gated-content-schedule-page .date-filter{position:static;position:sticky;top:126px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.primary-menu-minimize #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{position:static;position:sticky;top:174px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-vertical #toolbar-bar{position:fixed}}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #openy_alerts_app_header{margin-top:122px}@media only screen and (max-width:991px){.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #openy_alerts_app_header{margin-top:0}}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .date-filter{top:287px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:335px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.primary-menu-minimize #gated-content .gated-content-schedule-page .date-filter{top:165px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.primary-menu-minimize #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:213px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #openy_alerts_app_header{margin-top:164px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .date-filter{top:326px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:374px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open.primary-menu-minimize #gated-content .gated-content-schedule-page .date-filter{top:166px}.openy_rose-based.openy-gated-content.alerts.vy-route-Schedule.toolbar-fixed.toolbar-tray-open.primary-menu-minimize #gated-content .gated-content-schedule-page .calendar .desktop .slot.dates{top:214px}#gated-content{padding-bottom:30px;padding-top:80px}@media only screen and (max-width:991px){#gated-content{padding-top:45px}}#gated-content .gated-container{padding:10px}@media(min-width:768px){#gated-content .gated-container{margin-left:auto;margin-right:auto;padding:30px 15px;max-width:750px}}@media(min-width:992px){#gated-content .gated-container{max-width:970px}}@media(min-width:1200px){#gated-content .gated-container{max-width:1170px}}#gated-content .gated-containerV2{margin-left:auto;margin-right:auto;max-width:1140px}@media only screen and (max-width:991px){#gated-content .gated-containerV2{max-width:940px}}@media only screen and (max-width:767px),only screen and (max-width:823px)and (max-height:500px){#gated-content .gated-containerV2{max-width:none}}#gated-content .fixed-button{position:fixed;width:48px;height:48px;border-radius:50%;border:2px solid #fff;cursor:pointer;opacity:.8;transition:all .2s ease-in-out}#gated-content .fixed-button a{display:block;color:#fff}#gated-content .fixed-button:hover{opacity:1;box-shadow:0 0 10px rgba(0,0,0,.25)}#gated-content .scroll-to-top{right:30px;bottom:30px;background-color:#0060af;z-index:1}#gated-content .title-wrapper{display:flex;align-items:center;justify-content:space-between}#gated-content .title-inline{display:inline-block}.spinner{justify-content:center} \ No newline at end of file diff --git a/js/gated-content/dist/gated-content.umd.min.js b/js/gated-content/dist/gated-content.umd.min.js index 696eab19b..1d2a956dc 100644 --- a/js/gated-content/dist/gated-content.umd.min.js +++ b/js/gated-content/dist/gated-content.umd.min.js @@ -1,4 +1,4 @@ -(function(t,e){"object"===typeof exports&&"object"===typeof module?module.exports=e(require("Vuex"),require("VueRouter"),require("vue"),require("axios")):"function"===typeof define&&define.amd?define(["Vuex","VueRouter",,"axios"],e):"object"===typeof exports?exports["gated-content"]=e(require("Vuex"),require("VueRouter"),require("vue"),require("axios")):t["gated-content"]=e(t["Vuex"],t["VueRouter"],t["Vue"],t["axios"])})("undefined"!==typeof self?self:this,(function(t,e,n,r){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="fae3")}({0:function(t,e){},"00b4":function(t,e,n){"use strict";n("ac1f");var r=n("23e7"),o=n("861d"),i=function(){var t=!1,e=/[ac]/;return e.exec=function(){return t=!0,/./.exec.apply(this,arguments)},!0===e.test("abc")&&t}(),a=/./.test;r({target:"RegExp",proto:!0,forced:!i},{test:function(t){if("function"!==typeof this.exec)return a.call(this,t);var e=this.exec(t);if(null!==e&&!o(e))throw new Error("RegExp exec method returned something other than an Object or null");return!!e}})},"00ce":function(t,e,n){"use strict";function r(t){return r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}var o,i=SyntaxError,a=Function,s=TypeError,c=function(t){try{return a('"use strict"; return ('+t+").constructor;")()}catch(e){}},u=Object.getOwnPropertyDescriptor;if(u)try{u({},"")}catch(M){u=null}var l=function(){throw new s},f=u?function(){try{return l}catch(t){try{return u(arguments,"callee").get}catch(e){return l}}}():l,d=n("5156")(),p=Object.getPrototypeOf||function(t){return t.__proto__},v={},h="undefined"===typeof Uint8Array?o:p(Uint8Array),g={"%AggregateError%":"undefined"===typeof AggregateError?o:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"===typeof ArrayBuffer?o:ArrayBuffer,"%ArrayIteratorPrototype%":d?p([][Symbol.iterator]()):o,"%AsyncFromSyncIteratorPrototype%":o,"%AsyncFunction%":v,"%AsyncGenerator%":v,"%AsyncGeneratorFunction%":v,"%AsyncIteratorPrototype%":v,"%Atomics%":"undefined"===typeof Atomics?o:Atomics,"%BigInt%":"undefined"===typeof BigInt?o:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"===typeof DataView?o:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"===typeof Float32Array?o:Float32Array,"%Float64Array%":"undefined"===typeof Float64Array?o:Float64Array,"%FinalizationRegistry%":"undefined"===typeof FinalizationRegistry?o:FinalizationRegistry,"%Function%":a,"%GeneratorFunction%":v,"%Int8Array%":"undefined"===typeof Int8Array?o:Int8Array,"%Int16Array%":"undefined"===typeof Int16Array?o:Int16Array,"%Int32Array%":"undefined"===typeof Int32Array?o:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":d?p(p([][Symbol.iterator]())):o,"%JSON%":"object"===("undefined"===typeof JSON?"undefined":r(JSON))?JSON:o,"%Map%":"undefined"===typeof Map?o:Map,"%MapIteratorPrototype%":"undefined"!==typeof Map&&d?p((new Map)[Symbol.iterator]()):o,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"===typeof Promise?o:Promise,"%Proxy%":"undefined"===typeof Proxy?o:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"===typeof Reflect?o:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"===typeof Set?o:Set,"%SetIteratorPrototype%":"undefined"!==typeof Set&&d?p((new Set)[Symbol.iterator]()):o,"%SharedArrayBuffer%":"undefined"===typeof SharedArrayBuffer?o:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":d?p(""[Symbol.iterator]()):o,"%Symbol%":d?Symbol:o,"%SyntaxError%":i,"%ThrowTypeError%":f,"%TypedArray%":h,"%TypeError%":s,"%Uint8Array%":"undefined"===typeof Uint8Array?o:Uint8Array,"%Uint8ClampedArray%":"undefined"===typeof Uint8ClampedArray?o:Uint8ClampedArray,"%Uint16Array%":"undefined"===typeof Uint16Array?o:Uint16Array,"%Uint32Array%":"undefined"===typeof Uint32Array?o:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"===typeof WeakMap?o:WeakMap,"%WeakRef%":"undefined"===typeof WeakRef?o:WeakRef,"%WeakSet%":"undefined"===typeof WeakSet?o:WeakSet},m=function t(e){var n;if("%AsyncFunction%"===e)n=c("async function () {}");else if("%GeneratorFunction%"===e)n=c("function* () {}");else if("%AsyncGeneratorFunction%"===e)n=c("async function* () {}");else if("%AsyncGenerator%"===e){var r=t("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if("%AsyncIteratorPrototype%"===e){var o=t("%AsyncGenerator%");o&&(n=p(o.prototype))}return g[e]=n,n},y={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},b=n("0f7c"),_=n("a0d3"),w=b.call(Function.call,Array.prototype.concat),S=b.call(Function.apply,Array.prototype.splice),x=b.call(Function.call,String.prototype.replace),O=b.call(Function.call,String.prototype.slice),C=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,k=/\\(\\)?/g,E=function(t){var e=O(t,0,1),n=O(t,-1);if("%"===e&&"%"!==n)throw new i("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==e)throw new i("invalid intrinsic syntax, expected opening `%`");var r=[];return x(t,C,(function(t,e,n,o){r[r.length]=n?x(o,k,"$1"):e||t})),r},j=function(t,e){var n,r=t;if(_(y,r)&&(n=y[r],r="%"+n[0]+"%"),_(g,r)){var o=g[r];if(o===v&&(o=m(r)),"undefined"===typeof o&&!e)throw new s("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:n,name:r,value:o}}throw new i("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!==typeof t||0===t.length)throw new s("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!==typeof e)throw new s('"allowMissing" argument must be a boolean');var n=E(t),r=n.length>0?n[0]:"",o=j("%"+r+"%",e),a=o.name,c=o.value,l=!1,f=o.alias;f&&(r=f[0],S(n,w([0,1],f)));for(var d=1,p=!0;dHello [personal-training-customer:name],
\r\n\r\n\r\n\r\n
This message is to notify you that your upcoming virtual appointment on [personal-training:start-date] has been cancelled by [personal-training-instructor:name]. Please reach out to your trainer with any questions or to reschedule.
\r\n\r\nWe look forward to serving you again soon!
\r\n\r\n\r\n\r\n
Thank you,
\r\n\r\n[site:name]
\r\n" +meeting_cancel_message: "Hello from the [site:name]!
\r\n\r\n\r\n\r\n
This message is to notify you that your upcoming virtual appointment on [personal-training:start-date] has been cancelled by [personal-training-instructor:name]. Please reach out to your trainer with any questions or to reschedule.
\r\n\r\nWe look forward to serving you again soon!
\r\n\r\n\r\n\r\n
Thank you,
\r\n\r\n[site:name]
\r\n" meeting_cancel_subject: 'Virtual Appointment Cancellation Notification' diff --git a/modules/openy_gc_personal_training/config/install/views.view.personal_trainings.yml b/modules/openy_gc_personal_training/config/install/views.view.personal_trainings.yml index 7e1d42e9f..009b42bab 100644 --- a/modules/openy_gc_personal_training/config/install/views.view.personal_trainings.yml +++ b/modules/openy_gc_personal_training/config/install/views.view.personal_trainings.yml @@ -32,7 +32,7 @@ display: administrator: administrator virtual_trainer: virtual_trainer cache: - type: tag + type: none options: { } query: type: views_query diff --git a/modules/openy_gc_personal_training/openy_gc_personal_training.install b/modules/openy_gc_personal_training/openy_gc_personal_training.install index 039771f9f..6444913bf 100644 --- a/modules/openy_gc_personal_training/openy_gc_personal_training.install +++ b/modules/openy_gc_personal_training/openy_gc_personal_training.install @@ -11,6 +11,15 @@ use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\openy_gc_personal_training\Entity\PersonalTraining; use Drupal\user\Entity\Role; +/** + * Add permission to virtual trainer. + */ +function _openy_gc_personal_training_update_virtual_trainer() { + $role_object = Role::load('virtual_trainer'); + $role_object->grantPermission('use text format full_html'); + $role_object->save(); +} + /** * Implements hook_install(). */ @@ -27,6 +36,7 @@ function openy_gc_personal_training_install() { $role->save(); } } + _openy_gc_personal_training_update_virtual_trainer(); } /** @@ -247,3 +257,24 @@ function openy_gc_personal_training_update_8010() { 'views.view.personal_trainings', ]); } + +/** + * Allow Virtual trainer to use full html. + */ +function openy_gc_personal_training_update_8011() { + _openy_gc_personal_training_update_virtual_trainer(); +} + +/** + * Updated views with personal_trainings. + */ +function openy_gc_personal_training_update_8013() { + $config_dir = drupal_get_path('module', 'openy_gc_personal_training'); + $config_dir .= '/config/install/'; + // Import new configuration. + $config_importer = \Drupal::service('openy_upgrade_tool.importer'); + $config_importer->setDirectory($config_dir); + $config_importer->importConfigs([ + 'views.view.personal_trainings', + ]); +} diff --git a/modules/openy_gc_personal_training/src/Entity/PersonalTraining.php b/modules/openy_gc_personal_training/src/Entity/PersonalTraining.php index 064b981f4..73d886876 100644 --- a/modules/openy_gc_personal_training/src/Entity/PersonalTraining.php +++ b/modules/openy_gc_personal_training/src/Entity/PersonalTraining.php @@ -54,7 +54,7 @@ * "delete-form" = "/admin/virtual-y/personal_training/{personal_training}/delete", * "collection" = "/admin/virtual-y/personal_training", * }, - * field_ui_base_route = "personal_training.settings" + * field_ui_base_route = "entity.personal_training_type.edit_form", * ) */ class PersonalTraining extends ContentEntityBase implements PersonalTrainingInterface { diff --git a/modules/openy_gc_personal_training/src/Entity/PersonalTrainingType.php b/modules/openy_gc_personal_training/src/Entity/PersonalTrainingType.php index c6f9d3c08..bb749a0d2 100644 --- a/modules/openy_gc_personal_training/src/Entity/PersonalTrainingType.php +++ b/modules/openy_gc_personal_training/src/Entity/PersonalTrainingType.php @@ -20,6 +20,25 @@ * config_export = { * "id", * "label", + * }, + * handlers = { + * "form" = { + * "default" = "Drupal\Core\Entity\BundleEntityFormBase", + * "add" = "Drupal\Core\Entity\BundleEntityFormBase", + * "edit" = "Drupal\Core\Entity\BundleEntityFormBase", + * "delete" = "Drupal\Core\Entity\EntityDeleteForm", + * }, + * "route_provider" = { + * "html" = "Drupal\Core\Entity\Routing\AdminHtmlRouteProvider", + * }, + * }, + * admin_permission = "administer site configuration", + * links = { + * "canonical" = "/admin/structure/personal_training_type/{personal_training_type}", + * "add-form" = "/admin/structure/personal_training_type/add", + * "edit-form" = "/admin/structure/personal_training_type/{personal_training_type}/edit", + * "delete-form" = "/admin/structure/personal_training_type/{personal_training_type}/delete", + * "collection" = "/admin/structure/personal_training_type", * } * ) */ diff --git a/modules/openy_gc_personal_training/src/EventSubscriber/PersonalTrainingCanceledSubscriber.php b/modules/openy_gc_personal_training/src/EventSubscriber/PersonalTrainingCanceledSubscriber.php index cdc599d1c..b53cdab77 100644 --- a/modules/openy_gc_personal_training/src/EventSubscriber/PersonalTrainingCanceledSubscriber.php +++ b/modules/openy_gc_personal_training/src/EventSubscriber/PersonalTrainingCanceledSubscriber.php @@ -149,8 +149,8 @@ public function notifyCustomer(PersonalTrainingInterface $personal_training) { public function getUserEmail(int $uid) { $virtual_y_config = $this->configFactory->get('openy_gc_auth.settings'); $active_provider = $virtual_y_config->get('active_provider'); - $this->authManager->getDefinition($virtual_y_config->get('active_provider'), TRUE); - /** @var \Drupal\openy_gc_auth\GCIdentityProviderPluginBase $plugin_instance */ + $this->authManager->getDefinition($active_provider, TRUE); + /** @var \Drupal\openy_gc_auth\GCIdentityProviderInterface $plugin_instance */ $plugin_instance = $this->authManager->createInstance($active_provider); return $plugin_instance->getMemberNotificationEmail($uid); } diff --git a/modules/openy_gc_shared_content/README.md b/modules/openy_gc_shared_content/README.md index c606a1160..25e37ec2b 100644 --- a/modules/openy_gc_shared_content/README.md +++ b/modules/openy_gc_shared_content/README.md @@ -1,23 +1,25 @@ # Initial connection to the Shared Content server During the installation of this module, Virtual Y creates a new and fresh connection to the centralized shared content server. -Shared content admins should approve that your request is valid and give you an access to the centralized database. +Shared content admins should approve that your request is valid and give you access to the centralized database. # Reset of the Shared Content Server connection -Sometimes shared content server stored wrong secret key for your project connection. In this case a complete reset of the connection could help fix this problem. +Sometimes your Virtual Y site may stop communicating with the shared content server. This may be due to the secret key for your site becoming out of sync with the server. In this case a complete reset of the connection could help fix this problem. + Steps to reset the connection. + 1. Go to `/admin/virtual-y/shared-content/server`. -2. Delete existed connection to the Open Y Shared Server. -3. Create new connection (`/admin/virtual-y/shared-content/server/add`). +2. Delete the existing connection to the Open Y Shared Content Server. +3. Create a new connection at `/admin/virtual-y/shared-content/server/add`. 4. Use `https://shared.openy.org` as connection domain. 5. Use any name as label. -6. Save new connection. -7. Send request to Virtual Y team to approve new connection. +6. Save the new connection. +7. Email `info@openymca.org` with the URL of your site requesting that they approve the new connection. # Developer notes -This module provides connection fucntionality that allows any VY instance to get access to the centralized shared media database. +This module provides connection functionality that allows any VY instance to get access to the centralized shared media database. It provides new entity type for connection and set of different SharedContentSourceType plugins that allows to download parts of the content to Virtual Y. ### SharedContentSourceType plugin: diff --git a/modules/openy_gc_shared_content/src/Controller/PreviewController.php b/modules/openy_gc_shared_content/src/Controller/PreviewController.php index 16236e3d5..996287332 100644 --- a/modules/openy_gc_shared_content/src/Controller/PreviewController.php +++ b/modules/openy_gc_shared_content/src/Controller/PreviewController.php @@ -6,7 +6,9 @@ use Drupal\Core\Ajax\AjaxResponse; use Drupal\Core\Ajax\OpenModalDialogCommand; use Drupal\Core\Controller\ControllerBase; +use Drupal\Core\Form\FormBuilder; use Drupal\openy_gc_shared_content\Entity\SharedContentSourceServerInterface; +use Drupal\user\UserDataInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; @@ -15,6 +17,13 @@ */ class PreviewController extends ControllerBase { + /** + * The form builder. + * + * @var \Drupal\Core\Form\FormBuilder + */ + protected $formBuilder; + /** * The plugin manager for SharedContentSourceType classes. * @@ -22,11 +31,20 @@ class PreviewController extends ControllerBase { */ protected $sharedSourceTypeManager; + /** + * The user data interface. + * + * @var \Drupal\user\UserDataInterface + */ + protected $userData; + /** * {@inheritdoc} */ - public function __construct(PluginManagerInterface $manager) { + public function __construct(FormBuilder $formBuilder, PluginManagerInterface $manager, UserDataInterface $user_data) { + $this->formBuilder = $formBuilder; $this->sharedSourceTypeManager = $manager; + $this->userData = $user_data; } /** @@ -34,7 +52,9 @@ public function __construct(PluginManagerInterface $manager) { */ public static function create(ContainerInterface $container) { return new static( - $container->get('plugin.manager.shared_content_source_type') + $container->get('form_builder'), + $container->get('plugin.manager.shared_content_source_type'), + $container->get('user.data') ); } @@ -42,14 +62,44 @@ public static function create(ContainerInterface $container) { * Callback for opening the modal form. */ public function openPreviewModal(Request $request, SharedContentSourceServerInterface $shared_content_source_server, string $type, string $uuid) { + // Prepare AjaxResponse. $response = new AjaxResponse(); + + // Update the previewed list with this UUID if it's not already there. + $previewed = $this->userData->get( + 'openy_gc_shared_content', + $this->currentUser()->id(), + $shared_content_source_server->id() . '_previewed' + ); + if (!in_array($uuid, $previewed)) { + $previewed[] = $uuid; + } + $this->userData->set('openy_gc_shared_content', + $this->currentUser()->id(), + $shared_content_source_server->id() . '_previewed', + $previewed + ); + + // Prepare preview in $content. $instance = $this->sharedSourceTypeManager->createInstance($type); $query_args = $instance->getFullJsonApiQueryArgs(); $data = $instance->jsonApiCall($shared_content_source_server, $query_args, $uuid); $content = $instance->formatItem($data, FALSE); $content['#server'] = $shared_content_source_server->getUrl(); - $response->addCommand(new OpenModalDialogCommand('Preview', $content, ['width' => '900'])); + // Prepare the form and send everything we need as extra arguments. + $form = $this->formBuilder->getForm('Drupal\openy_gc_shared_content\Form\SharedContentPreviewForm', $content, $type, $uuid); + + // Open the modal with the content preview and the "fetch" form. + // Hide the regular close button to force users to use ours. + $response->addCommand(new OpenModalDialogCommand( + 'Preview', + [$content, $form], + [ + 'width' => '900', + 'classes' => ['ui-dialog-titlebar-close' => 'no-close'], + ] + )); return $response; } diff --git a/modules/openy_gc_shared_content/src/Form/SharedContentFetchForm.php b/modules/openy_gc_shared_content/src/Form/SharedContentFetchForm.php index b5bcfdbe9..7f9a7550f 100644 --- a/modules/openy_gc_shared_content/src/Form/SharedContentFetchForm.php +++ b/modules/openy_gc_shared_content/src/Form/SharedContentFetchForm.php @@ -2,13 +2,18 @@ namespace Drupal\openy_gc_shared_content\Form; +use Drupal\Component\Datetime\TimeInterface; use Drupal\Component\Plugin\PluginManagerInterface; use Drupal\Core\Batch\BatchBuilder; +use Drupal\Core\Datetime\DateFormatter; use Drupal\Core\Entity\EntityForm; +use Drupal\Core\Entity\EntityRepository; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Pager\PagerManagerInterface; use Drupal\Core\Render\Element; use Drupal\Core\Url; +use Drupal\user\UserDataInterface; +use Drupal\user\UserStorageInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** @@ -20,6 +25,20 @@ class SharedContentFetchForm extends EntityForm { const PAGE_LIMIT = 20; + /** + * The date formatter. + * + * @var \Drupal\Core\Datetime\DateFormatter + */ + protected $dateFormatter; + + /** + * The Entity Repository. + * + * @var \Drupal\Core\Entity\EntityRepository + */ + protected $entityRepository; + /** * The plugin manager for SharedContentSourceType classes. * @@ -41,13 +60,47 @@ class SharedContentFetchForm extends EntityForm { */ protected $batchBuilder; + /** + * The user storage interface. + * + * @var \Drupal\user\UserStorageInterface + */ + protected $userStorage; + + /** + * The user data interface. + * + * @var \Drupal\user\UserDataInterface + */ + protected $userData; + + /** + * The time interface. + * + * @var \Drupal\Component\Datetime\TimeInterface + */ + protected $time; + /** * {@inheritdoc} */ - public function __construct(PluginManagerInterface $manager, PagerManagerInterface $pager_manager) { + public function __construct( + DateFormatter $date_formatter, + EntityRepository $entity_repository, + PluginManagerInterface $manager, + PagerManagerInterface $pager_manager, + UserStorageInterface $user_storage, + UserDataInterface $user_data, + TimeInterface $time + ) { + $this->dateFormatter = $date_formatter; + $this->entityRepository = $entity_repository; $this->sharedSourceTypeManager = $manager; $this->pagerManager = $pager_manager; $this->batchBuilder = new BatchBuilder(); + $this->userStorage = $user_storage; + $this->userData = $user_data; + $this->time = $time; } /** @@ -55,8 +108,13 @@ public function __construct(PluginManagerInterface $manager, PagerManagerInterfa */ public static function create(ContainerInterface $container) { return new static( + $container->get('date.formatter'), + $container->get('entity.repository'), $container->get('plugin.manager.shared_content_source_type'), - $container->get('pager.manager') + $container->get('pager.manager'), + $container->get('entity_type.manager')->getStorage('user'), + $container->get('user.data'), + $container->get('datetime.time') ); } @@ -81,6 +139,55 @@ public function form(array $form, FormStateInterface $form_state) { return $form; } + $user = $this->currentUser(); + $user_data = $this->userData; + $session_opened = $this->userStorage->load($user->id())->getLastLoginTime(); + $request_time = $this->time->getRequestTime(); + + // Content is new when: + // 1) the created date > last time user fetched on their last session. + // 2) we're on our first session. + // 3) it hasn't already been previewed this session. + // + // In order to understand this we have three stored values: + // - $first_fetched is set once and is used to validate the first session. + // - $last_fetched is reset on every fetch. + // - $last_session is reset on the first fetch of a new session and stores + // the previous value of $last_fetched. + $first_fetched = $user_data->get('openy_gc_shared_content', $user->id(), $entity->id() . '_first_fetched'); + $last_fetched = $user_data->get('openy_gc_shared_content', $user->id(), $entity->id() . '_last_fetched'); + $last_session = $user_data->get('openy_gc_shared_content', $user->id(), $entity->id() . '_last_session'); + $previewed = $user_data->get('openy_gc_shared_content', $user->id(), $entity->id() . '_previewed') ?: []; + + // There are two cases that could mean we're on our first session: + // 1) first_fetch is not set, OR + // 2) first_fetch is the same session we're currently in. + $first_session = !$first_fetched || $session_opened == $first_fetched; + + // Set the first_fetched_{server} the first time but then don't touch it. + if (!$first_fetched) { + $user_data->set('openy_gc_shared_content', $user->id(), $entity->id() . '_first_fetched', $session_opened); + } + + // Set last_fetched_{server} each time we load the form. + $user_data->set('openy_gc_shared_content', $user->id(), $entity->id() . '_last_fetched', $request_time); + + // Update the last session if we're starting a new session. + // This will be what we check against the updated time later. + if ($session_opened > $last_fetched) { + // Need to do this to ensure we're not setting the value to NULL. + $new_last_session = $last_fetched ?: 0; + $user_data->set('openy_gc_shared_content', $user->id(), $entity->id() . '_last_session', $new_last_session); + $last_session = $last_fetched; + + // Also reset the previewed array. + $user_data->delete('openy_gc_shared_content', + $user->id(), + $entity->id() . '_previewed' + ); + $previewed = []; + } + $form['label'] = [ '#type' => 'markup', '#markup' => $entity->label() . ' - ' . $entity->getUrl(), @@ -132,13 +239,20 @@ public function form(array $form, FormStateInterface $form_state) { ]; } else { + // Duplicate the form actions into the action container in the header. + $form['fetched_data']['actions'] = parent::actions($form, $form_state); + unset($form['fetched_data']['actions']['delete']); + $form['fetched_data']['actions']['submit']['#value'] = $this->t('Fetch to my site'); + $form['fetched_data']['actions']['submit']['#attributes']['class'][] = 'button--primary'; + $form['fetched_data']['content'] = [ '#title' => $this->t('Select content to import'), '#type' => 'tableselect', '#header' => [ 'name' => $this->t('Name'), - 'donated_by' => $this->t('Donated By'), - 'count_of_downloads' => $this->t('YMCAS using content'), + 'donated_date' => $this->t('Donated on'), + 'donated_by' => $this->t('Donated by'), + 'count_of_downloads' => $this->t('YMCAs using content'), 'operations' => [ 'data' => $this->t('Operations'), ], @@ -147,22 +261,45 @@ public function form(array $form, FormStateInterface $form_state) { ]; foreach ($source_data['data'] as $item) { + $item_exists = $this->entityRepository->loadEntityByUuid('node', $item['id']) ? TRUE : FALSE; + $ops_classes = ['use-ajax', 'button']; + $ops_classes[] = !$item_exists ?: 'is-disabled'; + $row_classes = []; + + $donated_date_formatted = ''; + $item_is_new = FALSE; + if (!empty($item['attributes']['created'])) { + // Fetch the last modified date and format it. + $created = strtotime($item['attributes']['created']); + $donated_date_formatted = $this->dateFormatter->format($created, 'short'); + + // If the item is new then give the row the respective class. + $item_is_new = (($created > $last_session) || $first_session) && !in_array($item['id'], $previewed); + // Add the class if the item is new AND it's not fetched yet. + $row_classes[] = $item_is_new && !$item_exists ? 'new-item' : []; + } + $form['fetched_data']['content']['#options'][$item['id']] = [ - // @todo maybe we can highlight existing items here. + '#disabled' => $item_exists, + '#attributes' => [ + 'class' => $row_classes, + 'data-uuid' => $item['id'], + ], 'name' => $instance->formatItem($item), + 'donated_date' => $donated_date_formatted, 'donated_by' => !empty($item['attributes']['field_gc_origin']) ? $item['attributes']['field_gc_origin'] : ' ', 'count_of_downloads' => !empty($item['attributes']['field_share_count']) ? $item['attributes']['field_share_count'] : '0', 'operations' => [ 'data' => [ '#type' => 'link', - '#title' => $this->t('Preview'), + '#title' => $item_exists ? $this->t('Added') : $this->t('Preview'), '#url' => Url::fromRoute('entity.shared_content_source_server.preview', [ 'shared_content_source_server' => $entity->id(), 'type' => $type, 'uuid' => $item['id'], ]), '#attributes' => [ - 'class' => ['use-ajax', 'button'], + 'class' => $ops_classes, ], ], ], diff --git a/modules/openy_gc_shared_content/src/Form/SharedContentPreviewForm.php b/modules/openy_gc_shared_content/src/Form/SharedContentPreviewForm.php new file mode 100644 index 000000000..edd43c740 --- /dev/null +++ b/modules/openy_gc_shared_content/src/Form/SharedContentPreviewForm.php @@ -0,0 +1,197 @@ +sharedSourceTypeManager = $manager; + $this->requestStack = $request_stack; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + + return new static( + $container->get('plugin.manager.shared_content_source_type'), + $container->get('request_stack'), + $container->get('string_translation'), + $container->get('messenger'), + $container->get('request_stack') + ); + } + + /** + * {@inheritdoc} + */ + public function getFormId() { + return 'shared_content_preview_form'; + } + + /** + * Helper method so we can have consistent dialog options. + * + * @return string[] + * An array of jQuery UI elements to pass on to our dialog form. + */ + protected static function getDataDialogOptions() { + return [ + 'width' => '80%', + ]; + } + + /** + * {@inheritdoc} + */ + public function buildForm(array $form, FormStateInterface $form_state) { + // Group submit handlers in an actions element with a key of "actions" so + // that it gets styled correctly, and so that other modules may add actions + // to the form. + $form['actions'] = [ + '#type' => 'actions', + ]; + + $form['actions']['close'] = [ + '#type' => 'submit', + '#value' => $this->t('Close'), + '#ajax' => [ + 'callback' => '::ajaxSubmitForm', + 'event' => 'click', + ], + ]; + // Add a submit button that handles the submission of the form. + $form['actions']['submit'] = [ + '#type' => 'submit', + '#value' => $this + ->t('Fetch to my site'), + '#ajax' => [ + 'callback' => '::ajaxSubmitForm', + 'event' => 'click', + ], + '#attributes' => ['class' => ['button--primary']], + ]; + + return $form; + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state) { + // Do nothing here. All actions are in ajaxSubmitForm. + } + + /** + * Implements the submit handler for the modal dialog AJAX call. + * + * @param array $form + * Render array representing from. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * Current form state. + * + * @return \Drupal\Core\Ajax\AjaxResponse + * Array of AJAX commands to execute on submit of the modal form. + */ + public function ajaxSubmitForm(array &$form, FormStateInterface $form_state) { + + // We begin building a new ajax response. + $response = new AjaxResponse(); + $uuid = $form_state->getBuildInfo()['args'][2]; + + if ($form_state->getTriggeringElement()['#value']->__toString() == 'Close') { + // Close the modal and remove the new class if it exists. + $response->addCommand(new CloseModalDialogCommand()); + $response->addCommand(new InvokeCommand("tr[data-uuid='$uuid']", 'removeClass', ['new-item'])); + return $response; + } + else { + + // We don't want any messages that were added by submitForm(). + $this + ->messenger() + ->deleteAll(); + + // Fetch the item using the arguments passed in $form_state. + $this->fetchItem($form_state); + + // Render messages and update options to remove the `no-close` class. + $messages = StatusMessages::renderMessages(); + $options = array_merge(static::getDataDialogOptions(), ['classes' => ['ui-dialog-titlebar-close' => '']]); + + // Update the parent form. + $response->addCommand(new InvokeCommand( + "tr[data-uuid='$uuid']", 'addClass', ['disabled'])); + $response->addCommand(new InvokeCommand( + "tr[data-uuid='$uuid']", 'removeClass', ['new-item'])); + $response->addCommand(new InvokeCommand( + "tr[data-uuid='$uuid'] input[type=checkbox]", + 'attr', + ['disabled', 'true'] + )); + $response->addCommand(new InvokeCommand( + "tr[data-uuid='$uuid'] a.button", 'addClass', ['is-disabled'])); + $response->addCommand(new InvokeCommand( + "tr[data-uuid='$uuid'] a.button", 'text', [$this->t('Added')])); + $response->addCommand(new OpenModalDialogCommand( + 'Fetched', $messages, $options)); + } + + // Finally return our response. + return $response; + } + + /** + * Get item info from form and fetch it. + */ + public function fetchItem(FormStateInterface $form_state) { + $url = $form_state->getBuildInfo()['args'][0]['#server']; + $uuid = $form_state->getBuildInfo()['args'][2]; + $type = $form_state->getBuildInfo()['args'][1]; + + return $this->processItem($url, $uuid, $type); + } + + /** + * Processor for batch operations. + */ + public function processItem($url, $uuid, $type) { + $instance = $this->sharedSourceTypeManager->createInstance($type); + $instance->saveFromSource($url, $uuid); + } + +} diff --git a/modules/openy_gc_shared_content/src/Plugin/SharedContentSourceType/VirtualYBlogPost.php b/modules/openy_gc_shared_content/src/Plugin/SharedContentSourceType/VirtualYBlogPost.php index 771d990c7..cab8c801c 100644 --- a/modules/openy_gc_shared_content/src/Plugin/SharedContentSourceType/VirtualYBlogPost.php +++ b/modules/openy_gc_shared_content/src/Plugin/SharedContentSourceType/VirtualYBlogPost.php @@ -21,7 +21,7 @@ class VirtualYBlogPost extends SharedContentSourceTypeBase { */ public function getTeaserJsonApiQueryArgs() { return [ - 'sort[sortByDate][path]' => 'created', + 'sort[sortByDate][path]' => 'changed', 'sort[sortByDate][direction]' => 'DESC', 'filter[status]' => 1, 'filter[field_gc_share]' => 1, diff --git a/modules/openy_gc_shared_content/src/SharedContentSourceTypeBase.php b/modules/openy_gc_shared_content/src/SharedContentSourceTypeBase.php index 01bb309ab..ee07d93f0 100644 --- a/modules/openy_gc_shared_content/src/SharedContentSourceTypeBase.php +++ b/modules/openy_gc_shared_content/src/SharedContentSourceTypeBase.php @@ -423,9 +423,8 @@ public function saveFromSource($url, $uuid) { $entity->set('field_gc_origin', $url); $entity->save(); - $this->messenger()->addStatus($this->t('Entity {@type:@bundle} "@title" was fetched to site.', [ - '@type' => $this->getEntityType(), - '@bundle' => $this->getEntityBundle(), + $this->messenger()->addStatus($this->t('The @label "@title" was fetched to the site.', [ + '@label' => $this->getLabel(), '@title' => $entity->get('title')->value, ])); return TRUE; diff --git a/openy_gated_content.info.yml b/openy_gated_content.info.yml index 3254d81b6..4728a4eec 100644 --- a/openy_gated_content.info.yml +++ b/openy_gated_content.info.yml @@ -2,11 +2,11 @@ name: Virtual Y Base type: module description: 'Virtual Y base module.' package: Open Y Virtual YMCA -version: 1.6 -core: 8.x +version: 1.6.1 core_version_requirement: ^8 || ^9 dependencies: - drupal:openy_system - drupal:openy_gc_auth - drupal:jsonapi - drupal:openy_gc_storage + - drupal:views_data_export diff --git a/openy_gated_content.install b/openy_gated_content.install index 2e806d0a6..c53b76392 100644 --- a/openy_gated_content.install +++ b/openy_gated_content.install @@ -31,6 +31,20 @@ function openy_gated_content_install() { } } +/** + * Implements hook_update_dependencies(). + */ +function openy_gated_content_update_dependencies() { + // Run openy_gated_content_update_8022 after colorapi enabled. + $dependencies['openy_gated_content'] = [ + 8022 => [ + 'openy_txnm_color' => 8005, + ], + ]; + + return $dependencies; +} + /** * Add virtual_ymca_editor user role. */ @@ -97,8 +111,10 @@ function openy_gated_content_update_8004() { * Remove field_link_to_gated_content_app completely. */ function openy_gated_content_update_8005() { - FieldConfig::loadByName('paragraph', 'gated_content_login', 'field_link_to_gated_content_app')->delete(); - FieldStorageConfig::loadByName('paragraph', 'field_link_to_gated_content_app')->delete(); + FieldConfig::loadByName('paragraph', 'gated_content_login', 'field_link_to_gated_content_app') + ->delete(); + FieldStorageConfig::loadByName('paragraph', 'field_link_to_gated_content_app') + ->delete(); } /** @@ -459,3 +475,52 @@ function openy_gated_content_update_8021() { $persistent_map->setMultiple($map); } + +/** + * Enable views_data_export. + */ +function openy_gated_content_update_8022() { + \Drupal::service('module_installer')->install(['views_data_export'], TRUE); +} + +/** + * Add Virtual Y User logs views. + */ +function openy_gated_content_update_8023() { + $path = drupal_get_path('module', 'openy_gated_content') . '/config/install/'; + $config_importer = \Drupal::service('config_import.importer'); + $config_importer->setDirectory($path); + $config_importer->importConfigs(['views.view.virtual_y_users_log']); +} + +/** + * Install initial settings for the welcome email. + */ +function openy_gated_content_update_8024() { + $config_dir = drupal_get_path('module', 'openy_gated_content'); + $config_dir .= '/config/install/'; + $config_importer = \Drupal::service('openy_upgrade_tool.importer'); + $config_importer->setDirectory($config_dir); + $config_importer->importConfigs([ + 'openy_gated_content.welcome_email_settings', + ]); +} + +/** + * Set Top Items Visibility Default Settings. + */ +function openy_gated_content_update_8025() { + $config_updater = \Drupal::service('openy_upgrade_tool.param_updater'); + $config_dir = drupal_get_path('module', 'openy_gated_content') . '/config/install/'; + $config_name = 'openy_gated_content.settings'; + $config = $config_dir . $config_name . '.yml'; + $config_updater->update($config, $config_name, 'menu_config'); + $components = [ + 'schedule', + 'favorites', + 'categories', + ]; + foreach ($components as $id) { + $config_updater->update($config, $config_name, "menu_config.$id"); + } +} diff --git a/openy_gated_content.links.action.yml b/openy_gated_content.links.action.yml new file mode 100644 index 000000000..8ad644875 --- /dev/null +++ b/openy_gated_content.links.action.yml @@ -0,0 +1,5 @@ +openy_gated_content.test_welcome_email: + route_name: openy_gated_content.test_welcome_email + title: 'Test welcome email' + appears_on: + - openy_gated_content.welcome_email_settings diff --git a/openy_gated_content.links.menu.yml b/openy_gated_content.links.menu.yml index ebde6ca26..ff7a2e97e 100644 --- a/openy_gated_content.links.menu.yml +++ b/openy_gated_content.links.menu.yml @@ -79,6 +79,13 @@ openy_gated_content.settings: parent: openy_gated_content.openy weight: 20 +openy_gated_content.welcome_email_settings: + title: 'Welcome email settings' + route_name: openy_gated_content.welcome_email_settings + description: 'Virtual YMCA welcome email settings form.' + parent: openy_gated_content.settings + weight: 30 + openy_gated_content.taxonomy: title: 'Taxonomy' route_name: openy_gated_content.taxonomy_config diff --git a/openy_gated_content.links.task.yml b/openy_gated_content.links.task.yml new file mode 100644 index 000000000..d6d4edfee --- /dev/null +++ b/openy_gated_content.links.task.yml @@ -0,0 +1,9 @@ +openy_gated_content.settings: + title: 'Virtual YMCA Settings' + route_name: openy_gated_content.settings + base_route: openy_gated_content.settings +openy_gated_content.welcome_email_settings: + title: 'Welcome email settings' + route_name: openy_gated_content.welcome_email_settings + base_route: openy_gated_content.settings + weight: 100 diff --git a/openy_gated_content.module b/openy_gated_content.module index 16784d29b..a300b2798 100644 --- a/openy_gated_content.module +++ b/openy_gated_content.module @@ -366,6 +366,21 @@ function openy_gated_content_user_pass_validation(array &$form, FormStateInterfa } } +/** + * Implements hook_mail(). + */ +function openy_gated_content_mail($key, &$message, $params) { + switch ($key) { + case 'welcome_email': + $token = \Drupal::token(); + $config = \Drupal::config('openy_gated_content.welcome_email_settings'); + $message['from'] = \Drupal::config('system.site')->get('mail'); + $message['subject'] = $token->replace($config->get('email_subject'), $params); + $message['body'][] = $token->replace($config->get('email_body'), $params); + break; + } +} + /** * Make sure the terms do not have 2nd level of hierarchy. */ diff --git a/openy_gated_content.routing.yml b/openy_gated_content.routing.yml index 5d249beba..6600a4fb8 100644 --- a/openy_gated_content.routing.yml +++ b/openy_gated_content.routing.yml @@ -22,6 +22,22 @@ openy_gated_content.settings: requirements: _permission: 'administer gated content configuration' +openy_gated_content.welcome_email_settings: + path: '/admin/openy/virtual-ymca/welcome-email-settings' + defaults: + _form: '\Drupal\openy_gated_content\Form\WelcomeEmailSettingsForm' + _title: 'Virtual Y welcome email settings' + requirements: + _permission: 'administer gated content configuration' + +openy_gated_content.test_welcome_email: + path: '/admin/openy/virtual-ymca/welcome-email-settings/test' + defaults: + _form: '\Drupal\openy_gated_content\Form\TestWelcomeEmail' + _title: 'Test Virtual Y welcome email' + requirements: + _permission: 'administer gated content configuration' + openy_gated_content.categories.list: path: '/api/categories-list' defaults: diff --git a/openy_gated_content.services.yml b/openy_gated_content.services.yml index 37ec6d2c2..9da284c92 100644 --- a/openy_gated_content.services.yml +++ b/openy_gated_content.services.yml @@ -6,11 +6,16 @@ services: - { name: 'event_subscriber' } openy_gated_content.user_service: class: '\Drupal\openy_gated_content\GCUserService' - arguments: ['@entity_type.manager'] + arguments: ['@entity_type.manager', '@plugin.manager.mail', '@language_manager'] openy_gated_content.route_subscriber: class: '\Drupal\openy_gated_content\EventSubscriber\RouteSubscriber' tags: - { name: event_subscriber } + openy_gated_content.user_login_subscriber: + class: '\Drupal\openy_gated_content\EventSubscriber\GCUserLoginSubscriber' + arguments: ['@openy_gated_content.user_service', '@config.factory', '@plugin.manager.gc_identity_provider'] + tags: + - { name: event_subscriber } # Custom cache bin for favorites controller. cache.vy_favorites: class: Drupal\Core\Cache\CacheBackendInterface diff --git a/src/EventSubscriber/GCUserLoginSubscriber.php b/src/EventSubscriber/GCUserLoginSubscriber.php new file mode 100644 index 000000000..712b8d698 --- /dev/null +++ b/src/EventSubscriber/GCUserLoginSubscriber.php @@ -0,0 +1,97 @@ +gcUserService = $gcUserService; + $this->configFactory = $configFactory; + $this->authManager = $auth_manager; + } + + /** + * {@inheritdoc} + */ + public static function getSubscribedEvents() { + return [ + GCUserLoginEvent::EVENT_NAME => 'onUserLogin', + ]; + } + + /** + * Subscribe to the GC user login event dispatched. + * + * @param \Drupal\openy_gc_auth\Event\GCUserLoginEvent $event + * Event object. + */ + public function onUserLogin(GCUserLoginEvent $event) { + if (!($event->account instanceof AccountInterface)) { + return; + } + if ($event->account->getLastAccessedTime() > 0) { + return; + } + $welcome_email_config = $this->configFactory->get('openy_gated_content.welcome_email_settings'); + if (!$welcome_email_config->get('enabled')) { + return; + } + $gc_auth_config = $this->configFactory->get('openy_gc_auth.settings'); + $active_provider = $gc_auth_config->get('active_provider'); + $plugin_definition = $this->authManager->getDefinition($active_provider, TRUE); + if (!$plugin_definition) { + return; + } + /** @var \Drupal\openy_gc_auth\GCIdentityProviderInterface $plugin_instance */ + $plugin_instance = $this->authManager->createInstance($active_provider); + $plugin_instance->sendWelcomeEmail($event->account); + } + +} diff --git a/src/EventSubscriber/GatedContentSubscriber.php b/src/EventSubscriber/GatedContentSubscriber.php index 1ceb7ce9b..cee3b4188 100644 --- a/src/EventSubscriber/GatedContentSubscriber.php +++ b/src/EventSubscriber/GatedContentSubscriber.php @@ -6,8 +6,8 @@ use Drupal\Core\Cache\CacheableResponseInterface; use Drupal\Core\Session\AccountProxyInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\KernelEvents; @@ -36,10 +36,10 @@ public function __construct(AccountProxyInterface $user) { /** * Check Access to Virtual Y contend entities pages. * - * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event - * The GetResponseEvent to process. + * @param \Symfony\Component\HttpKernel\Event\RequestEvent $event + * The RequestEvent to process. */ - public function accessCheck(GetResponseEvent $event) { + public function accessCheck(RequestEvent $event) { $request = $event->getRequest(); $route_name = $request->get('_route'); $protected_routes = [ @@ -86,10 +86,10 @@ public function accessCheck(GetResponseEvent $event) { /** * Adds a cache context for x-shared-referer header. * - * @param \Symfony\Component\HttpKernel\Event\FilterResponseEvent $event + * @param \Symfony\Component\HttpKernel\Event\ResponseEvent $event * The event to process. */ - public function onRespond(FilterResponseEvent $event) { + public function onRespond(ResponseEvent $event) { if (!$event->isMasterRequest() || !$this->currentUser->isAnonymous()) { return; } diff --git a/src/Form/GCSettingsForm.php b/src/Form/GCSettingsForm.php index 49036a911..37b01a973 100644 --- a/src/Form/GCSettingsForm.php +++ b/src/Form/GCSettingsForm.php @@ -150,6 +150,8 @@ public function buildForm(array $form, FormStateInterface $form_state): array { ], ]; + $this->menuVisibilitySettings($form, $config); + $form['actions']['#type'] = 'actions'; $form['actions']['submit'] = [ '#type' => 'submit', @@ -160,6 +162,39 @@ public function buildForm(array $form, FormStateInterface $form_state): array { return $form; } + /** + * Helper method to add menu configs. + * + * @param array $form + * Array of the form configuration to attach the form elements to. + * @param \Drupal\Core\Config\Config $config + * Virtual Y config object. + */ + protected function menuVisibilitySettings(array &$form, Config $config) { + $form['app_settings']['menu_config'] = [ + '#type' => 'fieldset', + '#title' => $this->t('Top Items Visibility Settings'), + 'schedule' => [ + '#title' => $this->t('Hide Schedule'), + '#description' => $this->t("If checked 'Schedule' menu item won't be visible."), + '#type' => 'checkbox', + '#default_value' => $config->get('menu_config.schedule') ?? FALSE, + ], + 'favorites' => [ + '#title' => $this->t('Hide Favorites'), + '#description' => $this->t("If checked 'Favorites' menu item won't be visible."), + '#type' => 'checkbox', + '#default_value' => $config->get('menu_config.favorites') ?? FALSE, + ], + 'categories' => [ + '#title' => $this->t('Hide Categories'), + '#description' => $this->t("If checked 'Categories' menu item won't be visible."), + '#type' => 'checkbox', + '#default_value' => $config->get('menu_config.categories') ?? FALSE, + ], + ]; + } + /** * Helper method that adds form elements for Virtual Y Components. * diff --git a/src/Form/TestWelcomeEmail.php b/src/Form/TestWelcomeEmail.php new file mode 100644 index 000000000..0e6acdc5a --- /dev/null +++ b/src/Form/TestWelcomeEmail.php @@ -0,0 +1,105 @@ +gcUserService = $gc_user_service; + $this->token = $token; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('openy_gated_content.user_service'), + $container->get('token') + ); + } + + /** + * {@inheritdoc} + */ + public function getFormId() { + return 'openy_gc_test_welcome_email'; + } + + /** + * {@inheritdoc} + */ + public function buildForm(array $form, FormStateInterface $form_state) { + $config = $this->config('openy_gated_content.welcome_email_settings'); + $configs_map = [ + 'email_subject' => $this->t('Email subject'), + 'email_body' => $this->t('Email body'), + ]; + + $form['notice'] = [ + '#type' => 'markup', + '#markup' => $this->t('The welcome message will be sent to the email assigned to your account (@mail).', [ + '@mail' => $this->currentUser()->getEmail(), + ]), + ]; + + foreach ($configs_map as $key => $label) { + $value = $this->token->replace($config->get($key), ['user' => $this->currentUser()]); + $form[$key] = [ + '#markup' => '