WordPress Online Booking and Scheduling Plugin – Bookly - Version 17.6

Version Description

Download this release

Release Info

Developer Ladela
Plugin Icon 128x128 WordPress Online Booking and Scheduling Plugin – Bookly
Version 17.6
Comparing to
See all releases

Code changes from version 17.5 to 17.6

Files changed (77) hide show
  1. backend/Backend.php +16 -13
  2. backend/components/dashboard/appointments/Ajax.php +5 -0
  3. backend/components/dashboard/appointments/Widget.php +1 -1
  4. backend/components/dialogs/appointment/delete/Ajax.php +4 -2
  5. backend/components/dialogs/appointment/edit/Ajax.php +65 -33
  6. backend/components/dialogs/appointment/edit/Dialog.php +4 -2
  7. backend/components/dialogs/appointment/edit/resources/js/ng-appointment.js +198 -59
  8. backend/components/dialogs/appointment/edit/templates/edit.php +38 -16
  9. backend/components/dialogs/customer/edit/resources/js/ng-customer.js +0 -4
  10. backend/components/dialogs/notifications/templates/_types.php +1 -1
  11. backend/components/dialogs/payment/Ajax.php +21 -0
  12. backend/components/dialogs/payment/resources/js/ng-payment_details.js +10 -7
  13. backend/components/dialogs/payment/templates/details.php +34 -24
  14. backend/components/dialogs/queue/Dialog.php +36 -0
  15. backend/components/dialogs/queue/resources/js/queue-dialog.js +70 -0
  16. backend/components/dialogs/queue/templates/dialog.php +30 -0
  17. backend/components/dialogs/service/edit/resources/js/service-edit-dialog.js +2 -0
  18. backend/components/dialogs/service/edit/templates/dialog.php +4 -5
  19. backend/components/dialogs/sms/Dialog.php +1 -0
  20. backend/components/dialogs/sms/resources/js/notification-dialog.js +8 -6
  21. backend/components/dialogs/staff/edit/forms/StaffServices.php +1 -1
  22. backend/components/dialogs/staff/edit/resources/js/staff-edit-dialog.js +34 -34
  23. backend/components/dialogs/staff/edit/resources/js/staff-schedule.js +1 -1
  24. backend/components/dialogs/staff/edit/templates/dialog.php +4 -1
  25. backend/components/dialogs/staff/edit/templates/dialog_body.php +3 -3
  26. backend/components/notices/PoweredBy.php +35 -0
  27. backend/components/notices/PoweredByAjax.php +31 -0
  28. backend/components/notices/resources/js/powered-by.js +12 -0
  29. backend/components/notices/templates/powered_by.php +16 -0
  30. backend/modules/appearance/proxy/Pro.php +4 -4
  31. backend/modules/appearance/proxy/ServiceExtras.php +1 -0
  32. backend/modules/appearance/resources/js/appearance.js +18 -4
  33. backend/modules/appearance/templates/_7_payment.php +21 -19
  34. backend/modules/appearance/templates/index.php +2 -1
  35. backend/modules/appointments/Ajax.php +5 -3
  36. backend/modules/appointments/Page.php +2 -1
  37. backend/modules/appointments/resources/js/appointments.js +32 -6
  38. backend/modules/appointments/templates/index.php +7 -4
  39. backend/modules/calendar/Ajax.php +3 -2
  40. backend/modules/calendar/resources/js/calendar-common.js +4 -1
  41. backend/modules/calendar/templates/calendar.php +1 -0
  42. backend/modules/customers/Ajax.php +43 -0
  43. backend/modules/dashboard/resources/js/dashboard.js +1 -1
  44. backend/modules/debug/Ajax.php +131 -28
  45. backend/modules/debug/Page.php +44 -95
  46. backend/modules/debug/lib/QueryBuilder.php +581 -0
  47. backend/modules/debug/lib/Schema.php +110 -0
  48. backend/modules/debug/resources/js/debug.js +112 -33
  49. backend/modules/debug/templates/index.php +78 -19
  50. backend/modules/messages/Ajax.php +1 -1
  51. backend/modules/messages/Page.php +2 -2
  52. backend/modules/notifications/templates/_test_email_modal.php +1 -1
  53. backend/modules/payments/Page.php +3 -2
  54. backend/modules/payments/resources/js/payments.js +29 -8
  55. backend/modules/payments/templates/index.php +7 -5
  56. backend/modules/services/resources/js/services-list.js +12 -14
  57. backend/modules/services/templates/time.php +6 -6
  58. backend/modules/settings/Page.php +1 -0
  59. backend/modules/settings/templates/_generalForm.php +1 -0
  60. backend/modules/shop/Page.php +2 -2
  61. backend/modules/sms/Ajax.php +61 -0
  62. backend/modules/sms/Page.php +8 -31
  63. backend/modules/sms/resources/js/notifications-list.js +4 -2
  64. backend/modules/sms/resources/js/sms.js +2 -2
  65. backend/modules/staff/Ajax.php +0 -60
  66. backend/modules/staff/resources/js/staff-list.js +10 -16
  67. backend/resources/bootstrap/css/bootstrap-theme.min.css +2 -2
  68. backend/resources/css/select2.min.css +1 -1
  69. backend/resources/js/jCal.js +3 -3
  70. backend/resources/js/select2.full.min.js +1 -1
  71. frontend/modules/booking/Ajax.php +108 -65
  72. frontend/modules/booking/templates/7_payment.php +19 -18
  73. frontend/modules/booking/templates/_progress_tracker.php +6 -7
  74. frontend/modules/booking/templates/short_code.php +6 -0
  75. frontend/resources/css/bookly-main.css +11 -0
  76. languages/bookly-ar.mo +0 -0
  77. languages/bookly-ar.po +2370 -0
backend/Backend.php CHANGED
@@ -27,6 +27,8 @@ abstract class Backend
27
  Components\Notices\Nps::render();
28
  // Collect stats notice.
29
  Components\Notices\CollectStats::render();
 
 
30
  }
31
  // Let add-ons render admin notices.
32
  Lib\Proxy\Shared::renderAdminNotices( $bookly_page );
@@ -50,7 +52,8 @@ abstract class Backend
50
  global $current_user, $submenu;
51
 
52
  $is_staff = Lib\Entities\Staff::query()->where( 'wp_user_id', $current_user->ID )->count() > 0;
53
- if ( $current_user->has_cap( 'administrator' ) || $current_user->has_cap( 'manage_bookly_appointments' ) || $is_staff ) {
 
54
  $dynamic_position = '80.0000001' . mt_rand( 1, 1000 ); // position always is under `Settings`
55
  $badge_number = Modules\Messages\Page::getMessagesCount() +
56
  Modules\Shop\Page::getNotSeenCount() +
@@ -79,20 +82,20 @@ abstract class Backend
79
  $appearance = __( 'Appearance', 'bookly' );
80
  $settings = __( 'Settings', 'bookly' );
81
 
82
- add_submenu_page( 'bookly-menu', $dashboard, $dashboard, 'manage_options',
83
  Modules\Dashboard\Page::pageSlug(), function () { Modules\Dashboard\Page::render(); } );
84
  add_submenu_page( 'bookly-menu', $calendar, $calendar, 'read',
85
  Modules\Calendar\Page::pageSlug(), function () { Modules\Calendar\Page::render(); } );
86
- if ( $current_user->has_cap( 'manage_options' ) || $current_user->has_cap( 'manage_bookly_appointments' ) ) {
87
  add_submenu_page( 'bookly-menu', $appointments, $appointments, 'read',
88
  Modules\Appointments\Page::pageSlug(), function () { Modules\Appointments\Page::render(); } );
89
  }
90
  Lib\Proxy\Locations::addBooklyMenuItem();
91
- if ( $current_user->has_cap( 'manage_options' ) || $current_user->has_cap( 'manage_bookly_appointments' ) ) {
92
  Lib\Proxy\Packages::addBooklyMenuItem();
93
  }
94
- if ( $current_user->has_cap( 'administrator' ) ) {
95
- add_submenu_page( 'bookly-menu', $staff_members, $staff_members, 'manage_options',
96
  Modules\Staff\Page::pageSlug(), function () { Modules\Staff\Page::render(); } );
97
  } elseif ( $is_staff ) {
98
  if ( get_option( 'bookly_gen_allow_staff_edit_profile' ) == 1 ) {
@@ -100,33 +103,33 @@ abstract class Backend
100
  Modules\Staff\Page::pageSlug(), function () { Modules\Staff\Page::render(); } );
101
  }
102
  }
103
- add_submenu_page( 'bookly-menu', $services, $services, 'manage_options',
104
  Modules\Services\Page::pageSlug(), function () { Modules\Services\Page::render(); } );
105
  Lib\Proxy\Taxes::addBooklyMenuItem();
106
- if ( $current_user->has_cap( 'manage_options' ) || $current_user->has_cap( 'manage_bookly_appointments' ) ) {
107
  add_submenu_page( 'bookly-menu', $customers, $customers, 'read',
108
  Modules\Customers\Page::pageSlug(), function () { Modules\Customers\Page::render(); } );
109
  }
110
  Lib\Proxy\CustomerInformation::addBooklyMenuItem();
111
  Lib\Proxy\CustomerGroups::addBooklyMenuItem();
112
- add_submenu_page( 'bookly-menu', $notifications, $notifications, 'manage_options',
113
  Modules\Notifications\Page::pageSlug(), function () { Modules\Notifications\Page::render(); } );
114
  Modules\Sms\Page::addBooklyMenuItem();
115
- if ( $current_user->has_cap( 'manage_options' ) || $current_user->has_cap( 'manage_bookly_appointments' ) ) {
116
  add_submenu_page( 'bookly-menu', $payments, $payments, 'read',
117
  Modules\Payments\Page::pageSlug(), function () { Modules\Payments\Page::render(); } );
118
  }
119
- add_submenu_page( 'bookly-menu', $appearance, $appearance, 'manage_options',
120
  Modules\Appearance\Page::pageSlug(), function () { Modules\Appearance\Page::render(); } );
121
  Lib\Proxy\Coupons::addBooklyMenuItem();
122
  Lib\Proxy\CustomFields::addBooklyMenuItem();
123
- add_submenu_page( 'bookly-menu', $settings, $settings, 'manage_options',
124
  Modules\Settings\Page::pageSlug(), function () { Modules\Settings\Page::render(); } );
125
  Modules\Messages\Page::addBooklyMenuItem();
126
  Modules\Shop\Page::addBooklyMenuItem();
127
 
128
  if ( isset ( $_GET['page'] ) && $_GET['page'] == 'bookly-debug' ) {
129
- add_submenu_page( 'bookly-menu', 'Debug', 'Debug', 'manage_options',
130
  Modules\Debug\Page::pageSlug(), function () { Modules\Debug\Page::render(); } );
131
  }
132
  if ( ! Lib\Config::proActive() ) {
27
  Components\Notices\Nps::render();
28
  // Collect stats notice.
29
  Components\Notices\CollectStats::render();
30
+ // Show Powered by Bookly notice.
31
+ Components\Notices\PoweredBy::render();
32
  }
33
  // Let add-ons render admin notices.
34
  Lib\Proxy\Shared::renderAdminNotices( $bookly_page );
52
  global $current_user, $submenu;
53
 
54
  $is_staff = Lib\Entities\Staff::query()->where( 'wp_user_id', $current_user->ID )->count() > 0;
55
+ $required_capability = Lib\Utils\Common::getRequiredCapability();
56
+ if ( $current_user->has_cap( $required_capability ) || $current_user->has_cap( 'manage_bookly_appointments' ) || $is_staff ) {
57
  $dynamic_position = '80.0000001' . mt_rand( 1, 1000 ); // position always is under `Settings`
58
  $badge_number = Modules\Messages\Page::getMessagesCount() +
59
  Modules\Shop\Page::getNotSeenCount() +
82
  $appearance = __( 'Appearance', 'bookly' );
83
  $settings = __( 'Settings', 'bookly' );
84
 
85
+ add_submenu_page( 'bookly-menu', $dashboard, $dashboard, $required_capability,
86
  Modules\Dashboard\Page::pageSlug(), function () { Modules\Dashboard\Page::render(); } );
87
  add_submenu_page( 'bookly-menu', $calendar, $calendar, 'read',
88
  Modules\Calendar\Page::pageSlug(), function () { Modules\Calendar\Page::render(); } );
89
+ if ( $current_user->has_cap( $required_capability ) || $current_user->has_cap( 'manage_bookly_appointments' ) ) {
90
  add_submenu_page( 'bookly-menu', $appointments, $appointments, 'read',
91
  Modules\Appointments\Page::pageSlug(), function () { Modules\Appointments\Page::render(); } );
92
  }
93
  Lib\Proxy\Locations::addBooklyMenuItem();
94
+ if ( $current_user->has_cap( $required_capability ) || $current_user->has_cap( 'manage_bookly_appointments' ) ) {
95
  Lib\Proxy\Packages::addBooklyMenuItem();
96
  }
97
+ if ( $current_user->has_cap( $required_capability ) ) {
98
+ add_submenu_page( 'bookly-menu', $staff_members, $staff_members, $required_capability,
99
  Modules\Staff\Page::pageSlug(), function () { Modules\Staff\Page::render(); } );
100
  } elseif ( $is_staff ) {
101
  if ( get_option( 'bookly_gen_allow_staff_edit_profile' ) == 1 ) {
103
  Modules\Staff\Page::pageSlug(), function () { Modules\Staff\Page::render(); } );
104
  }
105
  }
106
+ add_submenu_page( 'bookly-menu', $services, $services, $required_capability,
107
  Modules\Services\Page::pageSlug(), function () { Modules\Services\Page::render(); } );
108
  Lib\Proxy\Taxes::addBooklyMenuItem();
109
+ if ( $current_user->has_cap( $required_capability ) || $current_user->has_cap( 'manage_bookly_appointments' ) ) {
110
  add_submenu_page( 'bookly-menu', $customers, $customers, 'read',
111
  Modules\Customers\Page::pageSlug(), function () { Modules\Customers\Page::render(); } );
112
  }
113
  Lib\Proxy\CustomerInformation::addBooklyMenuItem();
114
  Lib\Proxy\CustomerGroups::addBooklyMenuItem();
115
+ add_submenu_page( 'bookly-menu', $notifications, $notifications, $required_capability,
116
  Modules\Notifications\Page::pageSlug(), function () { Modules\Notifications\Page::render(); } );
117
  Modules\Sms\Page::addBooklyMenuItem();
118
+ if ( $current_user->has_cap( $required_capability ) || $current_user->has_cap( 'manage_bookly_appointments' ) ) {
119
  add_submenu_page( 'bookly-menu', $payments, $payments, 'read',
120
  Modules\Payments\Page::pageSlug(), function () { Modules\Payments\Page::render(); } );
121
  }
122
+ add_submenu_page( 'bookly-menu', $appearance, $appearance, $required_capability,
123
  Modules\Appearance\Page::pageSlug(), function () { Modules\Appearance\Page::render(); } );
124
  Lib\Proxy\Coupons::addBooklyMenuItem();
125
  Lib\Proxy\CustomFields::addBooklyMenuItem();
126
+ add_submenu_page( 'bookly-menu', $settings, $settings, $required_capability,
127
  Modules\Settings\Page::pageSlug(), function () { Modules\Settings\Page::render(); } );
128
  Modules\Messages\Page::addBooklyMenuItem();
129
  Modules\Shop\Page::addBooklyMenuItem();
130
 
131
  if ( isset ( $_GET['page'] ) && $_GET['page'] == 'bookly-debug' ) {
132
+ add_submenu_page( 'bookly-menu', 'Debug', 'Debug', $required_capability,
133
  Modules\Debug\Page::pageSlug(), function () { Modules\Debug\Page::render(); } );
134
  }
135
  if ( ! Lib\Config::proActive() ) {
backend/components/dashboard/appointments/Ajax.php CHANGED
@@ -49,6 +49,8 @@ class Ajax extends Lib\Base\Ajax
49
  ->whereBetween( 'ca.created', $start->format( 'Y-m-d' ), $end->format( 'Y-m-d' ) )
50
  ->groupBy( 'DATE(ca.created), p.id, ca.status' )
51
  ->fetchArray();
 
 
52
  // Consider payment for all appointments only 1 time
53
  $payment_ids = array();
54
  foreach ( $records as $record ) {
@@ -63,6 +65,9 @@ class Ajax extends Lib\Base\Ajax
63
  }
64
  if ( array_key_exists( $status, $data['totals'] ) ) {
65
  $data['totals'][ $status ] += $quantity;
 
 
 
66
  }
67
  $data['totals']['total'] += $quantity;
68
  $data['totals']['revenue'] += $revenue;
49
  ->whereBetween( 'ca.created', $start->format( 'Y-m-d' ), $end->format( 'Y-m-d' ) )
50
  ->groupBy( 'DATE(ca.created), p.id, ca.status' )
51
  ->fetchArray();
52
+
53
+ $custom_statuses = (array) Lib\Proxy\CustomStatuses::getAll();
54
  // Consider payment for all appointments only 1 time
55
  $payment_ids = array();
56
  foreach ( $records as $record ) {
65
  }
66
  if ( array_key_exists( $status, $data['totals'] ) ) {
67
  $data['totals'][ $status ] += $quantity;
68
+ } elseif ( isset ( $custom_statuses[ $status ] ) && $custom_statuses[ $status ]->getBusy() ) {
69
+ // Consider as APPROVED.
70
+ $data['totals']['approved'] += $quantity;
71
  }
72
  $data['totals']['total'] += $quantity;
73
  $data['totals']['revenue'] += $revenue;
backend/components/dashboard/appointments/Widget.php CHANGED
@@ -14,7 +14,7 @@ class Widget extends Lib\Base\Component
14
  /** @var \WP_User $current_user */
15
  global $current_user;
16
 
17
- if ( $current_user && $current_user->has_cap( 'manage_options' ) ) {
18
  $class = __CLASS__;
19
  add_action( 'wp_dashboard_setup', function () use ( $class ) {
20
  wp_add_dashboard_widget( strtolower( str_replace( '\\', '-', $class ) ), 'Bookly - ' . __( 'Appointments', 'bookly' ), array( $class, 'renderWidget' ) );
14
  /** @var \WP_User $current_user */
15
  global $current_user;
16
 
17
+ if ( $current_user && $current_user->has_cap( Lib\Utils\Common::getRequiredCapability() ) ) {
18
  $class = __CLASS__;
19
  add_action( 'wp_dashboard_setup', function () use ( $class ) {
20
  wp_add_dashboard_widget( strtolower( str_replace( '\\', '-', $class ) ), 'Bookly - ' . __( 'Appointments', 'bookly' ), array( $class, 'renderWidget' ) );
backend/components/dialogs/appointment/delete/Ajax.php CHANGED
@@ -25,6 +25,8 @@ class Ajax extends Lib\Base\Ajax
25
  $appointment_id = self::parameter( 'appointment_id' );
26
  $reason = self::parameter( 'reason' );
27
 
 
 
28
  if ( self::parameter( 'notify' ) ) {
29
  $ca_list = Lib\Entities\CustomerAppointment::query()
30
  ->where( 'appointment_id', $appointment_id )
@@ -51,12 +53,12 @@ class Ajax extends Lib\Base\Ajax
51
  $ca->setStatus( Lib\Entities\CustomerAppointment::STATUS_REJECTED );
52
  }
53
  }
54
- Lib\Notifications\Booking\Sender::sendForCA( $ca, null, array( 'cancellation_reason' => $reason ) );
55
  }
56
  }
57
 
58
  Lib\Entities\Appointment::find( $appointment_id )->delete();
59
 
60
- wp_send_json_success();
61
  }
62
  }
25
  $appointment_id = self::parameter( 'appointment_id' );
26
  $reason = self::parameter( 'reason' );
27
 
28
+ $queue = array();
29
+
30
  if ( self::parameter( 'notify' ) ) {
31
  $ca_list = Lib\Entities\CustomerAppointment::query()
32
  ->where( 'appointment_id', $appointment_id )
53
  $ca->setStatus( Lib\Entities\CustomerAppointment::STATUS_REJECTED );
54
  }
55
  }
56
+ Lib\Notifications\Booking\Sender::sendForCA( $ca, null, array( 'cancellation_reason' => $reason ), false, $queue );
57
  }
58
  }
59
 
60
  Lib\Entities\Appointment::find( $appointment_id )->delete();
61
 
62
+ wp_send_json_success( compact( 'queue' ) );
63
  }
64
  }
backend/components/dialogs/appointment/edit/Ajax.php CHANGED
@@ -55,6 +55,7 @@ class Ajax extends Lib\Base\Ajax
55
  ),
56
  'extras_consider_duration' => (int) Lib\Proxy\ServiceExtras::considerDuration( true ),
57
  'extras_multiply_nop' => (int) get_option( 'bookly_service_extras_multiply_nop', 1 ),
 
58
  );
59
 
60
  // Staff list.
@@ -127,20 +128,25 @@ class Ajax extends Lib\Base\Ajax
127
 
128
  /** @var Lib\Entities\Customer $customer */
129
  // Customers list.
130
- foreach ( Lib\Entities\Customer::query()->sortBy( 'full_name' )->find() as $customer ) {
131
- $name = $customer->getFullName();
132
- if ( $customer->getEmail() != '' || $customer->getPhone() != '' ) {
133
- $name .= ' (' . trim( $customer->getEmail() . ', ' . $customer->getPhone(), ', ' ) . ')';
134
- }
 
 
135
 
136
- $result['customers'][] = array(
137
- 'id' => $customer->getId(),
138
- 'name' => $name,
139
- 'status' => Lib\Proxy\CustomerGroups::prepareDefaultAppointmentStatus( get_option( 'bookly_gen_default_appointment_status' ), $customer->getGroupId() ),
140
- 'custom_fields' => array(),
141
- 'timezone' => Lib\Proxy\Pro::getLastCustomerTimezone( $customer->getId() ),
142
- 'number_of_persons' => 1,
143
- );
 
 
 
144
  }
145
 
146
  // Time list.
@@ -252,8 +258,13 @@ class Ajax extends Lib\Base\Ajax
252
  p.total AS payment_total,
253
  p.type AS payment_type,
254
  p.details AS payment_details,
255
- p.status AS payment_status' )
 
 
 
 
256
  ->leftJoin( 'Payment', 'p', 'p.id = ca.payment_id' )
 
257
  ->where( 'ca.appointment_id', $appointment->getId() )
258
  ->fetchArray();
259
  foreach ( $customers as $customer ) {
@@ -285,6 +296,19 @@ class Ajax extends Lib\Base\Ajax
285
  }
286
  }
287
  $custom_fields = (array) json_decode( $customer['custom_fields'], true );
 
 
 
 
 
 
 
 
 
 
 
 
 
288
  $response['data']['customers'][] = array(
289
  'id' => $customer['customer_id'],
290
  'ca_id' => $customer['id'],
@@ -304,7 +328,8 @@ class Ajax extends Lib\Base\Ajax
304
  'payment_id' => $customer['payment_id'],
305
  'payment_type' => $customer['payment'] != $customer['payment_total'] ? 'partial' : 'full',
306
  'payment_title' => $payment_title,
307
- 'status' => $customer['status'],
 
308
  'timezone' => Lib\Proxy\Pro::getCustomerTimezone( $customer['time_zone'], $customer['time_zone_offset'] ),
309
  );
310
  }
@@ -332,7 +357,7 @@ class Ajax extends Lib\Base\Ajax
332
  $repeat = json_decode( self::parameter( 'repeat', '[]' ), true );
333
  $schedule = self::parameter( 'schedule', array() );
334
  $customers = json_decode( self::parameter( 'customers', '[]' ), true );
335
- $notification = self::parameter( 'notification', 'no' );
336
  $internal_note = self::parameter( 'internal_note' );
337
  $created_from = self::parameter( 'created_from' );
338
 
@@ -409,6 +434,7 @@ class Ajax extends Lib\Base\Ajax
409
  if ( ! isset ( $response['errors'] ) ) {
410
  $duration = Lib\Slots\DatePoint::fromStr( $end_date )->diff( Lib\Slots\DatePoint::fromStr( $start_date ) );
411
  if ( ! $skip_date && $repeat['enabled'] ) {
 
412
  // Series.
413
  if ( ! empty ( $schedule ) ) {
414
  /** @var DataHolders\Order[] $orders */
@@ -433,7 +459,7 @@ class Ajax extends Lib\Base\Ajax
433
  ->save();
434
 
435
  // Create order
436
- if ( $notification != 'no' ) {
437
  $orders[ $customer['id'] ] = DataHolders\Order::create( Lib\Entities\Customer::find( $customer['id'] ) )
438
  ->addItem( 0, DataHolders\Series::create( $series ) );
439
  }
@@ -486,10 +512,10 @@ class Ajax extends Lib\Base\Ajax
486
  Lib\Proxy\Pro::syncGoogleCalendarEvent( $appointment );
487
  // Outlook Calendar.
488
  Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
489
- // Waiting list.
490
- Lib\Proxy\WaitingList::handleParticipantsChange( $appointment );
491
 
492
- if ( $notification != 'no' ) {
 
 
493
  foreach ( $ca_list as $ca ) {
494
  $item = DataHolders\Simple::create( $ca )
495
  ->setService( $service )
@@ -503,13 +529,14 @@ class Ajax extends Lib\Base\Ajax
503
  Proxy\RecurringAppointments::createBackendPayment( $series, $customer );
504
  }
505
  }
506
- if ( $notification != 'no' ) {
507
  foreach ( $orders as $order ) {
508
- Lib\Notifications\Booking\Sender::sendForOrder( $order, array(), $notification == 'all' );
509
  }
510
  }
511
  }
512
  $response['success'] = true;
 
513
  $response['data'] = array( 'staffId' => $staff_id ); // make FullCalendar refetch events
514
  } else {
515
  // Single appointment.
@@ -546,28 +573,31 @@ class Ajax extends Lib\Base\Ajax
546
  Lib\Proxy\Pro::syncGoogleCalendarEvent( $appointment );
547
  // Outlook Calendar.
548
  Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
549
- // Waiting list.
550
- Lib\Proxy\WaitingList::handleParticipantsChange( $appointment );
 
551
 
552
  // Send notifications.
553
- if ( $notification == 'changed_status' ) {
554
- foreach ( $ca_status_changed as $ca ) {
555
- Lib\Notifications\Booking\Sender::sendForCA( $ca, $appointment );
556
- }
557
- } elseif ( $notification == 'all' ) {
558
  $ca_list = $appointment->getCustomerAppointments( true );
559
  foreach ( $ca_status_changed as $ca ) {
560
- // The value "just_created" was initialized for the objects of this array
561
- Lib\Notifications\Booking\Sender::sendForCA( $ca, $appointment, array(), true );
 
 
562
  unset( $ca_list[ $ca->getId() ] );
563
  }
564
  foreach ( $ca_list as $ca ) {
565
- Lib\Notifications\Booking\Sender::sendForCA( $ca, $appointment, array(), true );
566
  }
567
  }
568
 
569
  $response['success'] = true;
570
  $response['data'] = self::_getAppointmentForFC( $staff_id, $appointment->getId() );
 
571
  } else {
572
  $response['errors'] = array( 'db' => __( 'Could not save appointment in database.', 'bookly' ) );
573
  }
@@ -825,10 +855,12 @@ class Ajax extends Lib\Base\Ajax
825
  // Check customers for appointments limit
826
  foreach ( $customers as $index => $customer ) {
827
  if ( $service->appointmentsLimitReached( $customer['id'], array( $start_date ) ) ) {
828
- $customer_error = Lib\Entities\Customer::find( $customer['id'] );
829
  $result['customers_appointments_limit'][] = sprintf( __( '%s has reached the limit of bookings for this service', 'bookly' ), $customer_error->getFullName() );
830
  }
831
  }
 
 
832
  }
833
  }
834
 
55
  ),
56
  'extras_consider_duration' => (int) Lib\Proxy\ServiceExtras::considerDuration( true ),
57
  'extras_multiply_nop' => (int) get_option( 'bookly_service_extras_multiply_nop', 1 ),
58
+ 'customer_gr_def_app_status' => Lib\Proxy\CustomerGroups::prepareDefaultAppointmentStatuses( array( 0 => get_option( 'bookly_gen_default_appointment_status' ) ) ),
59
  );
60
 
61
  // Staff list.
128
 
129
  /** @var Lib\Entities\Customer $customer */
130
  // Customers list.
131
+ $customers_count = Lib\Entities\Customer::query( 'c' )->count();
132
+ if ( $customers_count < Lib\Entities\Customer::REMOTE_LIMIT ) {
133
+ foreach ( Lib\Entities\Customer::query()->sortBy( 'full_name' )->find() as $customer ) {
134
+ $name = $customer->getFullName();
135
+ if ( $customer->getEmail() != '' || $customer->getPhone() != '' ) {
136
+ $name .= ' (' . trim( $customer->getEmail() . ', ' . $customer->getPhone(), ', ' ) . ')';
137
+ }
138
 
139
+ $result['customers'][] = array(
140
+ 'id' => $customer->getId(),
141
+ 'name' => $name,
142
+ 'group_id' => $customer->getGroupId(),
143
+ 'custom_fields' => array(),
144
+ 'timezone' => Lib\Proxy\Pro::getLastCustomerTimezone( $customer->getId() ),
145
+ 'number_of_persons' => 1,
146
+ );
147
+ }
148
+ } else {
149
+ $result['customers'] = false;
150
  }
151
 
152
  // Time list.
258
  p.total AS payment_total,
259
  p.type AS payment_type,
260
  p.details AS payment_details,
261
+ p.status AS payment_status,
262
+ c.full_name,
263
+ c.email,
264
+ c.phone,
265
+ c.group_id')
266
  ->leftJoin( 'Payment', 'p', 'p.id = ca.payment_id' )
267
+ ->leftJoin( 'Customer', 'c', 'c.id = ca.customer_id' )
268
  ->where( 'ca.appointment_id', $appointment->getId() )
269
  ->fetchArray();
270
  foreach ( $customers as $customer ) {
296
  }
297
  }
298
  $custom_fields = (array) json_decode( $customer['custom_fields'], true );
299
+ $name = $customer['full_name'];
300
+ if ( $customer['email'] != '' || $customer['phone'] != '' ) {
301
+ $name .= ' (' . trim( $customer['email'] . ', ' . $customer['phone'], ', ' ) . ')';
302
+ }
303
+ $response['data']['customers_data'][] = array(
304
+ 'id' => $customer['customer_id'],
305
+ 'name' => $name,
306
+ 'group_id' => $customer['group_id'],
307
+ 'status' => $customer['status'],
308
+ 'custom_fields' => array(),
309
+ 'timezone' => Lib\Proxy\Pro::getLastCustomerTimezone( $customer['customer_id'] ),
310
+ 'number_of_persons' => 1,
311
+ );
312
  $response['data']['customers'][] = array(
313
  'id' => $customer['customer_id'],
314
  'ca_id' => $customer['id'],
328
  'payment_id' => $customer['payment_id'],
329
  'payment_type' => $customer['payment'] != $customer['payment_total'] ? 'partial' : 'full',
330
  'payment_title' => $payment_title,
331
+ 'group_id' => $customer['group_id'],
332
+ 'status' => $customer['status'],
333
  'timezone' => Lib\Proxy\Pro::getCustomerTimezone( $customer['time_zone'], $customer['time_zone_offset'] ),
334
  );
335
  }
357
  $repeat = json_decode( self::parameter( 'repeat', '[]' ), true );
358
  $schedule = self::parameter( 'schedule', array() );
359
  $customers = json_decode( self::parameter( 'customers', '[]' ), true );
360
+ $notification = self::parameter( 'notification', false );
361
  $internal_note = self::parameter( 'internal_note' );
362
  $created_from = self::parameter( 'created_from' );
363
 
434
  if ( ! isset ( $response['errors'] ) ) {
435
  $duration = Lib\Slots\DatePoint::fromStr( $end_date )->diff( Lib\Slots\DatePoint::fromStr( $start_date ) );
436
  if ( ! $skip_date && $repeat['enabled'] ) {
437
+ $queue = array();
438
  // Series.
439
  if ( ! empty ( $schedule ) ) {
440
  /** @var DataHolders\Order[] $orders */
459
  ->save();
460
 
461
  // Create order
462
+ if ( $notification ) {
463
  $orders[ $customer['id'] ] = DataHolders\Order::create( Lib\Entities\Customer::find( $customer['id'] ) )
464
  ->addItem( 0, DataHolders\Series::create( $series ) );
465
  }
512
  Lib\Proxy\Pro::syncGoogleCalendarEvent( $appointment );
513
  // Outlook Calendar.
514
  Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
 
 
515
 
516
+ if ( $notification ) {
517
+ // Waiting list.
518
+ Lib\Proxy\WaitingList::handleParticipantsChange( $queue, $appointment );
519
  foreach ( $ca_list as $ca ) {
520
  $item = DataHolders\Simple::create( $ca )
521
  ->setService( $service )
529
  Proxy\RecurringAppointments::createBackendPayment( $series, $customer );
530
  }
531
  }
532
+ if ( $notification ) {
533
  foreach ( $orders as $order ) {
534
+ Lib\Notifications\Booking\Sender::sendForOrder( $order, array(), $notification == 'all', $queue );
535
  }
536
  }
537
  }
538
  $response['success'] = true;
539
+ $response['queue'] = array( 'all' => $queue, 'changed_status' => array() );
540
  $response['data'] = array( 'staffId' => $staff_id ); // make FullCalendar refetch events
541
  } else {
542
  // Single appointment.
573
  Lib\Proxy\Pro::syncGoogleCalendarEvent( $appointment );
574
  // Outlook Calendar.
575
  Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
576
+
577
+ $queue_changed_status = array();
578
+ $queue = array();
579
 
580
  // Send notifications.
581
+ if ( $notification ) {
582
+ // Waiting list.
583
+ $queue = Lib\Proxy\WaitingList::handleParticipantsChange( $queue, $appointment );
584
+
 
585
  $ca_list = $appointment->getCustomerAppointments( true );
586
  foreach ( $ca_status_changed as $ca ) {
587
+ if ( $appointment_id ) {
588
+ Lib\Notifications\Booking\Sender::sendForCA( $ca, $appointment, array(), false, $queue_changed_status );
589
+ }
590
+ Lib\Notifications\Booking\Sender::sendForCA( $ca, $appointment, array(), true, $queue );
591
  unset( $ca_list[ $ca->getId() ] );
592
  }
593
  foreach ( $ca_list as $ca ) {
594
+ Lib\Notifications\Booking\Sender::sendForCA( $ca, $appointment, array(), true, $queue );
595
  }
596
  }
597
 
598
  $response['success'] = true;
599
  $response['data'] = self::_getAppointmentForFC( $staff_id, $appointment->getId() );
600
+ $response['queue'] = array( 'all' => $queue, 'changed_status' => $queue_changed_status );
601
  } else {
602
  $response['errors'] = array( 'db' => __( 'Could not save appointment in database.', 'bookly' ) );
603
  }
855
  // Check customers for appointments limit
856
  foreach ( $customers as $index => $customer ) {
857
  if ( $service->appointmentsLimitReached( $customer['id'], array( $start_date ) ) ) {
858
+ $customer_error = Lib\Entities\Customer::find( $customer['id'] );
859
  $result['customers_appointments_limit'][] = sprintf( __( '%s has reached the limit of bookings for this service', 'bookly' ), $customer_error->getFullName() );
860
  }
861
  }
862
+
863
+ $result['customers_appointments_limit'] = array_unique( $result['customers_appointments_limit'] );
864
  }
865
  }
866
 
backend/components/dialogs/appointment/edit/Dialog.php CHANGED
@@ -41,10 +41,12 @@ class Dialog extends Lib\Base\Component
41
  'datePicker' => Lib\Utils\DateTime::datePickerOptions(),
42
  'cf_per_service' => (int) Lib\Config::customFieldsPerService(),
43
  'no_result_found' => __( 'No result found', 'bookly' ),
 
44
  'staff_any' => get_option( 'bookly_l10n_option_employee' ),
45
  'title' => array(
46
- 'edit_appointment' => __( 'Edit appointment', 'bookly' ),
47
- 'new_appointment' => __( 'New appointment', 'bookly' ),
 
48
  ),
49
  ) );
50
 
41
  'datePicker' => Lib\Utils\DateTime::datePickerOptions(),
42
  'cf_per_service' => (int) Lib\Config::customFieldsPerService(),
43
  'no_result_found' => __( 'No result found', 'bookly' ),
44
+ 'searching' => __( 'Searching', 'bookly' ),
45
  'staff_any' => get_option( 'bookly_l10n_option_employee' ),
46
  'title' => array(
47
+ 'edit_appointment' => __( 'Edit appointment', 'bookly' ),
48
+ 'new_appointment' => __( 'New appointment', 'bookly' ),
49
+ 'send_notifications' => __( 'Send notifications', 'bookly' ),
50
  ),
51
  ) );
52
 
backend/components/dialogs/appointment/edit/resources/js/ng-appointment.js CHANGED
@@ -27,6 +27,7 @@
27
  id : null,
28
  staff : null,
29
  staff_any : null,
 
30
  service : null,
31
  custom_service_name : null,
32
  custom_service_price: null,
@@ -53,7 +54,9 @@
53
  customers : [],
54
  notification : null,
55
  series_id : null,
56
- expand_customers_list : false
 
 
57
  },
58
  l10n : {
59
  staff_any: BooklyL10nAppDialog.staff_any
@@ -72,8 +75,87 @@
72
  ds.form.staff = data.staff[0];
73
  }
74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  ds.form.start_time = data.start_time[0];
76
  ds.form.end_time = data.end_time[1];
 
77
  deferred.resolve();
78
  },
79
  'json'
@@ -145,27 +227,31 @@
145
  },
146
  resetCustomers : function() {
147
  ds.data.customers.forEach(function(customer) {
148
- customer.custom_fields = [];
149
- customer.extras = [];
150
- customer.extras_consider_duration = ds.data.extras_consider_duration;
151
- customer.extras_multiply_nop = ds.data.extras_multiply_nop;
152
- customer.number_of_persons = 1;
153
- customer.notes = null;
154
- customer.collaborative_token = null;
155
- customer.collaborative_service = null;
156
- customer.compound_token = null;
157
- customer.compound_service = null;
158
- customer.payment_id = null;
159
- customer.payment_type = null;
160
- customer.payment_title = null;
161
- customer.payment_create = false;
162
- customer.payment_price = null;
163
- customer.payment_tax = null;
164
- customer.package_id = null;
165
- customer.series_id = null;
166
- customer.ca_id = null;
167
  });
168
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
169
  getDataForStartTime : function() {
170
  var result = ds.data.start_time.slice();
171
  if (
@@ -374,7 +460,9 @@
374
  },
375
  customers : [],
376
  internal_note : null,
377
- expand_customers_list : false
 
 
378
  });
379
  $scope.errors = {};
380
  dataSource.setEndTimeBasedOnService();
@@ -405,6 +493,9 @@
405
  staff = $scope.dataSource.findStaff(response.data.staff_id);
406
  $scope.dataSource.data.app_start_time = response.data.start_time;
407
  $scope.dataSource.data.app_end_time = response.data.end_time;
 
 
 
408
  jQuery.extend($scope.form, {
409
  screen : 'main',
410
  id : appointment_id,
@@ -613,19 +704,7 @@
613
  $scope.onRepeatChange();
614
  };
615
 
616
- $scope.onCustomersChange = function(old_customers, old_nop) {
617
- if (dataSource.form.service && dataSource.form.customers.length > old_customers.length) {
618
- var ids = jQuery.map(old_customers, function(customer) {
619
- return customer.id;
620
- });
621
- var nop = dataSource.form.service.capacity_min - old_nop;
622
- dataSource.form.customers.some(function (item) {
623
- if (jQuery.inArray(item.id, ids) == -1) {
624
- item.number_of_persons = nop > 0 ? nop : 1;
625
- return true;
626
- }
627
- });
628
- }
629
  $scope.errors.customers_appointments_limit = [];
630
  checkAppointmentErrors();
631
  };
@@ -635,6 +714,9 @@
635
  };
636
 
637
  $scope.processForm = function() {
 
 
 
638
  $scope.loading = true;
639
 
640
  $scope.errors = {};
@@ -700,14 +782,20 @@
700
  created_from : typeof BooklySCCalendarL10n !== 'undefined' ? 'staff-cabinet' : 'backend'
701
  },
702
  function (response) {
703
- $scope.$apply(function($scope) {
704
  if (response.success) {
705
  if (callback) {
706
  // Call callback.
707
  callback(response.data);
708
  }
709
- // Close the dialog.
710
- $element.children().modal('hide');
 
 
 
 
 
 
711
  } else {
712
  $scope.errors = response.errors;
713
  }
@@ -720,9 +808,65 @@
720
 
721
  // On 'Cancel' button click.
722
  $scope.closeDialog = function () {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
723
  // Close the dialog.
724
  $element.children().modal('hide');
725
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
726
 
727
  $scope.statusToString = function (status) {
728
  return dataSource.data.status.items[status];
@@ -956,10 +1100,11 @@
956
  * Payment Details *
957
  **************************************************************************************************************/
958
 
959
- $scope.attachPaymentModal = function (customer) {
960
  var $dialog = jQuery('#bookly-payment-attach-modal');
961
  $scope.form.attach = {
962
  customer_id : customer.id,
 
963
  payment_method: 'create',
964
  payment_price : null,
965
  payment_tax : null,
@@ -970,15 +1115,15 @@
970
  });
971
  };
972
 
973
- $scope.attachPayment = function (attach_method, price, tax, payment_id, customer_id) {
974
  var $dialog = jQuery('#bookly-payment-details-modal');
975
  if (attach_method == 'search') {
976
- $dialog.data('payment_id', payment_id).data('payment_bind', true).data('customer_id', customer_id).modal({show: true}).on('hidden.bs.modal', function () {
977
  jQuery('body').addClass('modal-open');
978
  });
979
  } else {
980
- jQuery.each($scope.dataSource.data.customers, function (key, item) {
981
- if (item.id == customer_id) {
982
  item.payment_create = true;
983
  item.payment_price = price;
984
  item.payment_tax = tax;
@@ -988,11 +1133,11 @@
988
  }
989
  };
990
 
991
- $scope.callbackPayment = function (payment_action, payment_id, payment_title, customer_id, payment_type) {
992
  if (payment_action == 'bind') {
993
  // Bind payment
994
- jQuery.each($scope.dataSource.data.customers, function (key, item) {
995
- if (item.id == customer_id) {
996
  item.payment_id = payment_id;
997
  item.payment_type = payment_type;
998
  item.payment_title = payment_title;
@@ -1000,7 +1145,7 @@
1000
  });
1001
  } else {
1002
  // Complete payment
1003
- jQuery.each($scope.dataSource.data.customers, function (key, item) {
1004
  if (item.payment_id == payment_id) {
1005
  item.payment_type = 'full';
1006
  item.payment_title = payment_title;
@@ -1329,15 +1474,6 @@
1329
  return input;
1330
  };
1331
  });
1332
-
1333
- jQuery('#bookly-select2').select2({
1334
- width: '100%',
1335
- theme: 'bootstrap',
1336
- allowClear: false,
1337
- language : {
1338
- noResults: function() { return BooklyL10nAppDialog.no_result_found; }
1339
- }
1340
- });
1341
  })();
1342
 
1343
  /**
@@ -1347,16 +1483,19 @@
1347
  * @param function callback
1348
  */
1349
  var showAppointmentDialog = function (appointment_id, staff_id, start_date, callback) {
1350
- if (jQuery.fn.tooltip.Constructor.VERSION.split('.')[0] === '4') {
1351
  jQuery('#bookly-tbs .modal.fade').removeClass('fade');
1352
  }
1353
  var $dialog = jQuery('#bookly-appointment-dialog');
1354
  var $scope = angular.element($dialog[0]).scope();
1355
  $scope.$apply(function ($scope) {
1356
  $scope.loading = true;
1357
- $dialog
1358
- .find('.modal-title')
1359
- .text(appointment_id ? BooklyL10nAppDialog.title.edit_appointment : BooklyL10nAppDialog.title.new_appointment);
 
 
 
1360
  // Populate data source.
1361
  $scope.dataSource.loadData().then(function() {
1362
  $scope.loading = false;
27
  id : null,
28
  staff : null,
29
  staff_any : null,
30
+ customer_gr_def_app_status: [],
31
  service : null,
32
  custom_service_name : null,
33
  custom_service_price: null,
54
  customers : [],
55
  notification : null,
56
  series_id : null,
57
+ expand_customers_list : false,
58
+ queue_type : false,
59
+ queue : [],
60
  },
61
  l10n : {
62
  staff_any: BooklyL10nAppDialog.staff_any
75
  ds.form.staff = data.staff[0];
76
  }
77
 
78
+ if (data.customers === false) {
79
+ ds.data.customers = [];
80
+ ds.data.customers_remote = true;
81
+ // Init select2 remote.
82
+ jQuery('#bookly-appointment-dialog-select2').select2({
83
+ width : '100%',
84
+ theme : 'bootstrap',
85
+ allowClear: false,
86
+ language : {
87
+ noResults: function () {
88
+ return BooklyL10nAppDialog.no_result_found;
89
+ },
90
+ searching: function () {
91
+ return BooklyL10nAppDialog.searching;
92
+ }
93
+ },
94
+ ajax : {
95
+ url : ajaxurl,
96
+ dataType : 'json',
97
+ delay : 250,
98
+ data : function (params) {
99
+ params.page = params.page || 1;
100
+ return {
101
+ action : 'bookly_get_customers_list',
102
+ filter : params.term,
103
+ page : params.page,
104
+ timezone : true,
105
+ csrf_token: BooklyL10nAppDialog.csrf_token
106
+ };
107
+ },
108
+ processResults: function (data) {
109
+ data.results.forEach(function (customer) {
110
+ if (!ds.findCustomer(customer.id)) {
111
+ ds.resetCustomer(customer);
112
+ ds.data.customers.push(customer);
113
+ }
114
+ });
115
+ return {
116
+ results : data.results.map(function (item) {
117
+ return {id: item.id, text: item.name}
118
+ }),
119
+ pagination: data.pagination
120
+ };
121
+ }
122
+ },
123
+ }).on("select2:selecting", function (data) {
124
+ data.preventDefault();
125
+ var $scope = angular.element(jQuery('#bookly-appointment-dialog')).scope();
126
+ $scope.$apply(function ($scope) {
127
+ let clone = {};
128
+ angular.copy($scope.dataSource.data.customers.find(x => x.id === data.params.args.data.id), clone);
129
+ $scope.dataSource.resetCustomer(clone);
130
+ $scope.form.customers.push(clone);
131
+ $scope.onCustomersChange();
132
+ });
133
+ jQuery(this).select2('close');
134
+ });
135
+ } else {
136
+ jQuery('#bookly-appointment-dialog-select2').select2({
137
+ width : '100%',
138
+ theme : 'bootstrap',
139
+ allowClear: false,
140
+ language : {
141
+ noResults: function () {
142
+ return BooklyL10nAppDialog.no_result_found;
143
+ }
144
+ }
145
+ }).on('select2:select select2:unselect', function (data) {
146
+ var $scope = angular.element(jQuery('#bookly-appointment-dialog')).scope();
147
+ $scope.$apply(function ($scope) {
148
+ let clone = {};
149
+ angular.copy($scope.dataSource.data.customers.find(x => x.id === data.params.data.id), clone);
150
+ $scope.dataSource.resetCustomer(clone);
151
+ $scope.form.customers.push(clone);
152
+ $scope.onCustomersChange();
153
+ });
154
+ });
155
+ }
156
  ds.form.start_time = data.start_time[0];
157
  ds.form.end_time = data.end_time[1];
158
+ ds.form.customer_gr_def_app_status = data.customer_gr_def_app_status;
159
  deferred.resolve();
160
  },
161
  'json'
227
  },
228
  resetCustomers : function() {
229
  ds.data.customers.forEach(function(customer) {
230
+ ds.resetCustomer(customer);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
  });
232
  },
233
+ resetCustomer: function(customer) {
234
+ customer.custom_fields = [];
235
+ customer.extras = [];
236
+ customer.extras_consider_duration = ds.data.extras_consider_duration;
237
+ customer.extras_multiply_nop = ds.data.extras_multiply_nop;
238
+ customer.number_of_persons = !ds.form.service || ds.getTotalNumberOfNotCancelledPersons() ? 1 : ds.form.service.capacity_min;
239
+ customer.notes = null;
240
+ customer.collaborative_token = null;
241
+ customer.collaborative_service = null;
242
+ customer.compound_token = null;
243
+ customer.compound_service = null;
244
+ customer.payment_id = null;
245
+ customer.payment_type = null;
246
+ customer.payment_title = null;
247
+ customer.payment_create = false;
248
+ customer.payment_price = null;
249
+ customer.payment_tax = null;
250
+ customer.package_id = null;
251
+ customer.series_id = null;
252
+ customer.ca_id = null;
253
+ customer.status = ds.form.customer_gr_def_app_status[parseInt(customer.group_id||0)];
254
+ },
255
  getDataForStartTime : function() {
256
  var result = ds.data.start_time.slice();
257
  if (
460
  },
461
  customers : [],
462
  internal_note : null,
463
+ expand_customers_list : false,
464
+ queue_type : false,
465
+ queue : [],
466
  });
467
  $scope.errors = {};
468
  dataSource.setEndTimeBasedOnService();
493
  staff = $scope.dataSource.findStaff(response.data.staff_id);
494
  $scope.dataSource.data.app_start_time = response.data.start_time;
495
  $scope.dataSource.data.app_end_time = response.data.end_time;
496
+ if ($scope.dataSource.data.customers_remote) {
497
+ jQuery.extend($scope.dataSource.data.customers, response.data.customers_data);
498
+ }
499
  jQuery.extend($scope.form, {
500
  screen : 'main',
501
  id : appointment_id,
704
  $scope.onRepeatChange();
705
  };
706
 
707
+ $scope.onCustomersChange = function() {
 
 
 
 
 
 
 
 
 
 
 
 
708
  $scope.errors.customers_appointments_limit = [];
709
  checkAppointmentErrors();
710
  };
714
  };
715
 
716
  $scope.processForm = function() {
717
+ if ($scope.form.screen === 'queue') {
718
+ return $scope.queueSend();
719
+ }
720
  $scope.loading = true;
721
 
722
  $scope.errors = {};
782
  created_from : typeof BooklySCCalendarL10n !== 'undefined' ? 'staff-cabinet' : 'backend'
783
  },
784
  function (response) {
785
+ $scope.$apply(function ($scope) {
786
  if (response.success) {
787
  if (callback) {
788
  // Call callback.
789
  callback(response.data);
790
  }
791
+ $scope.form.queue = response.queue;
792
+ if (response.queue.all.length || response.queue.changed_status.length) {
793
+ $scope.form.queue_type = $scope.form.queue.changed_status.length ? 'changed_status' : 'all'
794
+ $scope.form.screen = 'queue';
795
+ } else {
796
+ // Close the dialog.
797
+ $element.children().modal('hide');
798
+ }
799
  } else {
800
  $scope.errors = response.errors;
801
  }
808
 
809
  // On 'Cancel' button click.
810
  $scope.closeDialog = function () {
811
+ if ($scope.form.screen === 'queue') {
812
+ var queue = [];
813
+ jQuery.each($scope.form.queue, function (type, value) {
814
+ jQuery.each(value, function (key, email) {
815
+ queue.push(email);
816
+ });
817
+ });
818
+ jQuery.post(
819
+ ajaxurl,
820
+ {
821
+ action : 'bookly_clear_attachments',
822
+ csrf_token: BooklyL10nAppDialog.csrf_token,
823
+ queue : queue
824
+ },
825
+ 'json'
826
+ );
827
+ }
828
  // Close the dialog.
829
  $element.children().modal('hide');
830
  };
831
+ // On 'Cancel' button click in queue window.
832
+ $scope.queueSend = function () {
833
+ var ladda = Ladda.create(jQuery('button.bookly-js-queue-send').get(0));
834
+ ladda.start();
835
+ var queue = [];
836
+ jQuery.each($scope.form.queue[$scope.form.queue_type], function (key, email) {
837
+ if (email.checked == 1) {
838
+ queue.push(email);
839
+ }
840
+ });
841
+ var queue_full = [];
842
+ jQuery.each($scope.form.queue, function (type, value) {
843
+ jQuery.each(value, function (key, email) {
844
+ queue_full.push(email);
845
+ });
846
+ });
847
+ jQuery.post(
848
+ ajaxurl,
849
+ {
850
+ action : 'bookly_send_queue',
851
+ csrf_token: BooklyL10nAppDialog.csrf_token,
852
+ queue : queue,
853
+ queue_full: queue_full
854
+ },
855
+ function (response) {
856
+ ladda.stop();
857
+ $scope.$apply(function ($scope) {
858
+ if (response.success) {
859
+ // Close the dialog.
860
+ $element.children().modal('hide');
861
+ } else {
862
+ $scope.errors = response.errors;
863
+ }
864
+ $scope.loading = false;
865
+ });
866
+ },
867
+ 'json'
868
+ );
869
+ };
870
 
871
  $scope.statusToString = function (status) {
872
  return dataSource.data.status.items[status];
1100
  * Payment Details *
1101
  **************************************************************************************************************/
1102
 
1103
+ $scope.attachPaymentModal = function (customer, index ) {
1104
  var $dialog = jQuery('#bookly-payment-attach-modal');
1105
  $scope.form.attach = {
1106
  customer_id : customer.id,
1107
+ customer_index: index,
1108
  payment_method: 'create',
1109
  payment_price : null,
1110
  payment_tax : null,
1115
  });
1116
  };
1117
 
1118
+ $scope.attachPayment = function (attach_method, price, tax, payment_id, customer_id, customer_index) {
1119
  var $dialog = jQuery('#bookly-payment-details-modal');
1120
  if (attach_method == 'search') {
1121
+ $dialog.data('payment_id', payment_id).data('payment_bind', true).data('customer_id', customer_id).data('customer_index', customer_index).modal({show: true}).on('hidden.bs.modal', function () {
1122
  jQuery('body').addClass('modal-open');
1123
  });
1124
  } else {
1125
+ jQuery.each($scope.dataSource.form.customers, function (key, item) {
1126
+ if (item.id == customer_id && key == customer_index) {
1127
  item.payment_create = true;
1128
  item.payment_price = price;
1129
  item.payment_tax = tax;
1133
  }
1134
  };
1135
 
1136
+ $scope.callbackPayment = function (payment_action, payment_id, payment_title, customer_id, customer_index, payment_type) {
1137
  if (payment_action == 'bind') {
1138
  // Bind payment
1139
+ jQuery.each($scope.dataSource.form.customers, function (key, item) {
1140
+ if (item.id == customer_id && key == customer_index) {
1141
  item.payment_id = payment_id;
1142
  item.payment_type = payment_type;
1143
  item.payment_title = payment_title;
1145
  });
1146
  } else {
1147
  // Complete payment
1148
+ jQuery.each($scope.dataSource.form.customers, function (key, item) {
1149
  if (item.payment_id == payment_id) {
1150
  item.payment_type = 'full';
1151
  item.payment_title = payment_title;
1474
  return input;
1475
  };
1476
  });
 
 
 
 
 
 
 
 
 
1477
  })();
1478
 
1479
  /**
1483
  * @param function callback
1484
  */
1485
  var showAppointmentDialog = function (appointment_id, staff_id, start_date, callback) {
1486
+ if (jQuery.fn.tooltip.Constructor.VERSION !== undefined && jQuery.fn.tooltip.Constructor.VERSION.split('.')[0] === '4') {
1487
  jQuery('#bookly-tbs .modal.fade').removeClass('fade');
1488
  }
1489
  var $dialog = jQuery('#bookly-appointment-dialog');
1490
  var $scope = angular.element($dialog[0]).scope();
1491
  $scope.$apply(function ($scope) {
1492
  $scope.loading = true;
1493
+ $scope.form.titles = {
1494
+ new : BooklyL10nAppDialog.title.new_appointment,
1495
+ edit : BooklyL10nAppDialog.title.edit_appointment,
1496
+ queue: BooklyL10nAppDialog.title.send_notifications
1497
+ };
1498
+ $scope.form.title = appointment_id ? BooklyL10nAppDialog.title.edit_appointment : BooklyL10nAppDialog.title.new_appointment;
1499
  // Populate data source.
1500
  $scope.dataSource.loadData().then(function() {
1501
  $scope.loading = false;
backend/components/dialogs/appointment/edit/templates/edit.php CHANGED
@@ -14,7 +14,7 @@ use Bookly\Lib\Entities\CustomerAppointment;
14
  <form ng-submit=processForm()>
15
  <div class="modal-header">
16
  <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
17
- <div class="modal-title h2"><?php esc_html_e( 'New appointment', 'bookly' ) ?></div>
18
  </div>
19
  <div ng-show=loading class="modal-body">
20
  <div class="bookly-loading"></div>
@@ -203,10 +203,10 @@ use Bookly\Lib\Entities\CustomerAppointment;
203
  <div <?php if ( ! Config::waitingListActive() ): ?>ng-show="!form.service || dataSource.getTotalNumberOfNotCancelledPersons() < form.service.capacity_max"<?php endif ?>>
204
  <div class="form-group">
205
  <div class="input-group">
206
- <select id="bookly-select2" multiple data-placeholder="<?php esc_attr_e( '-- Search customers --', 'bookly' ) ?>"
207
  class="form-control"
208
- ng-model="form.customers" ng-options="c.name for c in dataSource.data.customers"
209
- ng-change="onCustomersChange({{form.customers}}, {{dataSource.getTotalNumberOfNotCancelledPersons()}})">
210
  </select>
211
  <span class="input-group-btn">
212
  <a class="btn btn-success" ng-click="openNewCustomerDialog()">
@@ -224,26 +224,48 @@ use Bookly\Lib\Entities\CustomerAppointment;
224
  </div>
225
 
226
  <div class=form-group>
 
 
 
 
 
 
227
  <label for="bookly-notification"><?php esc_html_e( 'Send notifications', 'bookly' ) ?></label>
228
  <p class="help-block"><?php esc_html_e( 'If you have added a new customer to this appointment or changed the appointment status for an existing customer, and for these records you want the corresponding email or SMS notifications to be sent to their recipients, select the "Send if new or status changed" option before clicking Save. You can also send notifications as if all customers were added as new by selecting "Send as for new".', 'bookly' ) ?></p>
229
- <select class="form-control" style="margin-top: 0" ng-model=form.notification id="bookly-notification" ng-init="form.notification = '<?php echo get_user_meta( get_current_user_id(), 'bookly_appointment_form_send_notifications', true ) ?>' || 'no'" >
230
- <option value="no"><?php esc_html_e( 'Don\'t send', 'bookly' ) ?></option>
231
- <option value="changed_status"><?php esc_html_e( 'Send if new or status changed', 'bookly' ) ?></option>
232
- <option value="all"><?php esc_html_e( 'Send as for new', 'bookly' ) ?></option>
233
- </select>
234
  </div>
235
-
236
- <div class=form-group>
237
- <label for="bookly-internal-note"><?php esc_html_e( 'Internal note', 'bookly' ) ?></label>
238
- <textarea class="form-control" ng-model=form.internal_note id="bookly-internal-note"></textarea>
 
 
 
 
 
 
 
 
 
 
 
239
  </div>
240
  </div>
241
  <?php Proxy\RecurringAppointments::renderSchedule() ?>
 
 
 
 
 
 
 
242
  <div class="modal-footer">
243
  <div ng-hide=loading>
244
  <?php Proxy\Shared::renderAppointmentDialogFooter() ?>
245
- <?php Buttons::renderSubmit( null, null, null, array( 'ng-hide' => 'form.repeat.enabled && !form.skip_date && form.screen == \'main\'', 'ng-disabled' => '!form.skip_date && form.repeat.enabled && schIsScheduleEmpty()', 'formnovalidate' => '' ) ) ?>
246
- <?php Buttons::renderCustom( null, 'btn-lg btn-default', __( 'Cancel', 'bookly' ), array( 'ng-click' => 'closeDialog()', 'data-dismiss' => 'modal' ) ) ?>
 
247
  </div>
248
  </div>
249
  </form>
@@ -251,7 +273,7 @@ use Bookly\Lib\Entities\CustomerAppointment;
251
  </div>
252
  </div>
253
  <div customer-dialog=createCustomer(customer)></div>
254
- <div payment-details-dialog="callbackPayment(payment_action, payment_id, payment_title, customer_id, payment_type)"></div>
255
 
256
  <?php Dialogs\Appointment\CustomerDetails\Dialog::render() ?>
257
  <?php AttachPaymentProxy\Pro::renderAttachPaymentDialog() ?>
14
  <form ng-submit=processForm()>
15
  <div class="modal-header">
16
  <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
17
+ <div class="modal-title h2">{{ form.screen == 'queue' ? form.titles.queue : form.title }}</div>
18
  </div>
19
  <div ng-show=loading class="modal-body">
20
  <div class="bookly-loading"></div>
203
  <div <?php if ( ! Config::waitingListActive() ): ?>ng-show="!form.service || dataSource.getTotalNumberOfNotCancelledPersons() < form.service.capacity_max"<?php endif ?>>
204
  <div class="form-group">
205
  <div class="input-group">
206
+ <select id="bookly-appointment-dialog-select2" multiple data-placeholder="<?php esc_attr_e( '-- Search customers --', 'bookly' ) ?>"
207
  class="form-control"
208
+ >
209
+ <option ng-repeat="customer in dataSource.data.customers" value="{{customer.id}}">{{customer.name}}</option>
210
  </select>
211
  <span class="input-group-btn">
212
  <a class="btn btn-success" ng-click="openNewCustomerDialog()">
224
  </div>
225
 
226
  <div class=form-group>
227
+ <label for="bookly-internal-note"><?php esc_html_e( 'Internal note', 'bookly' ) ?></label>
228
+ <textarea class="form-control" ng-model=form.internal_note id="bookly-internal-note"></textarea>
229
+ </div>
230
+ </div>
231
+ <div ng-hide="loading || form.screen != 'queue'" class="modal-body">
232
+ <div class="form-group" ng-hide="!form.queue.all.length || !form.queue.changed_status.length">
233
  <label for="bookly-notification"><?php esc_html_e( 'Send notifications', 'bookly' ) ?></label>
234
  <p class="help-block"><?php esc_html_e( 'If you have added a new customer to this appointment or changed the appointment status for an existing customer, and for these records you want the corresponding email or SMS notifications to be sent to their recipients, select the "Send if new or status changed" option before clicking Save. You can also send notifications as if all customers were added as new by selecting "Send as for new".', 'bookly' ) ?></p>
235
+ <div class="radio"><label><input type="radio" name="queue_type" value="changed_status" ng-model=form.queue_type><?php esc_html_e( 'Send if new or status changed', 'bookly' ) ?></label></div>
236
+ <div class="radio"><label><input type="radio" name="queue_type" value="all" ng-model=form.queue_type><?php esc_html_e( 'Send as for new', 'bookly' ) ?></label></div>
 
 
 
237
  </div>
238
+ <div ng-repeat="(key, value) in form.queue.all">
239
+ <div class="checkbox bookly-margin-bottom-lg bookly-margin-top-remove" ng-hide="form.queue_type == 'changed_status'">
240
+ <label>
241
+ <input type=checkbox ng-model=value.checked ng-true-value="1" ng-false-value="0" ng-init="value.checked=1"/> <i class="fa fa-fw" ng-class="{'fa-sms':value.gateway == 'sms', 'fa-envelope':value.gateway != 'sms'}"></i> <b>{{value.data.name}}</b> ({{value.address}})<br/>
242
+ {{ value.name }}
243
+ </label>
244
+ </div>
245
+ </div>
246
+ <div ng-repeat="(key, value) in form.queue.changed_status">
247
+ <div class="checkbox bookly-margin-bottom-lg bookly-margin-top-remove" ng-hide="form.queue_type != 'changed_status'">
248
+ <label>
249
+ <input type=checkbox ng-model=value.checked ng-true-value="1" ng-false-value="0" ng-init="value.checked=1"/> <i class="fa fa-fw" ng-class="{'fa-sms':value.gateway == 'sms', 'fa-envelope':value.gateway != 'sms'}"></i> <b>{{value.data.name}}</b> ({{value.address}})<br/>
250
+ {{ value.name }}
251
+ </label>
252
+ </div>
253
  </div>
254
  </div>
255
  <?php Proxy\RecurringAppointments::renderSchedule() ?>
256
+ <div ng-hide="loading || form.screen != 'main'" class="modal-body bookly-padding-top-remove" style="margin-top: -15px;">
257
+ <div class="checkbox bookly-margin-bottom-lg bookly-margin-top-remove">
258
+ <label>
259
+ <input type=checkbox ng-model=form.notification ng-true-value="1" ng-false-value="0" ng-init="form.notification=<?php echo get_user_meta( get_current_user_id(), 'bookly_appointment_form_send_notifications', true ) ?: 0 ?>"/><b><?php esc_html_e( 'Send notifications', 'bookly' ) ?></b>
260
+ </label>
261
+ </div>
262
+ </div>
263
  <div class="modal-footer">
264
  <div ng-hide=loading>
265
  <?php Proxy\Shared::renderAppointmentDialogFooter() ?>
266
+ <?php Buttons::renderSubmit( null, null, null, array( 'ng-hide' => 'form.screen == \'queue\' || (form.repeat.enabled && !form.skip_date && form.screen == \'main\')', 'ng-disabled' => '!form.skip_date && form.repeat.enabled && schIsScheduleEmpty()', 'formnovalidate' => '' ) ) ?>
267
+ <?php Buttons::renderSubmit( null, 'bookly-js-queue-send', esc_html__( 'Send', 'bookly' ), array( 'ng-show' => 'form.screen == \'queue\'' ) ) ?>
268
+ <?php Buttons::renderCustom( null, 'btn-lg btn-default', esc_html__( 'Cancel', 'bookly' ), array( 'ng-click' => 'closeDialog()', 'data-dismiss' => 'modal' ) ) ?>
269
  </div>
270
  </div>
271
  </form>
273
  </div>
274
  </div>
275
  <div customer-dialog=createCustomer(customer)></div>
276
+ <div payment-details-dialog="callbackPayment(payment_action, payment_id, payment_title, customer_id, customer_index, payment_type)"></div>
277
 
278
  <?php Dialogs\Appointment\CustomerDetails\Dialog::render() ?>
279
  <?php AttachPaymentProxy\Pro::renderAttachPaymentDialog() ?>
backend/components/dialogs/customer/edit/resources/js/ng-customer.js CHANGED
@@ -68,10 +68,6 @@
68
  // Init select2 for wp_users.
69
  jQuery('#wp_user')
70
  .val(null)
71
- .on('select2:unselecting', function(e) {
72
- e.preventDefault();
73
- jQuery(this).val(null).trigger('change');
74
- })
75
  .select2({
76
  width: '100%',
77
  theme: 'bootstrap',
68
  // Init select2 for wp_users.
69
  jQuery('#wp_user')
70
  .val(null)
 
 
 
 
71
  .select2({
72
  width: '100%',
73
  theme: 'bootstrap',
backend/components/dialogs/notifications/templates/_types.php CHANGED
@@ -26,7 +26,7 @@ use Bookly\Lib\Config;
26
  data-set="instantly"
27
  data-recipients='["customer"]'
28
  data-icon='<?php echo esc_attr( Notification::getIcon( Notification::TYPE_NEW_BOOKING_COMBINED ) ) ?>'
29
- data-attach='["invoice"]'><?php echo esc_attr( Notification::getTitle( Notification::TYPE_NEW_BOOKING_COMBINED ) ) ?></option>
30
  <?php endif ?>
31
  <option value="<?php echo Notification::TYPE_CUSTOMER_APPOINTMENT_STATUS_CHANGED ?>"
32
  data-set="instantly"
26
  data-set="instantly"
27
  data-recipients='["customer"]'
28
  data-icon='<?php echo esc_attr( Notification::getIcon( Notification::TYPE_NEW_BOOKING_COMBINED ) ) ?>'
29
+ data-attach='["ics","invoice"]'><?php echo esc_attr( Notification::getTitle( Notification::TYPE_NEW_BOOKING_COMBINED ) ) ?></option>
30
  <?php endif ?>
31
  <option value="<?php echo Notification::TYPE_CUSTOMER_APPOINTMENT_STATUS_CHANGED ?>"
32
  data-set="instantly"
backend/components/dialogs/payment/Ajax.php CHANGED
@@ -102,4 +102,25 @@ class Ajax extends Lib\Base\Ajax
102
  wp_send_json_success( array( 'payment_title' => $payment_title, 'payment_type' => $payment->getPaid() == $payment->getTotal() ? 'full' : 'partial' ) );
103
  }
104
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  }
102
  wp_send_json_success( array( 'payment_title' => $payment_title, 'payment_type' => $payment->getPaid() == $payment->getTotal() ? 'full' : 'partial' ) );
103
  }
104
  }
105
+
106
+ /**
107
+ * Extend parent method to control access on staff member level.
108
+ *
109
+ * @param string $action
110
+ * @return bool
111
+ */
112
+ protected static function hasAccess( $action )
113
+ {
114
+ if ( parent::hasAccess( $action ) ) {
115
+ if ( ! Lib\Utils\Common::isCurrentUserAdmin() && $action === 'completePayment' ) {
116
+ $staff = new Lib\Entities\Staff();
117
+
118
+ return $staff->loadBy( array( 'wp_user_id' => get_current_user_id() ) );
119
+ }
120
+
121
+ return true;
122
+ }
123
+
124
+ return false;
125
+ }
126
  }
backend/components/dialogs/payment/resources/js/ng-payment_details.js CHANGED
@@ -18,12 +18,14 @@
18
  if (payment_id === undefined) {
19
  if (e.relatedTarget) {
20
  payment_id = e.relatedTarget.getAttribute('data-payment_id');
21
- var payment_bind = e.relatedTarget.getAttribute('data-payment_bind'),
22
- customer_id = e.relatedTarget.getAttribute('data-customer_id');
 
23
  } else if (element.data('payment_id')) {
24
  payment_id = element.data('payment_id');
25
- var payment_bind = element.data('payment_bind'),
26
- customer_id = element.data('customer_id');
 
27
  }
28
  }
29
  jQuery.ajax({
@@ -58,7 +60,7 @@
58
  });
59
  }
60
  // Reload DataTable.
61
- var $table = jQuery('table#bookly-payments-list.dataTable');
62
  if ($table.length) {
63
  $table.DataTable().ajax.reload();
64
  }
@@ -84,7 +86,8 @@
84
  payment_id : payment_id,
85
  payment_title : response.data.payment_title,
86
  payment_type : response.data.payment_type,
87
- customer_id : customer_id
 
88
  });
89
  });
90
  }
@@ -125,7 +128,7 @@
125
  if (response.success) {
126
  element.trigger('refresh', [payment_id]);
127
  // Reload DataTable.
128
- var $table = jQuery('table#bookly-payments-list.dataTable');
129
  if ($table.length) {
130
  $table.DataTable().ajax.reload();
131
  }
18
  if (payment_id === undefined) {
19
  if (e.relatedTarget) {
20
  payment_id = e.relatedTarget.getAttribute('data-payment_id');
21
+ var payment_bind = e.relatedTarget.getAttribute('data-payment_bind'),
22
+ customer_id = e.relatedTarget.getAttribute('data-customer_id'),
23
+ customer_index = e.relatedTarget.getAttribute('data-customer_index');
24
  } else if (element.data('payment_id')) {
25
  payment_id = element.data('payment_id');
26
+ var payment_bind = element.data('payment_bind'),
27
+ customer_id = element.data('customer_id'),
28
+ customer_index = element.data('customer_index');
29
  }
30
  }
31
  jQuery.ajax({
60
  });
61
  }
62
  // Reload DataTable.
63
+ var $table = jQuery('table#bookly-payments-list.dataTable, table#bookly-appointments-list.dataTable');
64
  if ($table.length) {
65
  $table.DataTable().ajax.reload();
66
  }
86
  payment_id : payment_id,
87
  payment_title : response.data.payment_title,
88
  payment_type : response.data.payment_type,
89
+ customer_id : customer_id,
90
+ customer_index: customer_index
91
  });
92
  });
93
  }
128
  if (response.success) {
129
  element.trigger('refresh', [payment_id]);
130
  // Reload DataTable.
131
+ var $table = jQuery('table#bookly-payments-list.dataTable, table#bookly-appointments-list.dataTable');
132
  if ($table.length) {
133
  $table.DataTable().ajax.reload();
134
  }
backend/components/dialogs/payment/templates/details.php CHANGED
@@ -1,28 +1,35 @@
1
  <?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
  use Bookly\Backend\Components\Controls\Buttons;
3
  use Bookly\Backend\Modules\Payments\Proxy;
 
4
  use Bookly\Lib\Utils\Price;
5
  use Bookly\Lib\Utils\DateTime;
6
  use Bookly\Lib\Entities;
7
  use Bookly\Lib\Config;
8
  /** @var array $show = ['deposit' => int, 'taxes' => int, 'gateway' => bool, 'customer_groups' => bool, 'coupons' => bool] */
 
 
 
 
 
 
9
  ?>
10
  <?php if ( $payment ) : ?>
11
  <div class="table-responsive">
12
  <table class="table table-bordered">
13
  <thead>
14
  <tr>
15
- <th width="50%"><?php _e( 'Customer', 'bookly' ) ?></th>
16
- <th width="50%"><?php _e( 'Payment', 'bookly' ) ?></th>
17
  </tr>
18
  </thead>
19
  <tbody>
20
  <tr>
21
  <td><?php echo esc_html( $payment['customer'] ) ?></td>
22
  <td>
23
- <div><?php _e( 'Date', 'bookly' ) ?>: <?php echo DateTime::formatDateTime( $payment['created'] ) ?></div>
24
- <div><?php _e( 'Type', 'bookly' ) ?>: <?php echo Entities\Payment::typeToString( $payment['type'] ) ?></div>
25
- <div><?php _e( 'Status', 'bookly' ) ?>: <?php echo Entities\Payment::statusToString( $payment['status'] ) ?></div>
26
  </td>
27
  </tr>
28
  </tbody>
@@ -33,15 +40,15 @@ use Bookly\Lib\Config;
33
  <table class="table table-bordered">
34
  <thead>
35
  <tr>
36
- <th><?php _e( 'Service', 'bookly' ) ?></th>
37
- <th><?php _e( 'Date', 'bookly' ) ?></th>
38
- <th><?php _e( 'Provider', 'bookly' ) ?></th>
39
  <?php if ( $show['deposit'] ): ?>
40
- <th class="text-right"><?php _e( 'Deposit', 'bookly' ) ?></th>
41
  <?php endif ?>
42
- <th class="text-right"><?php _e( 'Price', 'bookly' ) ?></th>
43
  <?php if ( $show['taxes'] ): ?>
44
- <th class="text-right"><?php _e( 'Tax', 'bookly' ) ?></th>
45
  <?php endif ?>
46
  </tr>
47
  </thead>
@@ -58,7 +65,7 @@ use Bookly\Lib\Config;
58
  </ul>
59
  <?php endif ?>
60
  </td>
61
- <td><?php echo $item['appointment_date'] === null ? __( 'N/A', 'bookly' ) : DateTime::formatDateTime( $item['appointment_date'] ) ?></td>
62
  <td><?php echo esc_html( $item['staff_name'] ) ?></td>
63
  <?php if ( $show['deposit'] ) : ?>
64
  <td class="text-right"><?php echo $item['deposit_format'] ?></td>
@@ -85,7 +92,7 @@ use Bookly\Lib\Config;
85
  </td>
86
  <?php if ( $show['taxes'] ) : ?>
87
  <td class="text-right"><?php echo $item['service_tax'] !== null
88
- ? sprintf( $payment['tax_in_price'] == 'included' ? '(%s)' : '%s', Price::format( $item['service_tax'] ) )
89
  : '-' ?></td>
90
  <?php endif ?>
91
  </tr>
@@ -94,7 +101,7 @@ use Bookly\Lib\Config;
94
  <tfoot>
95
  <tr>
96
  <th style="border-left-color: white; border-bottom-color: white;"></th>
97
- <th colspan="2"><?php _e( 'Subtotal', 'bookly' ) ?></th>
98
  <?php if ( $show['deposit'] ) : ?>
99
  <th class="text-right"><?php echo Price::format( $payment['subtotal']['deposit'] ) ?></th>
100
  <?php endif ?>
@@ -105,7 +112,7 @@ use Bookly\Lib\Config;
105
  <tr>
106
  <th style="border-left-color: white; border-bottom-color: white;"></th>
107
  <th colspan="<?php echo 2 + $show['deposit'] ?>">
108
- <?php _e( 'Coupon discount', 'bookly' ) ?>
109
  <?php if ( $payment['coupon'] ) : ?><div><small>(<?php echo $payment['coupon']['code'] ?>)</small></div><?php endif ?>
110
  </th>
111
  <th class="text-right">
@@ -129,7 +136,7 @@ use Bookly\Lib\Config;
129
  <tr>
130
  <th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
131
  <th colspan="<?php echo 2 + $show['deposit'] ?>">
132
- <?php _e( 'Group discount', 'bookly' ) ?>
133
  </th>
134
  <th class="text-right">
135
  <?php echo $payment['group_discount'] ?: Price::format( 0 ) ?>
@@ -150,13 +157,16 @@ use Bookly\Lib\Config;
150
  </tr>
151
  <?php endforeach ?>
152
 
153
- <?php Proxy\Pro::renderManualAdjustmentForm( $show ) ?>
 
 
154
 
155
  <?php if ( $show['gateway'] || (float) $payment['price_correction'] ) : ?>
156
  <tr>
157
  <th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
158
  <th colspan="<?php echo 2 + $show['deposit'] ?>">
159
- <?php echo Entities\Payment::typeToString( $payment['type'] ) ?>
 
160
  </th>
161
  <th class="text-right">
162
  <?php echo Price::format( $payment['price_correction'] ) ?>
@@ -168,7 +178,7 @@ use Bookly\Lib\Config;
168
  <?php endif ?>
169
  <tr>
170
  <th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
171
- <th colspan="<?php echo 2 + $show['deposit'] ?>"><?php _e( 'Total', 'bookly' ) ?></th>
172
  <th class="text-right"><?php echo Price::format( $payment['total'] ) ?></th>
173
  <?php if ( $show['taxes'] ) : ?>
174
  <th class="text-right">
@@ -179,14 +189,14 @@ use Bookly\Lib\Config;
179
  <?php if ( $payment['total'] != $payment['paid'] ) : ?>
180
  <tr>
181
  <th rowspan="2" style="border-left-color:#fff;border-bottom-color:#fff;"></th>
182
- <th colspan="<?php echo 2 + $show['deposit'] ?>"><i><?php _e( 'Paid', 'bookly' ) ?></i></th>
183
  <th class="text-right"><i><?php echo Price::format( $payment['paid'] ) ?></i></th>
184
  <?php if ( $show['taxes'] ) : ?>
185
  <th class="text-right"><i>(<?php echo Price::format( $payment['tax_paid'] ) ?>)</i></th>
186
  <?php endif ?>
187
  </tr>
188
  <tr>
189
- <th colspan="<?php echo 2 + $show['deposit'] ?>"><i><?php _e( 'Due', 'bookly' ) ?></i></th>
190
  <th class="text-right">
191
  <i><?php echo Price::format( $payment['total'] - $payment['paid'] ) ?></i>
192
  </th>
@@ -195,18 +205,18 @@ use Bookly\Lib\Config;
195
  <?php endif ?>
196
  </tr>
197
  <?php endif ?>
198
- <?php if ( Config::proActive() || ( $payment['total'] != $payment['paid'] ) ) : ?>
199
  <tr>
200
  <th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
201
  <th colspan="<?php echo 3 + $show['deposit'] + $show['taxes'] ?>" class="text-right">
202
  <div class="bookly-js-details-main-controls">
203
  <?php Proxy\Pro::renderManualAdjustmentButton() ?>
204
  <?php if ( $payment['total'] != $payment['paid'] ) : ?>
205
- <button type="button" class="btn btn-success ladda-button" id="bookly-complete-payment" data-spinner-size="40" data-style="zoom-in"><i><?php _e( 'Complete payment', 'bookly' ) ?></i></button>
206
  <?php endif ?>
207
  </div>
208
  <div class="bookly-js-details-bind-controls collapse">
209
- <?php Buttons::renderCustom( 'bookly-js-attach-payment', 'btn-success', __( 'Bind payment', 'bookly' ) ) ?>
210
  </div>
211
  </th>
212
  </tr>
1
  <?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
  use Bookly\Backend\Components\Controls\Buttons;
3
  use Bookly\Backend\Modules\Payments\Proxy;
4
+ use Bookly\Lib\Utils\Common;
5
  use Bookly\Lib\Utils\Price;
6
  use Bookly\Lib\Utils\DateTime;
7
  use Bookly\Lib\Entities;
8
  use Bookly\Lib\Config;
9
  /** @var array $show = ['deposit' => int, 'taxes' => int, 'gateway' => bool, 'customer_groups' => bool, 'coupons' => bool] */
10
+ $can_edit = Common::isCurrentUserAdmin();
11
+ if ( ! $can_edit ) {
12
+ $staff = new Entities\Staff();
13
+
14
+ $can_edit = $staff->loadBy( array( 'wp_user_id' => get_current_user_id() ) ) !== false;
15
+ }
16
  ?>
17
  <?php if ( $payment ) : ?>
18
  <div class="table-responsive">
19
  <table class="table table-bordered">
20
  <thead>
21
  <tr>
22
+ <th width="50%"><?php esc_html_e( 'Customer', 'bookly' ) ?></th>
23
+ <th width="50%"><?php esc_html_e( 'Payment', 'bookly' ) ?></th>
24
  </tr>
25
  </thead>
26
  <tbody>
27
  <tr>
28
  <td><?php echo esc_html( $payment['customer'] ) ?></td>
29
  <td>
30
+ <div><?php esc_html_e( 'Date', 'bookly' ) ?>: <?php echo DateTime::formatDateTime( $payment['created'] ) ?></div>
31
+ <div><?php esc_html_e( 'Type', 'bookly' ) ?>: <?php echo Entities\Payment::typeToString( $payment['type'] ) ?></div>
32
+ <div><?php esc_html_e( 'Status', 'bookly' ) ?>: <?php echo Entities\Payment::statusToString( $payment['status'] ) ?></div>
33
  </td>
34
  </tr>
35
  </tbody>
40
  <table class="table table-bordered">
41
  <thead>
42
  <tr>
43
+ <th><?php esc_html_e( 'Service', 'bookly' ) ?></th>
44
+ <th><?php esc_html_e( 'Date', 'bookly' ) ?></th>
45
+ <th><?php esc_html_e( 'Provider', 'bookly' ) ?></th>
46
  <?php if ( $show['deposit'] ): ?>
47
+ <th class="text-right"><?php esc_html_e( 'Deposit', 'bookly' ) ?></th>
48
  <?php endif ?>
49
+ <th class="text-right"><?php esc_html_e( 'Price', 'bookly' ) ?></th>
50
  <?php if ( $show['taxes'] ): ?>
51
+ <th class="text-right"><?php esc_html_e( 'Tax', 'bookly' ) ?></th>
52
  <?php endif ?>
53
  </tr>
54
  </thead>
65
  </ul>
66
  <?php endif ?>
67
  </td>
68
+ <td><?php echo $item['appointment_date'] === null ? esc_html__( 'N/A', 'bookly' ) : DateTime::formatDateTime( $item['appointment_date'] ) ?></td>
69
  <td><?php echo esc_html( $item['staff_name'] ) ?></td>
70
  <?php if ( $show['deposit'] ) : ?>
71
  <td class="text-right"><?php echo $item['deposit_format'] ?></td>
92
  </td>
93
  <?php if ( $show['taxes'] ) : ?>
94
  <td class="text-right"><?php echo $item['service_tax'] !== null
95
+ ? sprintf( $payment['tax_in_price'] === 'included' ? '(%s)' : '%s', Price::format( $item['service_tax'] ) )
96
  : '-' ?></td>
97
  <?php endif ?>
98
  </tr>
101
  <tfoot>
102
  <tr>
103
  <th style="border-left-color: white; border-bottom-color: white;"></th>
104
+ <th colspan="2"><?php esc_html_e( 'Subtotal', 'bookly' ) ?></th>
105
  <?php if ( $show['deposit'] ) : ?>
106
  <th class="text-right"><?php echo Price::format( $payment['subtotal']['deposit'] ) ?></th>
107
  <?php endif ?>
112
  <tr>
113
  <th style="border-left-color: white; border-bottom-color: white;"></th>
114
  <th colspan="<?php echo 2 + $show['deposit'] ?>">
115
+ <?php esc_html_e( 'Coupon discount', 'bookly' ) ?>
116
  <?php if ( $payment['coupon'] ) : ?><div><small>(<?php echo $payment['coupon']['code'] ?>)</small></div><?php endif ?>
117
  </th>
118
  <th class="text-right">
136
  <tr>
137
  <th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
138
  <th colspan="<?php echo 2 + $show['deposit'] ?>">
139
+ <?php esc_html_e( 'Group discount', 'bookly' ) ?>
140
  </th>
141
  <th class="text-right">
142
  <?php echo $payment['group_discount'] ?: Price::format( 0 ) ?>
157
  </tr>
158
  <?php endforeach ?>
159
 
160
+ <?php if ( $can_edit ) : ?>
161
+ <?php Proxy\Pro::renderManualAdjustmentForm( $show ) ?>
162
+ <?php endif ?>
163
 
164
  <?php if ( $show['gateway'] || (float) $payment['price_correction'] ) : ?>
165
  <tr>
166
  <th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
167
  <th colspan="<?php echo 2 + $show['deposit'] ?>">
168
+ <?php echo Entities\Payment::typeToString( $payment['gateway'] ) ?> -
169
+ <?php esc_html_e( 'Price correction', 'bookly' ) ?>
170
  </th>
171
  <th class="text-right">
172
  <?php echo Price::format( $payment['price_correction'] ) ?>
178
  <?php endif ?>
179
  <tr>
180
  <th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
181
+ <th colspan="<?php echo 2 + $show['deposit'] ?>"><?php esc_html_e( 'Total', 'bookly' ) ?></th>
182
  <th class="text-right"><?php echo Price::format( $payment['total'] ) ?></th>
183
  <?php if ( $show['taxes'] ) : ?>
184
  <th class="text-right">
189
  <?php if ( $payment['total'] != $payment['paid'] ) : ?>
190
  <tr>
191
  <th rowspan="2" style="border-left-color:#fff;border-bottom-color:#fff;"></th>
192
+ <th colspan="<?php echo 2 + $show['deposit'] ?>"><i><?php esc_html_e( 'Paid', 'bookly' ) ?></i></th>
193
  <th class="text-right"><i><?php echo Price::format( $payment['paid'] ) ?></i></th>
194
  <?php if ( $show['taxes'] ) : ?>
195
  <th class="text-right"><i>(<?php echo Price::format( $payment['tax_paid'] ) ?>)</i></th>
196
  <?php endif ?>
197
  </tr>
198
  <tr>
199
+ <th colspan="<?php echo 2 + $show['deposit'] ?>"><i><?php esc_html_e( 'Due', 'bookly' ) ?></i></th>
200
  <th class="text-right">
201
  <i><?php echo Price::format( $payment['total'] - $payment['paid'] ) ?></i>
202
  </th>
205
  <?php endif ?>
206
  </tr>
207
  <?php endif ?>
208
+ <?php if ( $can_edit && ( Config::proActive() || ( $payment['total'] != $payment['paid'] ) ) ) : ?>
209
  <tr>
210
  <th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
211
  <th colspan="<?php echo 3 + $show['deposit'] + $show['taxes'] ?>" class="text-right">
212
  <div class="bookly-js-details-main-controls">
213
  <?php Proxy\Pro::renderManualAdjustmentButton() ?>
214
  <?php if ( $payment['total'] != $payment['paid'] ) : ?>
215
+ <button type="button" class="btn btn-success ladda-button" id="bookly-complete-payment" data-spinner-size="40" data-style="zoom-in"><i><?php esc_html_e( 'Complete payment', 'bookly' ) ?></i></button>
216
  <?php endif ?>
217
  </div>
218
  <div class="bookly-js-details-bind-controls collapse">
219
+ <?php Buttons::renderCustom( 'bookly-js-attach-payment', 'btn-success', esc_html__( 'Bind payment', 'bookly' ) ) ?>
220
  </div>
221
  </th>
222
  </tr>
backend/components/dialogs/queue/Dialog.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Bookly\Backend\Components\Dialogs\Queue;
3
+
4
+ use Bookly\Lib as BooklyLib;
5
+
6
+ /**
7
+ * Class Dialog
8
+ * @package Bookly\Backend\Components\Dialogs\Queue
9
+ */
10
+ class Dialog extends BooklyLib\Base\Component
11
+ {
12
+ /**
13
+ * Render notifications queue dialog.
14
+ */
15
+ public static function render()
16
+ {
17
+ self::enqueueStyles( array(
18
+ 'frontend' => array( 'css/ladda.min.css', ),
19
+ 'backend' => array( 'css/fontawesome-all.min.css', 'css/select2.min.css' ),
20
+ ) );
21
+
22
+ self::enqueueScripts( array(
23
+ 'frontend' => array(
24
+ 'js/spin.min.js' => array( 'jquery', ),
25
+ 'js/ladda.min.js' => array( 'jquery', ),
26
+ ),
27
+ 'module' => array( 'js/queue-dialog.js' => array( 'jquery' ), ),
28
+ ) );
29
+
30
+ wp_localize_script( 'bookly-queue-dialog.js', 'BooklyNotificationQueueDialogL10n', array(
31
+ 'csrfToken' => BooklyLib\Utils\Common::getCsrfToken(),
32
+ ) );
33
+
34
+ self::renderTemplate( 'dialog' );
35
+ }
36
+ }
backend/components/dialogs/queue/resources/js/queue-dialog.js ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(function ($) {
2
+ $(document.body).on('bookly.queue_dialog', {},
3
+ function (event, queue, callback) {
4
+ var $dialog = $('#bookly-queue-modal'),
5
+ $queue = $('#bookly-queue', $dialog),
6
+ $template = $('#bookly-notification-template')
7
+ ;
8
+
9
+ $queue.html('');
10
+ queue.forEach(function (notification, index) {
11
+ $queue.append(
12
+ $template.clone().show().html()
13
+ .replace(/{{icon}}/g, notification.gateway == 'sms' ? 'fa-sms' : 'fa-envelope')
14
+ .replace(/{{recipient}}/g, notification.data.name)
15
+ .replace(/{{address}}/g, notification.address)
16
+ .replace(/{{description}}/g, notification.name)
17
+ .replace(/{{index}}/g, index)
18
+ );
19
+ });
20
+ $dialog.off().on('shown.bs.modal', function () {
21
+ $('body').addClass('modal-open');
22
+ }).on('click', '.bookly-js-send', function (e) {
23
+ e.preventDefault();
24
+ var ladda = Ladda.create(this),
25
+ send_queue = [];
26
+ ladda.start();
27
+
28
+ $queue.find('.bookly-js-notification-queue input[type="checkbox"]:checked').each(function () {
29
+ send_queue.push(queue[$(this).data('index')]);
30
+ });
31
+ $.post(
32
+ ajaxurl,
33
+ {
34
+ action : 'bookly_send_queue',
35
+ csrf_token: BooklyNotificationQueueDialogL10n.csrfToken,
36
+ queue : send_queue,
37
+ queue_full: queue
38
+ },
39
+ function (response) {
40
+ ladda.stop();
41
+ if (response.success) {
42
+ // Close the dialog.
43
+ $dialog.modal('hide');
44
+ }
45
+ if (callback) {
46
+ // Call callback.
47
+ callback();
48
+ }
49
+ },
50
+ 'json'
51
+ );
52
+ }).on('click', '.bookly-js-cancel', function (e) {
53
+ e.preventDefault();
54
+ $.post(
55
+ ajaxurl,
56
+ {
57
+ action : 'bookly_clear_attachments',
58
+ csrf_token: BooklyNotificationQueueDialogL10n.csrfToken,
59
+ queue : queue
60
+ },
61
+ 'json'
62
+ );
63
+ if (callback) {
64
+ // Call callback.
65
+ callback();
66
+ }
67
+ }).modal('show');
68
+ }
69
+ );
70
+ });
backend/components/dialogs/queue/templates/dialog.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+ use Bookly\Backend\Components\Controls\Buttons;
3
+ use Bookly\Backend\Components\Controls\Inputs;
4
+ ?>
5
+ <form id="bookly-queue-modal" class="modal fade" tabindex=-1 role="dialog">
6
+ <div class="modal-dialog">
7
+ <div class="modal-content">
8
+ <div class="modal-header">
9
+ <button type="button" class="close" data-dismiss="modal"><span>×</span></button>
10
+ <div class="modal-title h2"><?php esc_html_e( 'Send notifications', 'bookly' ) ?></div>
11
+ </div>
12
+ <div class="modal-body">
13
+ <div id="bookly-queue"></div>
14
+ </div>
15
+ <div class="modal-footer">
16
+ <?php Inputs::renderCsrf() ?>
17
+ <?php Buttons::renderCustom( null, 'bookly-js-send btn-lg btn-success', esc_html__( 'Send', 'bookly' ) ) ?>
18
+ <?php Buttons::renderCustom( null, 'bookly-js-cancel btn-lg btn-default', esc_html__( 'Close', 'bookly' ), array( 'data-dismiss' => 'modal' ) ) ?>
19
+ </div>
20
+ </div>
21
+ </div>
22
+ </form>
23
+ <div id="bookly-notification-template" class="collapse">
24
+ <div class="bookly-js-notification-queue checkbox bookly-margin-bottom-lg bookly-margin-top-remove">
25
+ <label>
26
+ <input type="checkbox" data-index="{{index}}" checked/> <i class="fa fa-fw {{icon}}"></i> <b>{{recipient}}</b> ({{address}})<br/>
27
+ {{description}}
28
+ </label>
29
+ </div>
30
+ </div>
backend/components/dialogs/service/edit/resources/js/service-edit-dialog.js CHANGED
@@ -211,6 +211,8 @@ jQuery(function ($) {
211
  updateStaffChoice = false;
212
  }
213
  submitServiceFrom($serviceDialog, 0);
 
 
214
  });
215
 
216
  /**
211
  updateStaffChoice = false;
212
  }
213
  submitServiceFrom($serviceDialog, 0);
214
+ }).on('hidden.bs.modal', function () {
215
+ $('body').addClass('modal-open');
216
  });
217
 
218
  /**
backend/components/dialogs/service/edit/templates/dialog.php CHANGED
@@ -3,7 +3,6 @@ use Bookly\Backend\Components\Controls\Buttons;
3
  use Bookly\Backend\Components\Controls\Inputs;
4
  use Bookly\Backend\Modules\Services\Proxy;
5
  use Bookly\Lib;
6
-
7
  ?>
8
  <div id="bookly-edit-service-modal" class="modal fade" tabindex=-1 role="dialog">
9
  <div class="modal-dialog modal-lg">
@@ -18,20 +17,20 @@ use Bookly\Lib;
18
  <li class="active">
19
  <a id="bookly-services-general-tab" href="#bookly-services-general" data-toggle="tab">
20
  <i class="fa fa-cog fa-fw"></i>
21
- <span class="bookly-nav-tabs-title"><?php _e( 'General', 'bookly' ) ?></span>
22
  </a>
23
  </li>
24
- <li class="bookly-js-service bookly-js-service-simple">
25
  <a id="bookly-services-time-tab" href="#bookly-services-time" data-toggle="tab">
26
  <i class="fa fa-clock fa-fw"></i>
27
- <span class="bookly-nav-tabs-title"><?php _e( 'Time', 'bookly' ) ?></span>
28
  </a>
29
  </li>
30
  <?php if ( Lib\Config::proActive() ) : ?>
31
  <li class="bookly-js-service bookly-js-service-simple bookly-js-service-collaborative bookly-js-service-compound">
32
  <a id="bookly-services-advanced-tab" href="#bookly-services-advanced" data-toggle="tab">
33
  <i class="fa fa-cogs fa-fw"></i>
34
- <span class="bookly-nav-tabs-title"><?php _e( 'Advanced', 'bookly' ) ?></span>
35
  </a>
36
  </li>
37
  <?php endif ?>
3
  use Bookly\Backend\Components\Controls\Inputs;
4
  use Bookly\Backend\Modules\Services\Proxy;
5
  use Bookly\Lib;
 
6
  ?>
7
  <div id="bookly-edit-service-modal" class="modal fade" tabindex=-1 role="dialog">
8
  <div class="modal-dialog modal-lg">
17
  <li class="active">
18
  <a id="bookly-services-general-tab" href="#bookly-services-general" data-toggle="tab">
19
  <i class="fa fa-cog fa-fw"></i>
20
+ <span class="bookly-nav-tabs-title"><?php esc_html_e( 'General', 'bookly' ) ?></span>
21
  </a>
22
  </li>
23
+ <li class="bookly-js-service bookly-js-service-simple bookly-js-service-compound bookly-js-service-collaborative">
24
  <a id="bookly-services-time-tab" href="#bookly-services-time" data-toggle="tab">
25
  <i class="fa fa-clock fa-fw"></i>
26
+ <span class="bookly-nav-tabs-title"><?php esc_html_e( 'Time', 'bookly' ) ?></span>
27
  </a>
28
  </li>
29
  <?php if ( Lib\Config::proActive() ) : ?>
30
  <li class="bookly-js-service bookly-js-service-simple bookly-js-service-collaborative bookly-js-service-compound">
31
  <a id="bookly-services-advanced-tab" href="#bookly-services-advanced" data-toggle="tab">
32
  <i class="fa fa-cogs fa-fw"></i>
33
+ <span class="bookly-nav-tabs-title"><?php esc_html_e( 'Advanced', 'bookly' ) ?></span>
34
  </a>
35
  </li>
36
  <?php endif ?>
backend/components/dialogs/sms/Dialog.php CHANGED
@@ -35,6 +35,7 @@ class Dialog extends BooklyLib\Base\Component
35
  'csrfToken' => BooklyLib\Utils\Common::getCsrfToken(),
36
  'recurringActive' => (int) BooklyLib\Config::recurringAppointmentsActive(),
37
  'defaultNotification' => self::getDefaultNotification(),
 
38
  'title' => array(
39
  'container' => __( 'Sms', 'bookly' ),
40
  'new' => __( 'New sms notification', 'bookly' ),
35
  'csrfToken' => BooklyLib\Utils\Common::getCsrfToken(),
36
  'recurringActive' => (int) BooklyLib\Config::recurringAppointmentsActive(),
37
  'defaultNotification' => self::getDefaultNotification(),
38
+ 'sms' => true,
39
  'title' => array(
40
  'container' => __( 'Sms', 'bookly' ),
41
  'new' => __( 'New sms notification', 'bookly' ),
backend/components/dialogs/sms/resources/js/notification-dialog.js CHANGED
@@ -21,7 +21,7 @@ jQuery(function ($) {
21
  $codes = $('table.bookly-codes', $modalNotification),
22
  $status = $("select[name='notification[settings][status]']", containers.settings),
23
  $defaultStatuses,
24
- useTinyMCE = typeof(tinyMCE) !== 'undefined',
25
  $textarea = $('#bookly-js-message', containers.message)
26
  ;
27
 
@@ -218,12 +218,14 @@ jQuery(function ($) {
218
  } else {
219
  $defaultStatuses = $status.html();
220
  }
221
- if ($status.find('option[value="' + data.settings.status + '"]').length > 0) {
222
- $status.val(data.settings.status);
223
- } else {
224
- var custom_status = data.settings.status.charAt(0).toUpperCase() + data.settings.status.slice(1);
 
225
 
226
- $status.append($("<option></option>", {value: data.settings.status, text: custom_status.replace(/\-/g, ' ')})).val(data.settings.status);
 
227
  }
228
 
229
  $("input[name='notification[settings][services][any]'][value='" + data.settings.services.any + "']", containers.settings).prop('checked', true);
21
  $codes = $('table.bookly-codes', $modalNotification),
22
  $status = $("select[name='notification[settings][status]']", containers.settings),
23
  $defaultStatuses,
24
+ useTinyMCE = !BooklyNotificationDialogL10n.sms && typeof(tinyMCE) !== 'undefined',
25
  $textarea = $('#bookly-js-message', containers.message)
26
  ;
27
 
218
  } else {
219
  $defaultStatuses = $status.html();
220
  }
221
+ if (data.settings.status !== null) {
222
+ if ($status.find('option[value="' + data.settings.status + '"]').length > 0) {
223
+ $status.val(data.settings.status);
224
+ } else {
225
+ var custom_status = data.settings.status.charAt(0).toUpperCase() + data.settings.status.slice(1);
226
 
227
+ $status.append($("<option></option>", {value: data.settings.status, text: custom_status.replace(/\-/g, ' ')})).val(data.settings.status);
228
+ }
229
  }
230
 
231
  $("input[name='notification[settings][services][any]'][value='" + data.settings.services.any + "']", containers.settings).prop('checked', true);
backend/components/dialogs/staff/edit/forms/StaffServices.php CHANGED
@@ -70,7 +70,7 @@ class StaffServices extends Lib\Base\Form
70
  public function save()
71
  {
72
  $staff_id = $this->data['staff_id'];
73
- $location_id = array_key_exists( 'location_id', $this->data ) ? $this->data['location_id'] : null;
74
  if ( $staff_id ) {
75
  Lib\Entities\StaffService::query()
76
  ->delete()
70
  public function save()
71
  {
72
  $staff_id = $this->data['staff_id'];
73
+ $location_id = array_key_exists( 'location_id', $this->data ) && $this->data['location_id'] ? $this->data['location_id'] : null;
74
  if ( $staff_id ) {
75
  Lib\Entities\StaffService::query()
76
  ->delete()
backend/components/dialogs/staff/edit/resources/js/staff-edit-dialog.js CHANGED
@@ -39,6 +39,9 @@ jQuery(function ($) {
39
  editStaff(staff_id);
40
  }
41
 
 
 
 
42
  function editStaff(staff_id) {
43
  $modalTitle.html(staff_id ? BooklyStaffEditDialogL10n.editStaff : BooklyStaffEditDialogL10n.createStaff);
44
  $('#bookly-staff-delete', $modalFooter).toggle(staff_id != 0);
@@ -53,7 +56,7 @@ jQuery(function ($) {
53
  booklyAlert(response.data.alert);
54
  $modalFooter.show();
55
  holidays = response.data.holidays;
56
- let $details_container = $('#bookly-details-container', $modalBody),
57
  $services_container = $('#bookly-services-container', $modalBody),
58
  $schedule_container = $('#bookly-schedule-container', $modalBody),
59
  $holidays_container = $('#bookly-holidays-container', $modalBody),
@@ -83,40 +86,38 @@ jQuery(function ($) {
83
  /**
84
  * Delete staff member.
85
  */
86
- $modalFooter
87
- .on('click', '#bookly-staff-delete', function (e) {
88
- e.preventDefault();
 
 
 
 
89
 
90
- var ladda = Ladda.create(this),
91
- data = {
92
- action: 'bookly_remove_staff',
93
- 'staff_ids[]': staff_id,
94
- csrf_token: BooklyStaffEditDialogL10n.csrfToken
95
- };
96
- ladda.start();
97
-
98
- var delete_staff = function (ajaxurl, data) {
99
- $.post(ajaxurl, data, function (response) {
100
- ladda.stop();
101
- if (!response.success) {
102
- switch (response.data.action) {
103
- case 'show_modal':
104
- $deleteCascadeModal.modal('show');
105
- break;
106
- case 'confirm':
107
- if (confirm(BooklyStaffEditDialogL10n.areYouSure)) {
108
- delete_staff(ajaxurl, $.extend(data, {force_delete: true}));
109
- }
110
- break;
111
  }
112
- } else {
113
- $modal.modal('hide');
114
- $staffList.DataTable().ajax.reload();
115
- }
116
- });
117
- };
 
 
118
 
119
- delete_staff(ajaxurl, data);
 
 
 
120
  });
121
 
122
  $modalBody
@@ -213,8 +214,7 @@ jQuery(function ($) {
213
  .on('click', '.bookly-js-delete', function () {
214
  $modalBody.html('<div class="bookly-loading"></div>');
215
  ladda = Ladda.create(this);
216
- ladda.start();
217
- delete_staff(ajaxurl, $.extend(data, {force_delete: true}));
218
  $deleteCascadeModal.modal('hide');
219
  ladda.stop();
220
  })
39
  editStaff(staff_id);
40
  }
41
 
42
+ /**
43
+ * Edit staff member.
44
+ */
45
  function editStaff(staff_id) {
46
  $modalTitle.html(staff_id ? BooklyStaffEditDialogL10n.editStaff : BooklyStaffEditDialogL10n.createStaff);
47
  $('#bookly-staff-delete', $modalFooter).toggle(staff_id != 0);
56
  booklyAlert(response.data.alert);
57
  $modalFooter.show();
58
  holidays = response.data.holidays;
59
+ let $details_container = $('#bookly-details-container', $modalBody),
60
  $services_container = $('#bookly-services-container', $modalBody),
61
  $schedule_container = $('#bookly-schedule-container', $modalBody),
62
  $holidays_container = $('#bookly-holidays-container', $modalBody),
86
  /**
87
  * Delete staff member.
88
  */
89
+ function deleteStaff(_data, ladda) {
90
+ ladda.start();
91
+ let data = $.extend({
92
+ action : 'bookly_remove_staff',
93
+ 'staff_ids[]': staff_id,
94
+ csrf_token : BooklyStaffEditDialogL10n.csrfToken
95
+ }, _data);
96
 
97
+ $.post(ajaxurl, data, function (response) {
98
+ ladda.stop();
99
+ if (!response.success) {
100
+ switch (response.data.action) {
101
+ case 'show_modal':
102
+ $deleteCascadeModal.modal('show');
103
+ break;
104
+ case 'confirm':
105
+ if (confirm(BooklyStaffEditDialogL10n.areYouSure)) {
106
+ deleteStaff( $.extend(data, {force_delete: true}), ladda);
 
 
 
 
 
 
 
 
 
 
 
107
  }
108
+ break;
109
+ }
110
+ } else {
111
+ $modal.modal('hide');
112
+ $staffList.DataTable().ajax.reload();
113
+ }
114
+ });
115
+ };
116
 
117
+ $modalFooter
118
+ .on('click', '#bookly-staff-delete', function (e) {
119
+ e.preventDefault();
120
+ deleteStaff( {}, Ladda.create(this));
121
  });
122
 
123
  $modalBody
214
  .on('click', '.bookly-js-delete', function () {
215
  $modalBody.html('<div class="bookly-loading"></div>');
216
  ladda = Ladda.create(this);
217
+ deleteStaff({force_delete: true}, ladda);
 
218
  $deleteCascadeModal.modal('hide');
219
  ladda.stop();
220
  })
backend/components/dialogs/staff/edit/resources/js/staff-schedule.js CHANGED
@@ -106,7 +106,7 @@ jQuery(function ($) {
106
  $.ajax({
107
  url: ajaxurl,
108
  type: 'POST',
109
- data: {action: 'bookly_reset_breaks', breaks: $(this).data('default-breaks'), staff_cabinet: $(this).data('staff-cabinet') || 0, csrf_token: obj.options.l10n.csrfToken},
110
  dataType: 'json',
111
  success: function (response) {
112
  for (var k in response) {
106
  $.ajax({
107
  url: ajaxurl,
108
  type: 'POST',
109
+ data: {action: 'bookly_staff_cabinet_reset_breaks', breaks: $(this).data('default-breaks'), staff_cabinet: $(this).data('staff-cabinet') || 0, csrf_token: obj.options.l10n.csrfToken},
110
  dataType: 'json',
111
  success: function (response) {
112
  for (var k in response) {
backend/components/dialogs/staff/edit/templates/dialog.php CHANGED
@@ -1,5 +1,6 @@
1
  <?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
  use Bookly\Backend\Components\Controls\Buttons;
 
3
  use Bookly\Lib\Utils\Common;
4
 
5
  /** @var Bookly\Lib\Entities\Staff $staff */
@@ -17,7 +18,9 @@ use Bookly\Lib\Utils\Common;
17
  <div class="modal-footer">
18
  <?php if ( Common::isCurrentUserAdmin() ) : ?>
19
  <?php Buttons::renderDelete( 'bookly-staff-delete', 'btn-lg pull-left bookly-js-hide-on-loading' ) ?>
20
- <?php Buttons::renderCustom( null, 'btn-lg btn-danger ladda-button bookly-js-staff-archive pull-left bookly-js-hide-on-loading', esc_html__( 'Archive', 'bookly' ), array(), '<i class="fa fa-archive"></i> {caption}' ) ?>
 
 
21
  <?php endif ?>
22
  <span class="bookly-js-errors text-danger" style="max-width: 353px;display: inline-grid;"></span>
23
  <?php Buttons::renderCustom( null, 'btn-lg btn-success bookly-js-save bookly-js-hide-on-loading', esc_html__( 'Save', 'bookly' ) ) ?>
1
  <?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
  use Bookly\Backend\Components\Controls\Buttons;
3
+ use Bookly\Lib\Config;
4
  use Bookly\Lib\Utils\Common;
5
 
6
  /** @var Bookly\Lib\Entities\Staff $staff */
18
  <div class="modal-footer">
19
  <?php if ( Common::isCurrentUserAdmin() ) : ?>
20
  <?php Buttons::renderDelete( 'bookly-staff-delete', 'btn-lg pull-left bookly-js-hide-on-loading' ) ?>
21
+ <?php if ( Config::proActive() ) : ?>
22
+ <?php Buttons::renderCustom( null, 'btn-lg btn-danger ladda-button bookly-js-staff-archive pull-left bookly-js-hide-on-loading', esc_html__( 'Archive', 'bookly' ), array(), '<i class="fa fa-archive"></i> {caption}' ) ?>
23
+ <?php endif ?>
24
  <?php endif ?>
25
  <span class="bookly-js-errors text-danger" style="max-width: 353px;display: inline-grid;"></span>
26
  <?php Buttons::renderCustom( null, 'btn-lg btn-success bookly-js-save bookly-js-hide-on-loading', esc_html__( 'Save', 'bookly' ) ) ?>
backend/components/dialogs/staff/edit/templates/dialog_body.php CHANGED
@@ -24,9 +24,9 @@ use Bookly\Backend\Modules\Staff\Proxy;
24
  </li>
25
  <?php Proxy\Shared::renderStaffTab( $staff ) ?>
26
  <li>
27
- <a id="bookly-holidays-tab" href="#daysoff" data-toggle="tab">
28
  <i class="fas fa-calendar fa-fw"></i>
29
- <span class="bookly-nav-tabs-title"><?php esc_html_e( 'Days off', 'bookly' ) ?></span>
30
  </a>
31
  </li>
32
  </ul>
@@ -47,7 +47,7 @@ use Bookly\Backend\Modules\Staff\Proxy;
47
  <div class="tab-pane" id="special_days">
48
  <div id="bookly-special-days-container" style="display: none"></div>
49
  </div>
50
- <div class="tab-pane" id="daysoff">
51
  <div id="bookly-holidays-container" style="display: none"></div>
52
  </div>
53
  </div>
24
  </li>
25
  <?php Proxy\Shared::renderStaffTab( $staff ) ?>
26
  <li>
27
+ <a id="bookly-holidays-tab" href="#days_off" data-toggle="tab">
28
  <i class="fas fa-calendar fa-fw"></i>
29
+ <span class="bookly-nav-tabs-title"><?php esc_html_e( 'Days Off', 'bookly' ) ?></span>
30
  </a>
31
  </li>
32
  </ul>
47
  <div class="tab-pane" id="special_days">
48
  <div id="bookly-special-days-container" style="display: none"></div>
49
  </div>
50
+ <div class="tab-pane" id="days_off">
51
  <div id="bookly-holidays-container" style="display: none"></div>
52
  </div>
53
  </div>
backend/components/notices/PoweredBy.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Bookly\Backend\Components\Notices;
3
+
4
+ use Bookly\Lib;
5
+
6
+ /**
7
+ * Class PoweredBy
8
+ * @package Bookly\Backend\Components\Notices
9
+ */
10
+ class PoweredBy extends Lib\Base\Component
11
+ {
12
+ /**
13
+ * Render show Powered by Bookly notice.
14
+ */
15
+ public static function render()
16
+ {
17
+ if ( Lib\Utils\Common::isCurrentUserAdmin()
18
+ && ! get_option( 'bookly_app_show_powered_by' )
19
+ && ! get_user_meta( get_current_user_id(), 'bookly_dismiss_powered_by_notice' )
20
+ ) {
21
+ self::enqueueStyles( array(
22
+ 'frontend' => array( 'css/ladda.min.css', ),
23
+ ) );
24
+ self::enqueueScripts( array(
25
+ 'frontend' => array(
26
+ 'js/spin.min.js' => array( 'jquery' ),
27
+ 'js/ladda.min.js' => array( 'jquery' ),
28
+ ),
29
+ 'module' => array( 'js/powered-by.js' => array( 'bookly-ladda.min.js', ), ),
30
+ ) );
31
+
32
+ self::renderTemplate( 'powered_by' );
33
+ }
34
+ }
35
+ }
backend/components/notices/PoweredByAjax.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Bookly\Backend\Components\Notices;
3
+
4
+ use Bookly\Lib;
5
+
6
+ /**
7
+ * Class PoweredByAjax
8
+ * @package Bookly\Backend\Components\Notices
9
+ */
10
+ class PoweredByAjax extends Lib\Base\Ajax
11
+ {
12
+ /**
13
+ * Dismiss Powered by Bookly by notice.
14
+ */
15
+ public static function dismissPoweredByNotice()
16
+ {
17
+ update_user_meta( get_current_user_id(), 'bookly_dismiss_powered_by_notice', 1 );
18
+
19
+ wp_send_json_success();
20
+ }
21
+
22
+ /**
23
+ * Enable show Powered by Bookly.
24
+ */
25
+ public static function enableShowPoweredBy()
26
+ {
27
+ update_option( 'bookly_app_show_powered_by', '1' );
28
+
29
+ wp_send_json_success();
30
+ }
31
+ }
backend/components/notices/resources/js/powered-by.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(function ($) {
2
+ var $notice = $('#bookly-js-powered-by');
3
+ $notice.on('close.bs.alert', function () {
4
+ $.post(ajaxurl, {action: $notice.data('action'), csrf_token: BooklySupportL10n.csrfToken});
5
+ }).on('click', '#bookly-js-show-powered-by', function () {
6
+ var ladda = Ladda.create(this);
7
+ ladda.start();
8
+ $.post(ajaxurl, {action: 'bookly_enable_show_powered_by', csrf_token: BooklySupportL10n.csrfToken}, function (response) {
9
+ $notice.alert('close');
10
+ });
11
+ });
12
+ });
backend/components/notices/templates/powered_by.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly ?>
2
+ <div id="bookly-tbs" class="wrap">
3
+ <div id="bookly-js-powered-by" class="alert alert-info bookly-tbs-body bookly-flexbox" data-action="bookly_dismiss_powered_by_notice">
4
+ <div class="bookly-flex-row">
5
+ <div class="bookly-flex-cell" style="width:39px"><i class="alert-icon"></i></div>
6
+ <div class="bookly-flex-cell">
7
+ <button type="button" class="close" data-dismiss="alert">&times;</button>
8
+ <?php esc_html_e( 'Allow the plugin to set a Powered by Bookly notice on the booking widget to spread information about the plugin. This will allow the team to improve the product and enhance its functionality.', 'bookly' ) ?>
9
+ <div class="bookly-margin-top-md">
10
+ <button type="button" class="btn btn-default" data-dismiss="alert"><?php esc_html_e( 'Disagree', 'bookly' ) ?></button>
11
+ <button type="button" class="btn btn-success" id="bookly-js-show-powered-by"><?php esc_html_e( 'Agree', 'bookly' ) ?></button>
12
+ </div>
13
+ </div>
14
+ </div>
15
+ </div>
16
+ </div>
backend/modules/appearance/proxy/Pro.php CHANGED
@@ -7,15 +7,15 @@ use Bookly\Lib;
7
  * Class Pro
8
  * @package Bookly\Backend\Modules\Appearance\Proxy
9
  *
 
 
10
  * @method static void renderFacebookButton() Render facebook login button on Time step.
11
- * @method static void renderMultipleBookingSelector() Render single/multiple booking selector on Payment step.
12
- * @method static void renderMultipleBookingText() Render multiple booking text option on Payment step.
13
  * @method static void renderPayPalPaymentOption() Render Cart step.
 
 
14
  * @method static void renderShowFacebookButton() Render 'Show facebook login button switcher' on Time step.
15
  * @method static void renderTimeZoneSwitcher() Render timezone switcher on Time step.
16
  * @method static void renderTimeZoneSwitcherCheckbox() Render 'Show time zone switcher' on Time step.
17
- * @method static void renderShowAddress() render 'Show Address Fields' on Details Step.
18
- * @method static void renderShowBirthday() render 'Show Birthday Fields' on Details Step.
19
  */
20
  abstract class Pro extends Lib\Base\Proxy
21
  {
7
  * Class Pro
8
  * @package Bookly\Backend\Modules\Appearance\Proxy
9
  *
10
+ * @method static void renderBookingStatesSelector() Render single/multiple/100% off booking selector on Payment step.
11
+ * @method static void renderBookingStatesText() Render multiple or 100% off booking text option on Payment step.
12
  * @method static void renderFacebookButton() Render facebook login button on Time step.
 
 
13
  * @method static void renderPayPalPaymentOption() Render Cart step.
14
+ * @method static void renderShowAddress() render 'Show Address Fields' on Details Step.
15
+ * @method static void renderShowBirthday() render 'Show Birthday Fields' on Details Step.
16
  * @method static void renderShowFacebookButton() Render 'Show facebook login button switcher' on Time step.
17
  * @method static void renderTimeZoneSwitcher() Render timezone switcher on Time step.
18
  * @method static void renderTimeZoneSwitcherCheckbox() Render 'Show time zone switcher' on Time step.
 
 
19
  */
20
  abstract class Pro extends Lib\Base\Proxy
21
  {
backend/modules/appearance/proxy/ServiceExtras.php CHANGED
@@ -11,6 +11,7 @@ use Bookly\Lib;
11
  * @method static void renderShowCartExtras() Render "Show extras" on Cart step.
12
  * @method static void renderShowStep() Render "Show Extras step".
13
  * @method static void renderStep( string $progress_tracker ) Render Extras step.
 
14
  */
15
  abstract class ServiceExtras extends Lib\Base\Proxy
16
  {
11
  * @method static void renderShowCartExtras() Render "Show extras" on Cart step.
12
  * @method static void renderShowStep() Render "Show Extras step".
13
  * @method static void renderStep( string $progress_tracker ) Render Extras step.
14
+ * @method static void renderStepSettings() render a checkboxes "Show title, duration, price and etc."
15
  */
16
  abstract class ServiceExtras extends Lib\Base\Proxy
17
  {
backend/modules/appearance/resources/js/appearance.js CHANGED
@@ -20,8 +20,7 @@ jQuery(function($) {
20
  $staff_select = $('.bookly-js-select-employee'),
21
  $duration_select = $('.bookly-js-select-duration'),
22
  $location_select = $('.bookly-js-select-location'),
23
-
24
- // Time step.
25
  $time_step_nop = $('#bookly-show-nop-on-time-step'),
26
  $time_step_calendar = $('.bookly-js-selected-date'),
27
  $time_step_calendar_wrap = $('.bookly-js-slot-calendar'),
@@ -33,6 +32,9 @@ jQuery(function($) {
33
  $day_one_column = $('#bookly-day-one-column'),
34
  $day_multi_columns = $('#bookly-day-multi-columns'),
35
  $columnizer = $('.bookly-time-step .bookly-columnizer-wrap'),
 
 
 
36
  // Step repeat.
37
  $repeat_step_calendar = $('.bookly-js-repeat-until'),
38
  $repeat_variants = $('[class^="bookly-js-variant"]'),
@@ -153,6 +155,10 @@ jQuery(function($) {
153
  }
154
  });
155
 
 
 
 
 
156
  // Show steps.
157
  $('.bookly-js-show-step').on('change', function () {
158
  var target = $(this).data('target'),
@@ -186,6 +192,7 @@ jQuery(function($) {
186
  $step_settings.children().hide();
187
  switch (e.target.getAttribute('data-target')) {
188
  case '#bookly-step-1': $step_settings.find('.bookly-js-service-settings').show(); break;
 
189
  case '#bookly-step-3': $step_settings.find('.bookly-js-time-settings').show(); break;
190
  case '#bookly-step-5': $step_settings.find('.bookly-js-cart-settings').show(); break;
191
  case '#bookly-step-6': $step_settings.find('.bookly-js-details-settings').show(); break;
@@ -641,7 +648,9 @@ jQuery(function($) {
641
  $('#bookly-payment-step-view').on('change', function () {
642
  $('.bookly-js-payment-single-app').toggle(this.value == 'single-app');
643
  $('.bookly-js-payment-several-apps').toggle(this.value == 'several-apps');
644
- });
 
 
645
 
646
  // Show credit card form.
647
  $('.bookly-payment-nav :radio').on('change', function () {
@@ -730,6 +739,10 @@ jQuery(function($) {
730
  // Save options.
731
  $save_button.on('click', function (e) {
732
  e.preventDefault();
 
 
 
 
733
  // Prepare data.
734
  var data = {
735
  action : 'bookly_update_appearance_options',
@@ -769,7 +782,8 @@ jQuery(function($) {
769
  'bookly_files_enabled' : Number($show_files.prop('checked')),
770
  'bookly_waiting_list_enabled' : Number($show_waiting_list.prop('checked')),
771
  'bookly_google_maps_address_enabled' : Number($show_google_maps.prop('checked')),
772
- 'bookly_service_extras_show_in_cart' : Number($show_cart_extras.prop('checked'))
 
773
  }
774
  };
775
  // Add data from editable elements.
20
  $staff_select = $('.bookly-js-select-employee'),
21
  $duration_select = $('.bookly-js-select-duration'),
22
  $location_select = $('.bookly-js-select-location'),
23
+ // Time step.
 
24
  $time_step_nop = $('#bookly-show-nop-on-time-step'),
25
  $time_step_calendar = $('.bookly-js-selected-date'),
26
  $time_step_calendar_wrap = $('.bookly-js-slot-calendar'),
32
  $day_one_column = $('#bookly-day-one-column'),
33
  $day_multi_columns = $('#bookly-day-multi-columns'),
34
  $columnizer = $('.bookly-time-step .bookly-columnizer-wrap'),
35
+ // Step extras.
36
+ $extras_step = $('.bookly-extra-step'),
37
+ $extras_show = $('#bookly-step-settings [name="bookly_service_extras_show[]"]')
38
  // Step repeat.
39
  $repeat_step_calendar = $('.bookly-js-repeat-until'),
40
  $repeat_variants = $('[class^="bookly-js-variant"]'),
155
  }
156
  });
157
 
158
+ $extras_show.on('change', function () {
159
+ $('.bookly-js-extras-' + this.value, $extras_step).toggle(this.checked);
160
+ }).trigger('change');
161
+
162
  // Show steps.
163
  $('.bookly-js-show-step').on('change', function () {
164
  var target = $(this).data('target'),
192
  $step_settings.children().hide();
193
  switch (e.target.getAttribute('data-target')) {
194
  case '#bookly-step-1': $step_settings.find('.bookly-js-service-settings').show(); break;
195
+ case '#bookly-step-2': $step_settings.find('.bookly-js-extras-settings').show(); break;
196
  case '#bookly-step-3': $step_settings.find('.bookly-js-time-settings').show(); break;
197
  case '#bookly-step-5': $step_settings.find('.bookly-js-cart-settings').show(); break;
198
  case '#bookly-step-6': $step_settings.find('.bookly-js-details-settings').show(); break;
648
  $('#bookly-payment-step-view').on('change', function () {
649
  $('.bookly-js-payment-single-app').toggle(this.value == 'single-app');
650
  $('.bookly-js-payment-several-apps').toggle(this.value == 'several-apps');
651
+ $('.bookly-js-payment-100percents-off-price').toggle(this.value == '100percents-off-price');
652
+ $('.bookly-js-payment-gateways').toggle(this.value !== '100percents-off-price');
653
+ }).trigger('change');
654
 
655
  // Show credit card form.
656
  $('.bookly-payment-nav :radio').on('change', function () {
739
  // Save options.
740
  $save_button.on('click', function (e) {
741
  e.preventDefault();
742
+ let bookly_service_extras_show = [];
743
+ $extras_show.filter(':checked').each(function () {
744
+ bookly_service_extras_show.push(this.value);
745
+ });
746
  // Prepare data.
747
  var data = {
748
  action : 'bookly_update_appearance_options',
782
  'bookly_files_enabled' : Number($show_files.prop('checked')),
783
  'bookly_waiting_list_enabled' : Number($show_waiting_list.prop('checked')),
784
  'bookly_google_maps_address_enabled' : Number($show_google_maps.prop('checked')),
785
+ 'bookly_service_extras_show_in_cart' : Number($show_cart_extras.prop('checked')),
786
+ 'bookly_service_extras_show' : bookly_service_extras_show
787
  }
788
  };
789
  // Add data from editable elements.
backend/modules/appearance/templates/_7_payment.php CHANGED
@@ -13,28 +13,30 @@ use Bookly\Backend\Modules\Appearance\Proxy;
13
  <div class="bookly-box bookly-js-payment-single-app">
14
  <?php Editable::renderText( 'bookly_l10n_info_payment_step_single_app', Codes::getHtml( 7 ), 'right' ) ?>
15
  </div>
16
- <?php Proxy\Pro::renderMultipleBookingText() ?>
17
- <div class="bookly-box bookly-list">
18
- <label>
19
- <input type="radio" name="payment" checked="checked" />
20
- <?php Editable::renderString( array( 'bookly_l10n_label_pay_locally', ) ) ?>
21
- </label>
22
- </div>
 
23
 
24
- <?php Proxy\Pro::renderPayPalPaymentOption() ?>
25
 
26
- <div class="bookly-box bookly-list"<?php if ( Proxy\Shared::showCreditCard() == false ): ?> style="display: none"<?php endif ?>>
27
- <label>
28
- <input type="radio" name="payment" id="bookly-card-payment" />
29
- <?php Editable::renderString( array( 'bookly_l10n_label_pay_ccard', ) ) ?>
30
- <img src="<?php echo plugins_url( 'frontend/resources/images/cards.png', \Bookly\Lib\Plugin::getMainFile() ) ?>" alt="cards" />
31
- </label>
32
- <form class="bookly-card-form bookly-clear-bottom" style="margin-top:15px;display: none;">
33
- <?php include '_card_payment.php' ?>
34
- </form>
35
- </div>
36
 
37
- <?php Proxy\Shared::renderPaymentGatewaySelector() ?>
 
38
  </div>
39
 
40
  <?php Proxy\RecurringAppointments::renderInfoMessage() ?>
13
  <div class="bookly-box bookly-js-payment-single-app">
14
  <?php Editable::renderText( 'bookly_l10n_info_payment_step_single_app', Codes::getHtml( 7 ), 'right' ) ?>
15
  </div>
16
+ <?php Proxy\Pro::renderBookingStatesText() ?>
17
+ <div class="bookly-js-payment-gateways">
18
+ <div class="bookly-box bookly-list ">
19
+ <label>
20
+ <input type="radio" name="payment" checked="checked"/>
21
+ <?php Editable::renderString( array( 'bookly_l10n_label_pay_locally', ) ) ?>
22
+ </label>
23
+ </div>
24
 
25
+ <?php Proxy\Pro::renderPayPalPaymentOption() ?>
26
 
27
+ <div class="bookly-box bookly-list"<?php if ( Proxy\Shared::showCreditCard() == false ): ?> style="display: none"<?php endif ?>>
28
+ <label>
29
+ <input type="radio" name="payment" id="bookly-card-payment"/>
30
+ <?php Editable::renderString( array( 'bookly_l10n_label_pay_ccard', ) ) ?>
31
+ <img src="<?php echo plugins_url( 'frontend/resources/images/cards.png', \Bookly\Lib\Plugin::getMainFile() ) ?>" alt="cards"/>
32
+ </label>
33
+ <form class="bookly-card-form bookly-clear-bottom" style="margin-top:15px;display: none;">
34
+ <?php include '_card_payment.php' ?>
35
+ </form>
36
+ </div>
37
 
38
+ <?php Proxy\Shared::renderPaymentGatewaySelector() ?>
39
+ </div>
40
  </div>
41
 
42
  <?php Proxy\RecurringAppointments::renderInfoMessage() ?>
backend/modules/appearance/templates/index.php CHANGED
@@ -149,6 +149,7 @@ use Bookly\Backend\Modules\Appearance\Proxy;
149
  </div>
150
 
151
  <?php Proxy\Cart::renderCartStepSettings() ?>
 
152
 
153
  <div class="bookly-js-details-settings bookly-margin-top-lg container-fluid" style="display:none">
154
 
@@ -201,7 +202,7 @@ use Bookly\Backend\Modules\Appearance\Proxy;
201
  </div>
202
  <div class="bookly-js-payment-settings bookly-margin-top-lg" style="display:none">
203
  <?php Proxy\Coupons::renderShowCoupons() ?>
204
- <?php Proxy\Pro::renderMultipleBookingSelector() ?>
205
  </div>
206
 
207
  <div class="bookly-js-done-settings bookly-margin-top-lg" style="display:none">
149
  </div>
150
 
151
  <?php Proxy\Cart::renderCartStepSettings() ?>
152
+ <?php Proxy\ServiceExtras::renderStepSettings() ?>
153
 
154
  <div class="bookly-js-details-settings bookly-margin-top-lg container-fluid" style="display:none">
155
 
202
  </div>
203
  <div class="bookly-js-payment-settings bookly-margin-top-lg" style="display:none">
204
  <?php Proxy\Coupons::renderShowCoupons() ?>
205
+ <?php Proxy\Pro::renderBookingStatesSelector() ?>
206
  </div>
207
 
208
  <div class="bookly-js-done-settings bookly-margin-top-lg" style="display:none">
backend/modules/appointments/Ajax.php CHANGED
@@ -60,7 +60,7 @@ class Ajax extends Lib\Base\Ajax
60
  $ca_list[] = $ca_data['ca_id'];
61
  }
62
  }
63
-
64
  /** @var Lib\Entities\CustomerAppointment $ca */
65
  foreach ( Lib\Entities\CustomerAppointment::query()->whereIn( 'id', $ca_list )->find() as $ca ) {
66
  if ( self::parameter( 'notify' ) ) {
@@ -81,7 +81,9 @@ class Ajax extends Lib\Base\Ajax
81
  Lib\Notifications\Booking\Sender::sendForCA(
82
  $ca,
83
  null,
84
- array( 'cancellation_reason' => self::parameter( 'reason' ) )
 
 
85
  );
86
  }
87
  $ca->deleteCascade();
@@ -95,7 +97,7 @@ class Ajax extends Lib\Base\Ajax
95
  }
96
  }
97
 
98
- wp_send_json_success();
99
  }
100
 
101
  /**
60
  $ca_list[] = $ca_data['ca_id'];
61
  }
62
  }
63
+ $queue = array();
64
  /** @var Lib\Entities\CustomerAppointment $ca */
65
  foreach ( Lib\Entities\CustomerAppointment::query()->whereIn( 'id', $ca_list )->find() as $ca ) {
66
  if ( self::parameter( 'notify' ) ) {
81
  Lib\Notifications\Booking\Sender::sendForCA(
82
  $ca,
83
  null,
84
+ array( 'cancellation_reason' => self::parameter( 'reason' ) ),
85
+ false,
86
+ $queue
87
  );
88
  }
89
  $ca->deleteCascade();
97
  }
98
  }
99
 
100
+ wp_send_json_success( compact( 'queue' ) );
101
  }
102
 
103
  /**
backend/modules/appointments/Page.php CHANGED
@@ -60,6 +60,7 @@ class Page extends Lib\Base\Component
60
  'cf_columns' => $cf_columns,
61
  'filter' => (array) get_user_meta( get_current_user_id(), 'bookly_filter_appointments_list', true ),
62
  'no_result_found' => __( 'No result found', 'bookly' ),
 
63
  'attachments' => __( 'Attachments', 'bookly' ),
64
  'tasks' => array(
65
  'enabled' => Lib\Config::tasksActive(),
@@ -69,7 +70,7 @@ class Page extends Lib\Base\Component
69
 
70
  // Filters data
71
  $staff_members = Lib\Entities\Staff::query( 's' )->select( 's.id, s.full_name' )->whereNot( 'visibility', 'archive' )->fetchArray();
72
- $customers = Lib\Entities\Customer::query( 'c' )->select( 'c.id, c.full_name, c.first_name, c.last_name' )->fetchArray();
73
  $services = Lib\Entities\Service::query( 's' )->select( 's.id, s.title' )->where( 'type', Lib\Entities\Service::TYPE_SIMPLE )->fetchArray();
74
 
75
  self::renderTemplate( 'index', compact( 'custom_fields', 'staff_members', 'customers', 'services', 'show_attachments' ) );
60
  'cf_columns' => $cf_columns,
61
  'filter' => (array) get_user_meta( get_current_user_id(), 'bookly_filter_appointments_list', true ),
62
  'no_result_found' => __( 'No result found', 'bookly' ),
63
+ 'searching' => __( 'Searching', 'bookly' ),
64
  'attachments' => __( 'Attachments', 'bookly' ),
65
  'tasks' => array(
66
  'enabled' => Lib\Config::tasksActive(),
70
 
71
  // Filters data
72
  $staff_members = Lib\Entities\Staff::query( 's' )->select( 's.id, s.full_name' )->whereNot( 'visibility', 'archive' )->fetchArray();
73
+ $customers = Lib\Entities\Customer::query()->count() < Lib\Entities\Customer::REMOTE_LIMIT ? Lib\Entities\Customer::query( 'c' )->select( 'c.id, c.full_name, c.first_name, c.last_name' )->fetchArray() : false;
74
  $services = Lib\Entities\Service::query( 's' )->select( 's.id, s.title' )->where( 'type', Lib\Entities\Service::TYPE_SIMPLE )->fetchArray();
75
 
76
  self::renderTemplate( 'index', compact( 'custom_fields', 'staff_members', 'customers', 'services', 'show_attachments' ) );
backend/modules/appointments/resources/js/appointments.js CHANGED
@@ -206,6 +206,7 @@ jQuery(function($) {
206
  $('[data-toggle="popover"]').on('click', function (e) {
207
  e.preventDefault();
208
  }).popover();
 
209
  },
210
  ajax: {
211
  url : ajaxurl,
@@ -293,6 +294,7 @@ jQuery(function($) {
293
  service : $serviceFilter.val(),
294
  status : $statusFilter.val()
295
  }));
 
296
 
297
  return true;
298
  });
@@ -362,6 +364,9 @@ jQuery(function($) {
362
  $('#bookly-delete-dialog').modal('hide');
363
  if (response.success) {
364
  dt.draw(false);
 
 
 
365
  } else {
366
  alert(response.data.message);
367
  }
@@ -409,7 +414,7 @@ jQuery(function($) {
409
  cancelLabel: BooklyL10n.dateRange.cancel,
410
  fromLabel : BooklyL10n.dateRange.from,
411
  toLabel : BooklyL10n.dateRange.to,
412
- customRangeLabel: BooklyL10n.dateRange.custom_range,
413
  daysOfWeek : BooklyL10n.datePicker.dayNamesShort,
414
  monthNames : BooklyL10n.datePicker.monthNames,
415
  firstDay : parseInt(BooklyL10n.dateRange.firstDay),
@@ -451,7 +456,7 @@ jQuery(function($) {
451
  cancelLabel: BooklyL10n.dateRange.cancel,
452
  fromLabel : BooklyL10n.dateRange.from,
453
  toLabel : BooklyL10n.dateRange.to,
454
- customRangeLabel: BooklyL10n.dateRange.custom_range,
455
  daysOfWeek : BooklyL10n.datePicker.monthNamesShort,
456
  monthNames : BooklyL10n.datePicker.monthNames,
457
  firstDay : parseInt(BooklyL10n.dateRange.firstDay),
@@ -485,10 +490,6 @@ jQuery(function($) {
485
  * On filters change.
486
  */
487
  $('.bookly-js-select')
488
- .on('select2:unselecting', function(e) {
489
- e.preventDefault();
490
- $(this).val(null).trigger('change');
491
- })
492
  .select2({
493
  width: '100%',
494
  theme: 'bootstrap',
@@ -498,6 +499,31 @@ jQuery(function($) {
498
  }
499
  });
500
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
501
  $idFilter.on('keyup', function () { dt.ajax.reload(); });
502
  $appointmentDateFilter.on('apply.daterangepicker', function () { dt.ajax.reload(); });
503
  $creationDateFilter.on('apply.daterangepicker', function () { dt.ajax.reload(); });
206
  $('[data-toggle="popover"]').on('click', function (e) {
207
  e.preventDefault();
208
  }).popover();
209
+ dt.responsive.recalc();
210
  },
211
  ajax: {
212
  url : ajaxurl,
294
  service : $serviceFilter.val(),
295
  status : $statusFilter.val()
296
  }));
297
+ $exportDialog.modal('hide');
298
 
299
  return true;
300
  });
364
  $('#bookly-delete-dialog').modal('hide');
365
  if (response.success) {
366
  dt.draw(false);
367
+ if (response.data && response.data.queue && response.data.queue.length) {
368
+ $(document.body).trigger('bookly.queue_dialog', [response.data.queue]);
369
+ }
370
  } else {
371
  alert(response.data.message);
372
  }
414
  cancelLabel: BooklyL10n.dateRange.cancel,
415
  fromLabel : BooklyL10n.dateRange.from,
416
  toLabel : BooklyL10n.dateRange.to,
417
+ customRangeLabel: BooklyL10n.dateRange.customRange,
418
  daysOfWeek : BooklyL10n.datePicker.dayNamesShort,
419
  monthNames : BooklyL10n.datePicker.monthNames,
420
  firstDay : parseInt(BooklyL10n.dateRange.firstDay),
456
  cancelLabel: BooklyL10n.dateRange.cancel,
457
  fromLabel : BooklyL10n.dateRange.from,
458
  toLabel : BooklyL10n.dateRange.to,
459
+ customRangeLabel: BooklyL10n.dateRange.customRange,
460
  daysOfWeek : BooklyL10n.datePicker.monthNamesShort,
461
  monthNames : BooklyL10n.datePicker.monthNames,
462
  firstDay : parseInt(BooklyL10n.dateRange.firstDay),
490
  * On filters change.
491
  */
492
  $('.bookly-js-select')
 
 
 
 
493
  .select2({
494
  width: '100%',
495
  theme: 'bootstrap',
499
  }
500
  });
501
 
502
+ $('.bookly-js-select-ajax')
503
+ .select2({
504
+ width: '100%',
505
+ theme: 'bootstrap',
506
+ allowClear: true,
507
+ language : {
508
+ noResults: function() { return BooklyL10n.no_result_found; },
509
+ searching: function () { return BooklyL10n.searching; }
510
+ },
511
+ ajax: {
512
+ url: ajaxurl,
513
+ dataType: 'json',
514
+ delay: 250,
515
+ data: function (params) {
516
+ params.page = params.page || 1;
517
+ return {
518
+ action: $(this).data('action'),
519
+ filter: params.term,
520
+ page: params.page,
521
+ csrf_token : BooklyL10n.csrf_token
522
+ };
523
+ }
524
+ },
525
+ });
526
+
527
  $idFilter.on('keyup', function () { dt.ajax.reload(); });
528
  $appointmentDateFilter.on('apply.daterangepicker', function () { dt.ajax.reload(); });
529
  $creationDateFilter.on('apply.daterangepicker', function () { dt.ajax.reload(); });
backend/modules/appointments/templates/index.php CHANGED
@@ -65,10 +65,12 @@ use Bookly\Lib\Utils\DateTime;
65
  <div class="clearfix visible-md-block"></div>
66
  <div class="col-md-3 col-lg-2">
67
  <div class="form-group">
68
- <select class="form-control bookly-js-select" id="bookly-filter-customer" data-placeholder="<?php esc_attr_e( 'Customer', 'bookly' ) ?>">
69
- <?php foreach ( $customers as $customer ) : ?>
70
- <option value="<?php echo $customer['id'] ?>"><?php echo esc_html( $customer['full_name'] ) ?></option>
71
- <?php endforeach ?>
 
 
72
  </select>
73
  </div>
74
  </div>
@@ -135,6 +137,7 @@ use Bookly\Lib\Utils\DateTime;
135
 
136
  <?php Dialogs\Appointment\Delete\Dialog::render() ?>
137
  <?php Dialogs\Appointment\Edit\Dialog::render() ?>
 
138
  <?php Proxy\Shared::renderAddOnsComponents() ?>
139
  </div>
140
  </div>
65
  <div class="clearfix visible-md-block"></div>
66
  <div class="col-md-3 col-lg-2">
67
  <div class="form-group">
68
+ <select class="form-control <?php echo $customers === false ? 'bookly-js-select-ajax' : 'bookly-js-select' ?>" id="bookly-filter-customer" data-placeholder="<?php esc_attr_e( 'Customer', 'bookly' ) ?>" data-action="bookly_get_customers_list">
69
+ <?php if ( $customers !== false ) : ?>
70
+ <?php foreach ( $customers as $customer ) : ?>
71
+ <option value="<?php echo $customer['id'] ?>"><?php echo esc_html( $customer['full_name'] ) ?></option>
72
+ <?php endforeach ?>
73
+ <?php endif ?>
74
  </select>
75
  </div>
76
  </div>
137
 
138
  <?php Dialogs\Appointment\Delete\Dialog::render() ?>
139
  <?php Dialogs\Appointment\Edit\Dialog::render() ?>
140
+ <?php Dialogs\Queue\Dialog::render() ?>
141
  <?php Proxy\Shared::renderAddOnsComponents() ?>
142
  </div>
143
  </div>
backend/modules/calendar/Ajax.php CHANGED
@@ -34,7 +34,7 @@ class Ajax extends Page
34
  $start_date = new \DateTime( self::parameter( 'start' ) );
35
  $end_date = new \DateTime( self::parameter( 'end' ) );
36
  // FullCalendar sends end date as 1 day further.
37
- $end_date->sub( $one_day );
38
 
39
  if ( Lib\Utils\Common::isCurrentUserSupervisor() ) {
40
  $staff_ids = explode( ',', self::parameter( 'staff_ids' ) );
@@ -181,7 +181,8 @@ class Ajax extends Page
181
  {
182
  $query = Lib\Entities\Appointment::query( 'a' )
183
  ->where( 'st.id', $staff_id )
184
- ->whereBetween( 'DATE(a.start_date)', $start_date->format( 'Y-m-d' ), $end_date->format( 'Y-m-d' ) );
 
185
 
186
  Proxy\Shared::prepareAppointmentsQueryForFC( $query, $staff_id, $start_date, $end_date );
187
 
34
  $start_date = new \DateTime( self::parameter( 'start' ) );
35
  $end_date = new \DateTime( self::parameter( 'end' ) );
36
  // FullCalendar sends end date as 1 day further.
37
+ // $end_date->sub( $one_day );
38
 
39
  if ( Lib\Utils\Common::isCurrentUserSupervisor() ) {
40
  $staff_ids = explode( ',', self::parameter( 'staff_ids' ) );
181
  {
182
  $query = Lib\Entities\Appointment::query( 'a' )
183
  ->where( 'st.id', $staff_id )
184
+ ->whereLt( 'DATE(a.start_date)', $end_date->format( 'Y-m-d' ) )
185
+ ->whereRaw( 'DATE(DATE_ADD(a.end_date, INTERVAL IF(ca.extras_consider_duration, a.extras_duration, 0) SECOND)) >= \'%s\'', array( $start_date->format( 'Y-m-d' ) ) );
186
 
187
  Proxy\Shared::prepareAppointmentsQueryForFC( $query, $staff_id, $start_date, $end_date );
188
 
backend/modules/calendar/resources/js/calendar-common.js CHANGED
@@ -235,7 +235,7 @@ jQuery(function ($) {
235
  });
236
  },
237
  onSelect: function (dateText, inst) {
238
- var d = new Date(dateText);
239
  $container.fullCalendar('gotoDate', d);
240
  if ($container.fullCalendar('getView').type != 'agendaDay' &&
241
  $container.fullCalendar('getView').type != 'multiStaffDay') {
@@ -278,6 +278,9 @@ jQuery(function ($) {
278
  ladda.stop();
279
  $container.fullCalendar('removeEvents', calEvent.id);
280
  obj.$deleteDialog.modal('hide');
 
 
 
281
  }
282
  });
283
  });
235
  });
236
  },
237
  onSelect: function (dateText, inst) {
238
+ var d = new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay);
239
  $container.fullCalendar('gotoDate', d);
240
  if ($container.fullCalendar('getView').type != 'agendaDay' &&
241
  $container.fullCalendar('getView').type != 'multiStaffDay') {
278
  ladda.stop();
279
  $container.fullCalendar('removeEvents', calEvent.id);
280
  obj.$deleteDialog.modal('hide');
281
+ if (response.data && response.data.queue && response.data.queue.length) {
282
+ $(document.body).trigger('bookly.queue_dialog', [response.data.queue]);
283
+ }
284
  }
285
  });
286
  });
backend/modules/calendar/templates/calendar.php CHANGED
@@ -98,5 +98,6 @@ use Bookly\Backend\Modules\Calendar\Proxy;
98
  </div>
99
 
100
  <?php Components\Dialogs\Appointment\Delete\Dialog::render() ?>
 
101
  </div>
102
  </div>
98
  </div>
99
 
100
  <?php Components\Dialogs\Appointment\Delete\Dialog::render() ?>
101
+ <?php Components\Dialogs\Queue\Dialog::render() ?>
102
  </div>
103
  </div>
backend/modules/customers/Ajax.php CHANGED
@@ -123,6 +123,49 @@ class Ajax extends Lib\Base\Ajax
123
  ) );
124
  }
125
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  /**
127
  * Merge customers.
128
  */
123
  ) );
124
  }
125
 
126
+ /**
127
+ * Get list of customers.
128
+ */
129
+ public static function getCustomersList()
130
+ {
131
+ global $wpdb;
132
+
133
+ $max_results = 20;
134
+ $filter = self::parameter( 'filter' );
135
+ $page = self::parameter( 'page' );
136
+ $query = Lib\Entities\Customer::query( 'c' );
137
+
138
+ $query->select( 'SQL_CALC_FOUND_ROWS c.id, c.group_id, c.full_name AS text, c.email, c.phone' );
139
+
140
+ if ( $filter != '' ) {
141
+ $search_value = Lib\Query::escape( $filter );
142
+ $query
143
+ ->whereLike( 'c.full_name', "%{$search_value}%" );
144
+ }
145
+
146
+ $query->limit( $max_results )->offset( ( $page - 1 ) * $max_results );
147
+
148
+ $customers = array();
149
+ foreach ( $query->fetchArray() as $customer ) {
150
+ $name = $customer['text'];
151
+ if ( $customer['email'] != '' || $customer['phone'] != '' ) {
152
+ $name .= ' (' . trim( $customer['email'] . ', ' . $customer['phone'], ', ' ) . ')';
153
+ }
154
+ $customer['name'] = $name;
155
+ if ( self::parameter( 'timezone' ) ) {
156
+ $customer['timezone'] = Lib\Proxy\Pro::getLastCustomerTimezone( $customer['id'] );
157
+ }
158
+ $customers[] = $customer;
159
+ }
160
+
161
+ wp_send_json( array(
162
+ 'results' => $customers,
163
+ 'pagination' => array(
164
+ 'more' => ( int ) $wpdb->get_var( 'SELECT FOUND_ROWS()' ) > $max_results * $page,
165
+ ),
166
+ ) );
167
+ }
168
+
169
  /**
170
  * Merge customers.
171
  */
backend/modules/dashboard/resources/js/dashboard.js CHANGED
@@ -31,7 +31,7 @@ jQuery(function ($) {
31
  toLabel : BooklyL10n.dateRange.to,
32
  customRangeLabel: BooklyL10n.dateRange.customRange,
33
  daysOfWeek : BooklyL10n.datePicker.dayNamesShort,
34
- monthNames : BooklyL10n.datePicker.dayNames,
35
  firstDay : parseInt(BooklyL10n.dateRange.firstDay),
36
  format : BooklyL10n.dateRange.dateFormat
37
  }
31
  toLabel : BooklyL10n.dateRange.to,
32
  customRangeLabel: BooklyL10n.dateRange.customRange,
33
  daysOfWeek : BooklyL10n.datePicker.dayNamesShort,
34
+ monthNames : BooklyL10n.datePicker.monthNames,
35
  firstDay : parseInt(BooklyL10n.dateRange.firstDay),
36
  format : BooklyL10n.dateRange.dateFormat
37
  }
backend/modules/debug/Ajax.php CHANGED
@@ -2,12 +2,14 @@
2
  namespace Bookly\Backend\Modules\Debug;
3
 
4
  use Bookly\Lib;
 
 
5
 
6
  /**
7
  * Class Ajax
8
  * @package Bookly\Backend\Modules\Debug
9
  */
10
- class Ajax extends Page
11
  {
12
  /**
13
  * Export database data.
@@ -18,7 +20,7 @@ class Ajax extends Page
18
  global $wpdb;
19
 
20
  $result = array();
21
-
22
  foreach ( apply_filters( 'bookly_plugins', array() ) as $plugin ) {
23
  /** @var Lib\Base\Plugin $plugin */
24
  $installer_class = $plugin::getRootNamespace() . '\Lib\Installer';
@@ -28,7 +30,7 @@ class Ajax extends Page
28
  foreach ( $plugin::getEntityClasses() as $entity_class ) {
29
  $table_name = $entity_class::getTableName();
30
  $result['entities'][ $entity_class ] = array(
31
- 'fields' => self::_getTableStructure( $table_name ),
32
  'values' => $wpdb->get_results( 'SELECT * FROM ' . $table_name, ARRAY_N )
33
  );
34
  }
@@ -143,6 +145,9 @@ class Ajax extends Page
143
  exit ( 0 );
144
  }
145
 
 
 
 
146
  public static function getFieldData()
147
  {
148
  /** @global \wpdb */
@@ -486,22 +491,23 @@ class Ajax extends Page
486
  }
487
  }
488
 
 
 
 
489
  public static function executeQuery()
490
  {
491
- /** @global \wpdb */
492
- global $wpdb;
493
-
494
- ob_start();
495
- $result = $wpdb->query( self::parameter( 'query' ) );
496
- ob_end_clean();
497
 
498
- if ( $result ) {
499
  wp_send_json_success( array( 'message' => 'Query completed successfully' ) );
500
  } else {
501
- wp_send_json_error( array( 'message' => $wpdb->last_error ) );
502
  }
503
  }
504
 
 
 
 
505
  public static function getConstraintData()
506
  {
507
  /** @global \wpdb */
@@ -585,14 +591,14 @@ class Ajax extends Page
585
  }
586
  }
587
 
 
 
 
588
  public static function addConstraint()
589
  {
590
- /** @global \wpdb */
591
- global $wpdb;
592
-
593
  $table = self::parameter( 'table' );
594
  $column = self::parameter( 'column' );
595
- $ref_table = self::parameter( 'ref_table' );
596
  $ref_column = self::parameter( 'ref_column' );
597
 
598
  $sql = sprintf( 'ALTER TABLE `%s` ADD CONSTRAINT FOREIGN KEY (`%s`) REFERENCES `%s` (`%s`)', $table, $column, $ref_table, $ref_column );
@@ -619,22 +625,20 @@ class Ajax extends Page
619
  wp_send_json_error( array( 'message' => 'Select ON UPDATE action' ) );
620
  }
621
 
622
- ob_start();
623
- $result = $wpdb->query( $sql );
624
- ob_end_clean();
625
 
626
- if ( $result ) {
627
  wp_send_json_success( array( 'message' => 'Constraint created' ) );
628
  } else {
629
- wp_send_json_error( array( 'message' => $wpdb->last_error ) );
630
  }
631
  }
632
 
 
 
 
633
  public static function fixConsistency()
634
  {
635
- /** @global \wpdb */
636
- global $wpdb;
637
-
638
  $rule = self::parameter( 'rule' );
639
  $table = self::parameter( 'table' );
640
  $column = self::parameter( 'column' );
@@ -654,15 +658,114 @@ class Ajax extends Page
654
  wp_send_json_success( array( 'message' => 'No manipulation actions were performed' ) );
655
  }
656
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
657
 
658
  ob_start();
659
  $result = $wpdb->query( $sql );
660
  ob_end_clean();
661
 
662
- if ( $result !== false ) {
663
- wp_send_json_success( array( 'message' => 'Successful, click Add constraint' ) );
664
- } else {
665
- wp_send_json_error( array( 'message' => $wpdb->last_error ) );
666
- }
667
  }
668
  }
2
  namespace Bookly\Backend\Modules\Debug;
3
 
4
  use Bookly\Lib;
5
+ use Bookly\Backend\Modules\Debug\Lib\QueryBuilder;
6
+ use Bookly\Backend\Modules\Debug\Lib\Schema;
7
 
8
  /**
9
  * Class Ajax
10
  * @package Bookly\Backend\Modules\Debug
11
  */
12
+ class Ajax extends Lib\Base\Ajax
13
  {
14
  /**
15
  * Export database data.
20
  global $wpdb;
21
 
22
  $result = array();
23
+ $schema = new Schema();
24
  foreach ( apply_filters( 'bookly_plugins', array() ) as $plugin ) {
25
  /** @var Lib\Base\Plugin $plugin */
26
  $installer_class = $plugin::getRootNamespace() . '\Lib\Installer';
30
  foreach ( $plugin::getEntityClasses() as $entity_class ) {
31
  $table_name = $entity_class::getTableName();
32
  $result['entities'][ $entity_class ] = array(
33
+ 'fields' => array_keys( $schema->getTableStructure( $table_name ) ),
34
  'values' => $wpdb->get_results( 'SELECT * FROM ' . $table_name, ARRAY_N )
35
  );
36
  }
145
  exit ( 0 );
146
  }
147
 
148
+ /**
149
+ * manual
150
+ */
151
  public static function getFieldData()
152
  {
153
  /** @global \wpdb */
491
  }
492
  }
493
 
494
+ /**
495
+ * Execute query
496
+ */
497
  public static function executeQuery()
498
  {
499
+ $success = self::execute( self::parameter( 'query' ) );
 
 
 
 
 
500
 
501
+ if ( $success === true ) {
502
  wp_send_json_success( array( 'message' => 'Query completed successfully' ) );
503
  } else {
504
+ wp_send_json_error( array( 'message' => $success ) );
505
  }
506
  }
507
 
508
+ /**
509
+ * manual
510
+ */
511
  public static function getConstraintData()
512
  {
513
  /** @global \wpdb */
591
  }
592
  }
593
 
594
+ /**
595
+ * manual
596
+ */
597
  public static function addConstraint()
598
  {
 
 
 
599
  $table = self::parameter( 'table' );
600
  $column = self::parameter( 'column' );
601
+ $ref_table = self::parameter( 'ref_table' );
602
  $ref_column = self::parameter( 'ref_column' );
603
 
604
  $sql = sprintf( 'ALTER TABLE `%s` ADD CONSTRAINT FOREIGN KEY (`%s`) REFERENCES `%s` (`%s`)', $table, $column, $ref_table, $ref_column );
625
  wp_send_json_error( array( 'message' => 'Select ON UPDATE action' ) );
626
  }
627
 
628
+ $success = self::execute( $sql );
 
 
629
 
630
+ if ( $success === true ) {
631
  wp_send_json_success( array( 'message' => 'Constraint created' ) );
632
  } else {
633
+ wp_send_json_error( array( 'message' => $success ) );
634
  }
635
  }
636
 
637
+ /**
638
+ * manual
639
+ */
640
  public static function fixConsistency()
641
  {
 
 
 
642
  $rule = self::parameter( 'rule' );
643
  $table = self::parameter( 'table' );
644
  $column = self::parameter( 'column' );
658
  wp_send_json_success( array( 'message' => 'No manipulation actions were performed' ) );
659
  }
660
 
661
+ $success = self::execute( $sql );
662
+
663
+ if ( $success === true ) {
664
+ wp_send_json_success( array( 'message' => 'Successful, click Add constraint' ) );
665
+ } else {
666
+ wp_send_json_error( array( 'message' => $success ) );
667
+ }
668
+ }
669
+
670
+ public static function fixDataBaseSchema()
671
+ {
672
+ $errors = array();
673
+ $queries = 0;
674
+ $schema = new Schema();
675
+ /** @var Lib\Base\Plugin $plugin */
676
+ foreach ( apply_filters( 'bookly_plugins', array() ) as $plugin ) {
677
+ foreach ( $plugin::getEntityClasses() as $entity_class ) {
678
+ $table_name = $entity_class::getTableName();
679
+ if ( ! $schema->existsTable( $table_name ) ) {
680
+ $queries ++;
681
+ $success = self::execute( QueryBuilder::getCreateTable( $table_name ) );
682
+ if ( $success !== true ) {
683
+ $errors[] = sprintf( 'Can`t create table <b>%s</b>, Error:%s', $table_name, $success );
684
+ }
685
+ }
686
+ if ( $schema->existsTable( $table_name ) ) {
687
+ $table_structure = $schema->getTableStructure( $table_name );
688
+ $entity_schema = $entity_class::getSchema();
689
+
690
+ // Comparing model schema with real DB schema
691
+ foreach ( $entity_schema as $column => $data ) {
692
+ if ( array_key_exists( $column, $table_structure ) ) {
693
+ $expect = QueryBuilder::getColumnData( $table_name, $column );
694
+ $actual = $table_structure[ $column ];
695
+ unset( $expect['key'], $actual['key'] );
696
+ if ( $expect && array_diff_assoc( $actual, $expect ) ) {
697
+ $sql = QueryBuilder::getChangeColumn( $table_name, $column );
698
+ if ( $table_structure[ $column ]['key'] == 'PRI' ) {
699
+ $sql = str_replace( ' primary key', '', $sql );
700
+ }
701
+ $queries ++;
702
+ $success = self::execute( $sql );
703
+ if ( $success !== true ) {
704
+ $errors[] = sprintf( 'Can`t change column <b>%s.%s</b>, Error:%s', $table_name, $column, $success );
705
+ }
706
+ }
707
+ } else {
708
+ $queries ++;
709
+ $success = self::execute( QueryBuilder::getAddColumn( $table_name, $column ) );
710
+ if ( $success !== true ) {
711
+ $errors[] = sprintf( 'Can`t add column <b>%s.%s</b>, Error:%s', $table_name, $column, $success );
712
+ }
713
+ }
714
+ }
715
+ }
716
+ }
717
+
718
+ foreach ( $plugin::getEntityClasses() as $entity_class ) {
719
+ $table_name = $entity_class::getTableName();
720
+ if ( $schema->existsTable( $table_name ) ) {
721
+ $entity_constraints = $entity_class::getConstraints();
722
+ $table_constraints = $schema->getTableConstraints( $table_name );
723
+ // Comparing model constraints with real DB constraints
724
+ foreach ( $entity_constraints as $constraint ) {
725
+ $key = $constraint['column_name'] . $constraint['referenced_table_name'] . $constraint['referenced_column_name'];
726
+ if ( ! array_key_exists( $key, $table_constraints ) ) {
727
+ $query = QueryBuilder::getAddConstraint( $table_name, $constraint['column_name'], $constraint['referenced_table_name'], $constraint['referenced_column_name'] );
728
+ if ( $query !== '' ) {
729
+ $queries ++;
730
+ $success = self::execute( $query );
731
+ if ( $success !== true ) {
732
+ $errors[] = sprintf( 'Can`t add constraint <b>%s.%s</b> REFERENCES `%s` (`%s`), Error:%s', $table_name, $constraint['column_name'], $constraint['referenced_table_name'], $constraint['referenced_column_name'], $success );
733
+ }
734
+ }
735
+ }
736
+ }
737
+
738
+ foreach ( $table_constraints as $constraint ) {
739
+ if ( $constraint['reference_exists'] === false ) {
740
+ $queries ++;
741
+ $success = self::execute( QueryBuilder::getDropForeignKey( $table_name, $constraint['constraint_name'] ) );
742
+ if ( $success !== true ) {
743
+ $errors[] = sprintf( 'Can`t drop foreign key <b>%s</b>, Error:%s', $constraint['constraint_name'], $success );
744
+ }
745
+ }
746
+ }
747
+ }
748
+ }
749
+ }
750
+
751
+ $message = ( $queries - count( $errors ) ) . ' queries completed successfully, with errors ' . count( $errors );
752
+ $errors
753
+ ? wp_send_json_error( compact( 'errors', 'message' ) )
754
+ : wp_send_json_success( compact( 'message' ) );
755
+ }
756
+
757
+ /**
758
+ * @param string $sql
759
+ * @return bool|string
760
+ */
761
+ protected static function execute( $sql )
762
+ {
763
+ global $wpdb;
764
 
765
  ob_start();
766
  $result = $wpdb->query( $sql );
767
  ob_end_clean();
768
 
769
+ return $result !== false ? true : $wpdb->last_error;
 
 
 
 
770
  }
771
  }
backend/modules/debug/Page.php CHANGED
@@ -2,16 +2,19 @@
2
  namespace Bookly\Backend\Modules\Debug;
3
 
4
  use Bookly\Lib;
 
 
5
 
6
  /**
7
  * Class Page
8
  * @package Bookly\Backend\Modules\Debug
9
  */
10
- class Page extends Lib\Base\Ajax
11
  {
12
  const TABLE_STATUS_OK = 1;
13
  const TABLE_STATUS_ERROR = 0;
14
  const TABLE_STATUS_WARNING = 2;
 
15
 
16
  /**
17
  * Render page.
@@ -39,48 +42,66 @@ class Page extends Lib\Base\Ajax
39
  'module' => array( 'js/debug.js' => array( 'jquery' ) ),
40
  ) );
41
 
42
- $debug = array();
 
43
  /** @var Lib\Base\Plugin $plugin */
44
  foreach ( apply_filters( 'bookly_plugins', array() ) as $plugin ) {
45
  foreach ( $plugin::getEntityClasses() as $entity_class ) {
46
- $tableName = $entity_class::getTableName();
47
- $debug[ $tableName ] = array(
48
  'fields' => null,
49
  'constraints' => null,
50
  'status' => null,
51
  );
52
- if ( self::_tableExists( $tableName ) ) {
53
- $tableStructure = self::_getTableStructure( $tableName );
54
- $tableConstraints = self::_getTableConstraints( $tableName );
55
- $entitySchema = $entity_class::getSchema();
56
- $entityConstraints = $entity_class::getConstraints();
57
- $debug[ $tableName ]['status'] = self::TABLE_STATUS_OK;
58
- $debug[ $tableName ]['fields'] = array();
59
 
60
  // Comparing model schema with real DB schema
61
- foreach ( $entitySchema as $field => $data ) {
62
- if ( in_array( $field, $tableStructure ) ) {
63
- $debug[ $tableName ]['fields'][ $field ] = 1;
 
 
 
 
 
 
 
 
64
  } else {
65
- $debug[ $tableName ]['fields'][ $field ] = 0;
66
- $debug[ $tableName ]['status'] = self::TABLE_STATUS_WARNING;
67
  }
68
  }
69
 
70
  // Comparing model constraints with real DB constraints
71
- foreach ( $entityConstraints as $constraint ) {
72
  $key = $constraint['column_name'] . $constraint['referenced_table_name'] . $constraint['referenced_column_name'];
73
- $debug[ $tableName ]['constraints'][ $key ] = $constraint;
74
- if ( array_key_exists ( $key, $tableConstraints ) ) {
75
- $debug[ $tableName ]['constraints'][ $key ]['status'] = 1;
76
  } else {
77
- $debug[ $tableName ]['constraints'][ $key ]['status'] = 0;
78
- $debug[ $tableName ]['status'] = self::TABLE_STATUS_WARNING;
 
 
 
 
 
 
 
 
 
79
  }
80
  }
81
 
82
  } else {
83
- $debug[ $tableName ]['status'] = self::TABLE_STATUS_ERROR;
84
  }
85
  }
86
  }
@@ -96,76 +117,4 @@ class Page extends Lib\Base\Ajax
96
  $import_status = self::parameter( 'status' );
97
  self::renderTemplate( 'index', compact( 'debug', 'import_status' ) );
98
  }
99
-
100
- /**
101
- * Get table structure
102
- *
103
- * @param string $tableName
104
- * @return array
105
- */
106
- protected static function _getTableStructure( $tableName )
107
- {
108
- global $wpdb;
109
-
110
- $tableStructure = array();
111
- $results = $wpdb->get_results( 'DESCRIBE `' . $tableName . '`;' );
112
- if ( $results ) {
113
- foreach ( $results as $row ) {
114
- $tableStructure[] = $row->Field;
115
- }
116
- }
117
-
118
- return $tableStructure;
119
- }
120
-
121
- /**
122
- * Get table constraints
123
- *
124
- * @param string $tableName
125
- * @return array
126
- */
127
- protected static function _getTableConstraints( $tableName )
128
- {
129
- global $wpdb;
130
-
131
- $tableConstraints = array();
132
- $results = $wpdb->get_results(
133
- 'SELECT
134
- COLUMN_NAME,
135
- CONSTRAINT_NAME,
136
- REFERENCED_COLUMN_NAME,
137
- REFERENCED_TABLE_NAME
138
- FROM information_schema.KEY_COLUMN_USAGE
139
- WHERE
140
- TABLE_NAME = "' . $tableName . '"
141
- AND CONSTRAINT_SCHEMA = SCHEMA()
142
- AND CONSTRAINT_NAME <> "PRIMARY";'
143
- );
144
- if ( $results ) {
145
- foreach ( $results as $row ) {
146
- $constraint = array(
147
- 'column_name' => $row->COLUMN_NAME,
148
- 'referenced_table_name' => $row->REFERENCED_COLUMN_NAME,
149
- 'referenced_column_name' => $row->REFERENCED_TABLE_NAME,
150
- );
151
- $key = $row->COLUMN_NAME . $row->REFERENCED_TABLE_NAME . $row->REFERENCED_COLUMN_NAME;
152
- $tableConstraints[ $key ] = $constraint;
153
- }
154
- }
155
-
156
- return $tableConstraints;
157
- }
158
-
159
- /**
160
- * Verifying if table exists
161
- *
162
- * @param string $tableName
163
- * @return int
164
- */
165
- protected static function _tableExists( $tableName )
166
- {
167
- global $wpdb;
168
-
169
- return $wpdb->query( 'SHOW TABLES LIKE "' . $tableName . '"' );
170
- }
171
  }
2
  namespace Bookly\Backend\Modules\Debug;
3
 
4
  use Bookly\Lib;
5
+ use Bookly\Backend\Modules\Debug\Lib\Schema;
6
+ use Bookly\Backend\Modules\Debug\Lib\QueryBuilder;
7
 
8
  /**
9
  * Class Page
10
  * @package Bookly\Backend\Modules\Debug
11
  */
12
+ class Page extends Lib\Base\Component
13
  {
14
  const TABLE_STATUS_OK = 1;
15
  const TABLE_STATUS_ERROR = 0;
16
  const TABLE_STATUS_WARNING = 2;
17
+ const TABLE_STATUS_INFO = 3;
18
 
19
  /**
20
  * Render page.
42
  'module' => array( 'js/debug.js' => array( 'jquery' ) ),
43
  ) );
44
 
45
+ $debug = array();
46
+ $schema = new Schema();
47
  /** @var Lib\Base\Plugin $plugin */
48
  foreach ( apply_filters( 'bookly_plugins', array() ) as $plugin ) {
49
  foreach ( $plugin::getEntityClasses() as $entity_class ) {
50
+ $table_name = $entity_class::getTableName();
51
+ $debug[ $table_name ] = array(
52
  'fields' => null,
53
  'constraints' => null,
54
  'status' => null,
55
  );
56
+ if ( $schema->existsTable( $table_name ) ) {
57
+ $table_structure = $schema->getTableStructure( $table_name );
58
+ $table_constraints = $schema->getTableConstraints( $table_name );
59
+ $entity_schema = $entity_class::getSchema();
60
+ $entity_constraints = $entity_class::getConstraints();
61
+ $debug[ $table_name ]['status'] = self::TABLE_STATUS_OK;
62
+ $debug[ $table_name ]['fields'] = array();
63
 
64
  // Comparing model schema with real DB schema
65
+ foreach ( $entity_schema as $field => $data ) {
66
+ if ( array_key_exists( $field, $table_structure ) ) {
67
+ $debug[ $table_name ]['fields'][ $field ] = 1;
68
+ $expect = QueryBuilder::getColumnData( $table_name, $field );
69
+ $actual = $table_structure[ $field ];
70
+ unset( $expect['key'], $actual['key'] );
71
+ $diff = array_diff_assoc( $actual, $expect );
72
+ if ( $expect && $diff ) {
73
+ $debug[ $table_name ]['status'] = self::TABLE_STATUS_INFO;
74
+ $debug[ $table_name ]['info'][ $field ] = array_keys( $diff );
75
+ }
76
  } else {
77
+ $debug[ $table_name ]['fields'][ $field ] = 0;
78
+ $debug[ $table_name ]['status'] = self::TABLE_STATUS_WARNING;
79
  }
80
  }
81
 
82
  // Comparing model constraints with real DB constraints
83
+ foreach ( $entity_constraints as $constraint ) {
84
  $key = $constraint['column_name'] . $constraint['referenced_table_name'] . $constraint['referenced_column_name'];
85
+ $debug[ $table_name ]['constraints'][ $key ] = $constraint;
86
+ if ( array_key_exists ( $key, $table_constraints ) ) {
87
+ $debug[ $table_name ]['constraints'][ $key ]['status'] = 1;
88
  } else {
89
+ $debug[ $table_name ]['constraints'][ $key ]['status'] = 0;
90
+ $debug[ $table_name ]['status'] = self::TABLE_STATUS_WARNING;
91
+ }
92
+ }
93
+ $debug[ $table_name ]['constraints_3d'] = array();
94
+ foreach ( $table_constraints as $constraint_name => $constraint ) {
95
+ $key = $constraint['column_name'] . $constraint['referenced_table_name'] . $constraint['referenced_column_name'];
96
+ if ( ! isset( $debug[ $table_name ]['constraints'][ $key ] ) ) {
97
+ $debug[ $table_name ]['constraints_3d'][ $key ] = $constraint;
98
+ $debug[ $table_name ]['constraints_3d'][ $key ]['status'] = 0;
99
+ $debug[ $table_name ]['status'] = self::TABLE_STATUS_WARNING;
100
  }
101
  }
102
 
103
  } else {
104
+ $debug[ $table_name ]['status'] = self::TABLE_STATUS_ERROR;
105
  }
106
  }
107
  }
117
  $import_status = self::parameter( 'status' );
118
  self::renderTemplate( 'index', compact( 'debug', 'import_status' ) );
119
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  }
backend/modules/debug/lib/QueryBuilder.php ADDED
@@ -0,0 +1,581 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Bookly\Backend\Modules\Debug\Lib;
3
+
4
+ /**
5
+ * Class QueryBuilder
6
+ * @package Bookly\Backend\Modules\Debug\Lib
7
+ */
8
+ class QueryBuilder
9
+ {
10
+ /**
11
+ * Get add column query
12
+ *
13
+ * @param string $table
14
+ * @param string $column
15
+ * @return string
16
+ */
17
+ public static function getAddColumn( $table, $column )
18
+ {
19
+ $data = self::getColumnData( $table, $column );
20
+ if ( $data ) {
21
+ return sprintf( 'ALTER TABLE `%s` ADD COLUMN `%s` %s',
22
+ $table,
23
+ $column,
24
+ self::getColumnDataType( $data )
25
+ );
26
+ }
27
+
28
+ return '';
29
+ }
30
+
31
+ /**
32
+ * Get drop foreign key query
33
+ *
34
+ * @param string $table
35
+ * @param string $constraint_name
36
+ * @return string
37
+ */
38
+ public static function getDropForeignKey( $table, $constraint_name )
39
+ {
40
+ return sprintf( 'ALTER TABLE `%s` DROP FOREIGN KEY `%s`',
41
+ $table,
42
+ $constraint_name
43
+ );
44
+ }
45
+
46
+ /**
47
+ * Get change column query
48
+ *
49
+ * @param string $table
50
+ * @param string $column
51
+ * @return string
52
+ */
53
+ public static function getChangeColumn( $table, $column )
54
+ {
55
+ $data = self::getColumnData( $table, $column );
56
+ if ( $data ) {
57
+ return sprintf( 'ALTER TABLE `%1$s` CHANGE COLUMN `%2$s` `%2$s` %3$s',
58
+ $table,
59
+ $column,
60
+ self::getColumnDataType( $data )
61
+ );
62
+ }
63
+
64
+ return '';
65
+ }
66
+
67
+ /**
68
+ * Get add constraint query
69
+ *
70
+ * @param string $table
71
+ * @param string $column
72
+ * @param string $ref_table
73
+ * @param string $ref_column
74
+ * @return bool|string
75
+ */
76
+ public static function getAddConstraint( $table, $column, $ref_table, $ref_column )
77
+ {
78
+ $rules = self::getConstraintRules( $table, $column, $ref_table, $ref_column );
79
+ $sql = sprintf( 'ALTER TABLE `%s` ADD CONSTRAINT FOREIGN KEY (`%s`) REFERENCES `%s` (`%s`)', $table, $column, $ref_table, $ref_column );
80
+ $delete_rule = $rules['DELETE_RULE'];
81
+ switch ( $delete_rule ) {
82
+ case 'RESTRICT':
83
+ case 'CASCADE':
84
+ case 'SET NULL':
85
+ case 'NO ACTIONS':
86
+ $sql .= ' ON DELETE ' . $delete_rule;
87
+ break;
88
+ default:
89
+ return false;
90
+ }
91
+ $update_rule = $rules['UPDATE_RULE'];
92
+ switch ( $update_rule ) {
93
+ case 'RESTRICT':
94
+ case 'CASCADE':
95
+ case 'SET NULL':
96
+ case 'NO ACTIONS':
97
+ $sql .= ' ON UPDATE ' . $update_rule;
98
+ break;
99
+ default:
100
+ return false;
101
+ }
102
+
103
+ return $sql;
104
+ }
105
+
106
+ /**
107
+ * Get create table query
108
+ *
109
+ * @param string $table
110
+ * @return string
111
+ */
112
+ public static function getCreateTable( $table )
113
+ {
114
+ /** @global \wpdb */
115
+ global $wpdb;
116
+
117
+ return sprintf( 'CREATE TABLE `%s` ( `id` %s, PRIMARY KEY (`id`)) ENGINE = INNODB %s',
118
+ $table,
119
+ str_replace( ' primary key', '', self::getColumnDataType( self::getColumnData( $table, 'id' ) ) ),
120
+ $wpdb->has_cap( 'collation' )
121
+ ? $wpdb->get_charset_collate()
122
+ : 'DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci'
123
+ );
124
+ }
125
+
126
+ /**
127
+ * Get column datat type array
128
+ *
129
+ * @param string $table
130
+ * @param string $column
131
+ * @return array
132
+ */
133
+ public static function getColumnData( $table, $column )
134
+ {
135
+ /*
136
+ SELECT CONCAT ( '\'', CONCAT_WS( '.', SUBSTR(TABLE_NAME,4), COLUMN_NAME ), '\' => array( \'type\' => "', COLUMN_TYPE, '", \'is_nullabe\' => ', IF(IS_NULLABLE = 'NO', '0', '1' ), ', \'extra\' => "', EXTRA, '", \'default\' => ', CONCAT (
137
+ IF (COLUMN_DEFAULT is NULL, IF( IS_NULLABLE = 'NO', COALESCE(COLUMN_DEFAULT,'null'), 'null' ), CONCAT('"',COALESCE(COLUMN_DEFAULT,''), '"'))), ', \'key\' => "' , COLUMN_KEY ,'" ),'
138
+ ) as l
139
+ FROM INFORMATION_SCHEMA.COLUMNS
140
+ WHERE TABLE_SCHEMA = SCHEMA()
141
+ AND TABLE_NAME LIKE 'wp_bookly_%'
142
+ ORDER BY TABLE_NAME, COLUMN_NAME
143
+ */
144
+
145
+ $data = array(
146
+ 'bookly_appointments.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
147
+ 'bookly_appointments.location_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
148
+ 'bookly_appointments.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
149
+ 'bookly_appointments.staff_any' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
150
+ 'bookly_appointments.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
151
+ 'bookly_appointments.custom_service_name' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
152
+ 'bookly_appointments.custom_service_price' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
153
+ 'bookly_appointments.start_date' => array( 'type' => "datetime", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
154
+ 'bookly_appointments.end_date' => array( 'type' => "datetime", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
155
+ 'bookly_appointments.extras_duration' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
156
+ 'bookly_appointments.internal_note' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
157
+ 'bookly_appointments.google_event_id' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
158
+ 'bookly_appointments.google_event_etag' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
159
+ 'bookly_appointments.outlook_event_id' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
160
+ 'bookly_appointments.outlook_event_change_key' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
161
+ 'bookly_appointments.outlook_event_series_id' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
162
+ 'bookly_appointments.created_from' => array( 'type' => "enum('bookly','google','outlook')", 'is_nullabe' => 0, 'extra' => "", 'default' => "bookly", 'key' => "" ),
163
+ 'bookly_appointments.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
164
+ 'bookly_categories.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
165
+ 'bookly_categories.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
166
+ 'bookly_categories.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
167
+ 'bookly_coupons.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
168
+ 'bookly_coupons.code' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
169
+ 'bookly_coupons.discount' => array( 'type' => "decimal(3,0)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
170
+ 'bookly_coupons.deduction' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
171
+ 'bookly_coupons.usage_limit' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
172
+ 'bookly_coupons.used' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
173
+ 'bookly_coupons.once_per_customer' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
174
+ 'bookly_coupons.date_limit_start' => array( 'type' => "date", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
175
+ 'bookly_coupons.date_limit_end' => array( 'type' => "date", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
176
+ 'bookly_coupons.min_appointments' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
177
+ 'bookly_coupons.max_appointments' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
178
+ 'bookly_coupon_customers.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
179
+ 'bookly_coupon_customers.coupon_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
180
+ 'bookly_coupon_customers.customer_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
181
+ 'bookly_coupon_services.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
182
+ 'bookly_coupon_services.coupon_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
183
+ 'bookly_coupon_services.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
184
+ 'bookly_coupon_staff.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
185
+ 'bookly_coupon_staff.coupon_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
186
+ 'bookly_coupon_staff.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
187
+ 'bookly_customers.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
188
+ 'bookly_customers.wp_user_id' => array( 'type' => "bigint(20) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
189
+ 'bookly_customers.facebook_id' => array( 'type' => "bigint(20) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
190
+ 'bookly_customers.group_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
191
+ 'bookly_customers.full_name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
192
+ 'bookly_customers.first_name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
193
+ 'bookly_customers.last_name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
194
+ 'bookly_customers.phone' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
195
+ 'bookly_customers.email' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
196
+ 'bookly_customers.birthday' => array( 'type' => "date", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
197
+ 'bookly_customers.country' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
198
+ 'bookly_customers.state' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
199
+ 'bookly_customers.postcode' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
200
+ 'bookly_customers.city' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
201
+ 'bookly_customers.street' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
202
+ 'bookly_customers.street_number' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
203
+ 'bookly_customers.additional_address' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
204
+ 'bookly_customers.notes' => array( 'type' => "text", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
205
+ 'bookly_customers.info_fields' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
206
+ 'bookly_customers.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
207
+ 'bookly_customer_appointments.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
208
+ 'bookly_customer_appointments.series_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
209
+ 'bookly_customer_appointments.package_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
210
+ 'bookly_customer_appointments.customer_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
211
+ 'bookly_customer_appointments.appointment_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
212
+ 'bookly_customer_appointments.payment_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
213
+ 'bookly_customer_appointments.number_of_persons' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
214
+ 'bookly_customer_appointments.units' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
215
+ 'bookly_customer_appointments.notes' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
216
+ 'bookly_customer_appointments.extras' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
217
+ 'bookly_customer_appointments.extras_multiply_nop' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
218
+ 'bookly_customer_appointments.extras_consider_duration' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
219
+ 'bookly_customer_appointments.custom_fields' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
220
+ 'bookly_customer_appointments.status' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "approved", 'key' => "" ),
221
+ 'bookly_customer_appointments.status_changed_at' => array( 'type' => "datetime", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
222
+ 'bookly_customer_appointments.token' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
223
+ 'bookly_customer_appointments.time_zone' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
224
+ 'bookly_customer_appointments.time_zone_offset' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
225
+ 'bookly_customer_appointments.rating' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
226
+ 'bookly_customer_appointments.rating_comment' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
227
+ 'bookly_customer_appointments.locale' => array( 'type' => "varchar(8)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
228
+ 'bookly_customer_appointments.collaborative_service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
229
+ 'bookly_customer_appointments.collaborative_token' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
230
+ 'bookly_customer_appointments.compound_service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
231
+ 'bookly_customer_appointments.compound_token' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
232
+ 'bookly_customer_appointments.created_from' => array( 'type' => "enum('frontend','backend')", 'is_nullabe' => 0, 'extra' => "", 'default' => "frontend", 'key' => "" ),
233
+ 'bookly_customer_appointments.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
234
+ 'bookly_customer_appointment_files.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
235
+ 'bookly_customer_appointment_files.customer_appointment_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
236
+ 'bookly_customer_appointment_files.file_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
237
+ 'bookly_customer_groups.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
238
+ 'bookly_customer_groups.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
239
+ 'bookly_customer_groups.description' => array( 'type' => "text", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
240
+ 'bookly_customer_groups.appointment_status' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
241
+ 'bookly_customer_groups.discount' => array( 'type' => "varchar(100)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
242
+ 'bookly_customer_groups_services.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
243
+ 'bookly_customer_groups_services.group_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
244
+ 'bookly_customer_groups_services.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
245
+ 'bookly_custom_statuses.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
246
+ 'bookly_custom_statuses.slug' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "UNI" ),
247
+ 'bookly_custom_statuses.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
248
+ 'bookly_custom_statuses.busy' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
249
+ 'bookly_custom_statuses.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
250
+ 'bookly_files.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
251
+ 'bookly_files.name' => array( 'type' => "text", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
252
+ 'bookly_files.slug' => array( 'type' => "varchar(32)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
253
+ 'bookly_files.path' => array( 'type' => "text", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
254
+ 'bookly_files.custom_field_id' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
255
+ 'bookly_holidays.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
256
+ 'bookly_holidays.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
257
+ 'bookly_holidays.parent_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
258
+ 'bookly_holidays.date' => array( 'type' => "date", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
259
+ 'bookly_holidays.repeat_event' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
260
+ 'bookly_locations.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
261
+ 'bookly_locations.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
262
+ 'bookly_locations.info' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
263
+ 'bookly_locations.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
264
+ 'bookly_messages.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
265
+ 'bookly_messages.message_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
266
+ 'bookly_messages.type' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
267
+ 'bookly_messages.subject' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
268
+ 'bookly_messages.body' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
269
+ 'bookly_messages.seen' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
270
+ 'bookly_messages.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
271
+ 'bookly_notifications.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
272
+ 'bookly_notifications.gateway' => array( 'type' => "enum('email','sms')", 'is_nullabe' => 0, 'extra' => "", 'default' => "email", 'key' => "" ),
273
+ 'bookly_notifications.type' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
274
+ 'bookly_notifications.active' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
275
+ 'bookly_notifications.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
276
+ 'bookly_notifications.subject' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
277
+ 'bookly_notifications.message' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
278
+ 'bookly_notifications.to_staff' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
279
+ 'bookly_notifications.to_customer' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
280
+ 'bookly_notifications.to_admin' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
281
+ 'bookly_notifications.attach_ics' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
282
+ 'bookly_notifications.attach_invoice' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
283
+ 'bookly_notifications.settings' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
284
+ 'bookly_packages.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
285
+ 'bookly_packages.location_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
286
+ 'bookly_packages.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
287
+ 'bookly_packages.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
288
+ 'bookly_packages.customer_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
289
+ 'bookly_packages.internal_note' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
290
+ 'bookly_packages.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
291
+ 'bookly_payments.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
292
+ 'bookly_payments.coupon_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
293
+ 'bookly_payments.type' => array( 'type' => "enum('local','free','paypal','authorize_net','stripe','2checkout','payu_biz','payu_latam','payson','mollie','woocommerce')", 'is_nullabe' => 0, 'extra' => "", 'default' => "local", 'key' => "" ),
294
+ 'bookly_payments.total' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
295
+ 'bookly_payments.tax' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
296
+ 'bookly_payments.paid' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
297
+ 'bookly_payments.paid_type' => array( 'type' => "enum('in_full','deposit')", 'is_nullabe' => 0, 'extra' => "", 'default' => "in_full", 'key' => "" ),
298
+ 'bookly_payments.gateway_price_correction' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 1, 'extra' => "", 'default' => "0.00", 'key' => "" ),
299
+ 'bookly_payments.status' => array( 'type' => "enum('pending','completed','rejected')", 'is_nullabe' => 0, 'extra' => "", 'default' => "completed", 'key' => "" ),
300
+ 'bookly_payments.details' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
301
+ 'bookly_payments.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
302
+ 'bookly_schedule_item_breaks.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
303
+ 'bookly_schedule_item_breaks.staff_schedule_item_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
304
+ 'bookly_schedule_item_breaks.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
305
+ 'bookly_schedule_item_breaks.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
306
+ 'bookly_sent_notifications.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
307
+ 'bookly_sent_notifications.ref_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
308
+ 'bookly_sent_notifications.notification_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
309
+ 'bookly_sent_notifications.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
310
+ 'bookly_series.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
311
+ 'bookly_series.repeat' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
312
+ 'bookly_series.token' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
313
+ 'bookly_services.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
314
+ 'bookly_services.category_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
315
+ 'bookly_services.type' => array( 'type' => "enum('simple','collaborative','compound','package')", 'is_nullabe' => 0, 'extra' => "", 'default' => "simple", 'key' => "" ),
316
+ 'bookly_services.title' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
317
+ 'bookly_services.duration' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "900", 'key' => "" ),
318
+ 'bookly_services.slot_length' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "default", 'key' => "" ),
319
+ 'bookly_services.price' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
320
+ 'bookly_services.color' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "#FFFFFF", 'key' => "" ),
321
+ 'bookly_services.deposit' => array( 'type' => "varchar(100)", 'is_nullabe' => 0, 'extra' => "", 'default' => "100%", 'key' => "" ),
322
+ 'bookly_services.capacity_min' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
323
+ 'bookly_services.capacity_max' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
324
+ 'bookly_services.one_booking_per_slot' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
325
+ 'bookly_services.padding_left' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
326
+ 'bookly_services.padding_right' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
327
+ 'bookly_services.info' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
328
+ 'bookly_services.start_time_info' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
329
+ 'bookly_services.end_time_info' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
330
+ 'bookly_services.units_min' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
331
+ 'bookly_services.units_max' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
332
+ 'bookly_services.package_life_time' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
333
+ 'bookly_services.package_size' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
334
+ 'bookly_services.package_unassigned' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
335
+ 'bookly_services.appointments_limit' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
336
+ 'bookly_services.limit_period' => array( 'type' => "enum('off','day','week','month','year','upcoming','calendar_day','calendar_week','calendar_month','calendar_year')", 'is_nullabe' => 0, 'extra' => "", 'default' => "off", 'key' => "" ),
337
+ 'bookly_services.staff_preference' => array( 'type' => "enum('order','least_occupied','most_occupied','least_occupied_for_period','most_occupied_for_period','least_expensive','most_expensive')", 'is_nullabe' => 0, 'extra' => "", 'default' => "most_expensive", 'key' => "" ),
338
+ 'bookly_services.staff_preference_settings' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
339
+ 'bookly_services.recurrence_enabled' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
340
+ 'bookly_services.recurrence_frequencies' => array( 'type' => "set('daily','weekly','biweekly','monthly')", 'is_nullabe' => 0, 'extra' => "", 'default' => "daily,weekly,biweekly,monthly", 'key' => "" ),
341
+ 'bookly_services.time_requirements' => array( 'type' => "enum('required','optional','off')", 'is_nullabe' => 0, 'extra' => "", 'default' => "required", 'key' => "" ),
342
+ 'bookly_services.collaborative_equal_duration' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
343
+ 'bookly_services.visibility' => array( 'type' => "enum('public','private','group')", 'is_nullabe' => 0, 'extra' => "", 'default' => "public", 'key' => "" ),
344
+ 'bookly_services.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
345
+ 'bookly_service_extras.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
346
+ 'bookly_service_extras.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
347
+ 'bookly_service_extras.attachment_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
348
+ 'bookly_service_extras.title' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
349
+ 'bookly_service_extras.duration' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
350
+ 'bookly_service_extras.price' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
351
+ 'bookly_service_extras.max_quantity' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
352
+ 'bookly_service_extras.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
353
+ 'bookly_service_schedule_breaks.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
354
+ 'bookly_service_schedule_breaks.service_schedule_day_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
355
+ 'bookly_service_schedule_breaks.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
356
+ 'bookly_service_schedule_breaks.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
357
+ 'bookly_service_schedule_days.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
358
+ 'bookly_service_schedule_days.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
359
+ 'bookly_service_schedule_days.day_index' => array( 'type' => "smallint(6)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
360
+ 'bookly_service_schedule_days.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
361
+ 'bookly_service_schedule_days.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
362
+ 'bookly_service_special_days.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
363
+ 'bookly_service_special_days.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
364
+ 'bookly_service_special_days.date' => array( 'type' => "date", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
365
+ 'bookly_service_special_days.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
366
+ 'bookly_service_special_days.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
367
+ 'bookly_service_special_days_breaks.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
368
+ 'bookly_service_special_days_breaks.service_special_day_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
369
+ 'bookly_service_special_days_breaks.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
370
+ 'bookly_service_special_days_breaks.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
371
+ 'bookly_service_taxes.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
372
+ 'bookly_service_taxes.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
373
+ 'bookly_service_taxes.tax_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
374
+ 'bookly_shop.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
375
+ 'bookly_shop.plugin_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
376
+ 'bookly_shop.type' => array( 'type' => "enum('plugin','bundle')", 'is_nullabe' => 0, 'extra' => "", 'default' => "plugin", 'key' => "" ),
377
+ 'bookly_shop.highlighted' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
378
+ 'bookly_shop.priority' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => "0", 'key' => "" ),
379
+ 'bookly_shop.demo_url' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
380
+ 'bookly_shop.title' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
381
+ 'bookly_shop.slug' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
382
+ 'bookly_shop.description' => array( 'type' => "text", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
383
+ 'bookly_shop.url' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
384
+ 'bookly_shop.icon' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
385
+ 'bookly_shop.price' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
386
+ 'bookly_shop.sales' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
387
+ 'bookly_shop.rating' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
388
+ 'bookly_shop.reviews' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
389
+ 'bookly_shop.published' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
390
+ 'bookly_shop.seen' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
391
+ 'bookly_shop.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
392
+ 'bookly_special_days_breaks.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
393
+ 'bookly_special_days_breaks.staff_special_day_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
394
+ 'bookly_special_days_breaks.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
395
+ 'bookly_special_days_breaks.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
396
+ 'bookly_staff.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
397
+ 'bookly_staff.category_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
398
+ 'bookly_staff.wp_user_id' => array( 'type' => "bigint(20) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
399
+ 'bookly_staff.attachment_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
400
+ 'bookly_staff.full_name' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
401
+ 'bookly_staff.email' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
402
+ 'bookly_staff.phone' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
403
+ 'bookly_staff.info' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
404
+ 'bookly_staff.working_time_limit' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
405
+ 'bookly_staff.visibility' => array( 'type' => "enum('public','private','archive')", 'is_nullabe' => 0, 'extra' => "", 'default' => "public", 'key' => "" ),
406
+ 'bookly_staff.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
407
+ 'bookly_staff.google_data' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
408
+ 'bookly_staff.outlook_data' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
409
+ 'bookly_staff_categories.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
410
+ 'bookly_staff_categories.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
411
+ 'bookly_staff_categories.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
412
+ 'bookly_staff_locations.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
413
+ 'bookly_staff_locations.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
414
+ 'bookly_staff_locations.location_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
415
+ 'bookly_staff_locations.custom_services' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
416
+ 'bookly_staff_locations.custom_schedule' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
417
+ 'bookly_staff_preference_orders.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
418
+ 'bookly_staff_preference_orders.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
419
+ 'bookly_staff_preference_orders.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
420
+ 'bookly_staff_preference_orders.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
421
+ 'bookly_staff_schedule_items.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
422
+ 'bookly_staff_schedule_items.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
423
+ 'bookly_staff_schedule_items.location_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
424
+ 'bookly_staff_schedule_items.day_index' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
425
+ 'bookly_staff_schedule_items.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
426
+ 'bookly_staff_schedule_items.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
427
+ 'bookly_staff_services.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
428
+ 'bookly_staff_services.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
429
+ 'bookly_staff_services.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
430
+ 'bookly_staff_services.location_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
431
+ 'bookly_staff_services.price' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
432
+ 'bookly_staff_services.deposit' => array( 'type' => "varchar(100)", 'is_nullabe' => 0, 'extra' => "", 'default' => "100%", 'key' => "" ),
433
+ 'bookly_staff_services.capacity_min' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
434
+ 'bookly_staff_services.capacity_max' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
435
+ 'bookly_staff_special_days.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
436
+ 'bookly_staff_special_days.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
437
+ 'bookly_staff_special_days.date' => array( 'type' => "date", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
438
+ 'bookly_staff_special_days.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
439
+ 'bookly_staff_special_days.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
440
+ 'bookly_staff_special_hours.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
441
+ 'bookly_staff_special_hours.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
442
+ 'bookly_staff_special_hours.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
443
+ 'bookly_staff_special_hours.location_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
444
+ 'bookly_staff_special_hours.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
445
+ 'bookly_staff_special_hours.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
446
+ 'bookly_staff_special_hours.price' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
447
+ 'bookly_stats.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
448
+ 'bookly_stats.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
449
+ 'bookly_stats.value' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
450
+ 'bookly_stats.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
451
+ 'bookly_sub_services.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
452
+ 'bookly_sub_services.type' => array( 'type' => "enum('service','spare_time')", 'is_nullabe' => 0, 'extra' => "", 'default' => "service", 'key' => "" ),
453
+ 'bookly_sub_services.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
454
+ 'bookly_sub_services.sub_service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
455
+ 'bookly_sub_services.duration' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
456
+ 'bookly_sub_services.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
457
+ 'bookly_taxes.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
458
+ 'bookly_taxes.title' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
459
+ 'bookly_taxes.rate' => array( 'type' => "decimal(10,3)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.000", 'key' => "" ),
460
+ );
461
+
462
+ /** @global \wpdb */
463
+ global $wpdb;
464
+
465
+ $prefix_len = strlen( $wpdb->prefix );
466
+ $key = substr( $table, $prefix_len ) . '.' . $column;
467
+
468
+ return array_key_exists( $key, $data )
469
+ ? $data[ $key ]
470
+ : array();
471
+ }
472
+
473
+ /**
474
+ * Get constraint rules
475
+ *
476
+ * @param string $table
477
+ * @param string $column
478
+ * @param string $ref_table
479
+ * @param string $ref_column
480
+ * @return array
481
+ */
482
+ private static function getConstraintRules( $table, $column, $ref_table, $ref_column )
483
+ {
484
+ /*
485
+ SELECT CONCAT_WS( '.', SUBSTR(kcu.TABLE_NAME,4), kcu.COLUMN_NAME ) AS field
486
+ , CONCAT_WS( '.', SUBSTR(kcu.REFERENCED_TABLE_NAME,4), kcu.REFERENCED_COLUMN_NAME ) AS ref
487
+ , rc.UPDATE_RULE
488
+ , rc.DELETE_RULE
489
+ FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS rc
490
+ LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS kcu ON ( rc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME )
491
+ WHERE unique_CONSTRAINT_SCHEMA = SCHEMA()
492
+ AND rc.CONSTRAINT_NAME LIKE 'wp_bookly_%'
493
+ GROUP BY rc.CONSTRAINT_NAME
494
+ */
495
+
496
+ $rules = array (
497
+ 'bookly_appointments.location_id' => array( 'bookly_locations.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
498
+ 'bookly_appointments.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
499
+ 'bookly_appointments.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
500
+ 'bookly_coupon_customers.coupon_id' => array( 'bookly_coupons.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
501
+ 'bookly_coupon_customers.customer_id' => array( 'bookly_customers.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
502
+ 'bookly_coupon_services.coupon_id' => array( 'bookly_coupons.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
503
+ 'bookly_coupon_services.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
504
+ 'bookly_coupon_staff.coupon_id' => array( 'bookly_coupons.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
505
+ 'bookly_coupon_staff.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
506
+ 'bookly_customer_appointment_files.customer_appointment_id' => array( 'bookly_customer_appointments.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
507
+ 'bookly_customer_appointment_files.file_id' => array( 'bookly_files.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
508
+ 'bookly_customer_appointments.appointment_id' => array( 'bookly_appointments.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
509
+ 'bookly_customer_appointments.customer_id' => array( 'bookly_customers.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
510
+ 'bookly_customer_appointments.package_id' => array( 'bookly_packages.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
511
+ 'bookly_customer_appointments.payment_id' => array( 'bookly_payments.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
512
+ 'bookly_customer_appointments.series_id' => array( 'bookly_series.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
513
+ 'bookly_customer_groups_services.group_id' => array( 'bookly_customer_groups.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
514
+ 'bookly_customer_groups_services.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
515
+ 'bookly_customers.group_id' => array( 'bookly_customer_groups.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
516
+ 'bookly_holidays.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'RESTRICT', 'DELETE_RULE' => 'CASCADE', ), ),
517
+ 'bookly_packages.customer_id' => array( 'bookly_customers.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
518
+ 'bookly_packages.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
519
+ 'bookly_packages.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
520
+ 'bookly_payments.coupon_id' => array( 'bookly_coupons.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
521
+ 'bookly_schedule_item_breaks.staff_schedule_item_id' => array( 'bookly_staff_schedule_items.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
522
+ 'bookly_sent_notifications.notification_id' => array( 'bookly_notifications.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
523
+ 'bookly_service_extras.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
524
+ 'bookly_service_schedule_breaks.service_schedule_day_id' => array( 'bookly_service_schedule_days.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
525
+ 'bookly_service_schedule_days.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
526
+ 'bookly_service_special_days.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
527
+ 'bookly_service_special_days_breaks.service_special_day_id' => array( 'bookly_service_special_days.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
528
+ 'bookly_service_taxes.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
529
+ 'bookly_service_taxes.tax_id' => array( 'bookly_taxes.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
530
+ 'bookly_services.category_id' => array( 'bookly_categories.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
531
+ 'bookly_special_days_breaks.staff_special_day_id' => array( 'bookly_staff_special_days.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
532
+ 'bookly_staff.category_id' => array( 'bookly_staff_categories.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
533
+ 'bookly_staff_locations.location_id' => array( 'bookly_locations.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
534
+ 'bookly_staff_locations.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
535
+ 'bookly_staff_preference_orders.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
536
+ 'bookly_staff_preference_orders.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
537
+ 'bookly_staff_schedule_items.location_id' => array( 'bookly_locations.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
538
+ 'bookly_staff_schedule_items.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
539
+ 'bookly_staff_services.location_id' => array( 'bookly_locations.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
540
+ 'bookly_staff_services.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
541
+ 'bookly_staff_services.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
542
+ 'bookly_staff_special_days.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
543
+ 'bookly_staff_special_hours.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
544
+ 'bookly_staff_special_hours.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
545
+ 'bookly_sub_services.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
546
+ 'bookly_sub_services.sub_service_id' => array( 'bookly_services.id' => array ( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
547
+ );
548
+
549
+ /** @global \wpdb */
550
+ global $wpdb;
551
+
552
+ $prefix_len = strlen( $wpdb->prefix );
553
+ $key = substr( $table, $prefix_len ) . '.' . $column;
554
+ $ref = substr( $ref_table, $prefix_len ) . '.' . $ref_column;
555
+ if ( isset( $rules[ $key ][ $ref ] ) ) {
556
+ return $rules[ $key ][ $ref ];
557
+ } else {
558
+ return array( 'UPDATE_RULE' => null, 'DELETE_RULE' => null );
559
+ }
560
+ }
561
+
562
+ /**
563
+ * @param array $data
564
+ * @return string
565
+ */
566
+ private static function getColumnDataType( array $data )
567
+ {
568
+ return sprintf( '%s %s %s',
569
+ $data['type'],
570
+ $data['is_nullabe']
571
+ ? 'null'
572
+ : 'not null',
573
+ $data['extra'] === 'auto_increment'
574
+ ? ( 'auto_increment' . ( $data['key'] === 'PRI' ? ' primary key' : '' ) )
575
+ : ( $data['default'] === null
576
+ ? ( $data['is_nullabe'] ? 'default null' : '' )
577
+ : 'default \'' . $data['default'] . '\''
578
+ )
579
+ );
580
+ }
581
+ }
backend/modules/debug/lib/Schema.php ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Bookly\Backend\Modules\Debug\Lib;
3
+
4
+ /**
5
+ * Class Schema
6
+ * @package Bookly\Backend\Modules\Debug\Lib
7
+ */
8
+ class Schema
9
+ {
10
+ /**
11
+ * Get table constraints
12
+ *
13
+ * @param string $table
14
+ * @return array
15
+ */
16
+ public function getTableConstraints( $table )
17
+ {
18
+ /** @global \wpdb $wpdb */
19
+ global $wpdb;
20
+
21
+ $tableConstraints = array();
22
+ $records = $wpdb->get_results(
23
+ 'SELECT COLUMN_NAME
24
+ , CONSTRAINT_NAME
25
+ , REFERENCED_COLUMN_NAME
26
+ , REFERENCED_TABLE_NAME
27
+ FROM information_schema.KEY_COLUMN_USAGE
28
+ WHERE TABLE_NAME = "' . $table . '"
29
+ AND REFERENCED_TABLE_NAME IS NOT NULL
30
+ AND CONSTRAINT_SCHEMA = SCHEMA()
31
+ AND CONSTRAINT_NAME <> "PRIMARY";'
32
+ );
33
+ if ( $records ) {
34
+ foreach ( $records as $row ) {
35
+ $constraint = array(
36
+ 'column_name' => $row->COLUMN_NAME,
37
+ 'referenced_table_name' => $row->REFERENCED_TABLE_NAME,
38
+ 'referenced_column_name' => $row->REFERENCED_COLUMN_NAME,
39
+ 'constraint_name' => $row->CONSTRAINT_NAME,
40
+ 'reference_exists' => $this->existsColumn( $row->REFERENCED_TABLE_NAME, $row->REFERENCED_COLUMN_NAME ),
41
+ );
42
+ $key = $row->COLUMN_NAME . $row->REFERENCED_TABLE_NAME . $row->REFERENCED_COLUMN_NAME;
43
+ $tableConstraints[ $key ] = $constraint;
44
+ }
45
+ }
46
+
47
+ return $tableConstraints;
48
+ }
49
+
50
+ /**
51
+ * Check exists table
52
+ *
53
+ * @param string $table
54
+ * @return bool
55
+ */
56
+ public function existsTable( $table )
57
+ {
58
+ global $wpdb;
59
+
60
+ return (bool) $wpdb->query( $wpdb->prepare(
61
+ 'SELECT 1 FROM `information_schema`.`tables` WHERE TABLE_NAME = %s AND TABLE_SCHEMA = SCHEMA() LIMIT 1',
62
+ $table
63
+ ) );
64
+ }
65
+
66
+ /**
67
+ * Get table structure
68
+ *
69
+ * @param string $table
70
+ * @return array
71
+ */
72
+ public function getTableStructure( $table )
73
+ {
74
+ global $wpdb;
75
+
76
+ $tableStructure = array();
77
+ $results = $wpdb->get_results( 'DESCRIBE `' . $table . '`;', ARRAY_A );
78
+ if ( $results ) {
79
+ foreach ( $results as $row ) {
80
+ $tableStructure[ $row['Field'] ] = array(
81
+ 'type' => $row['Type'],
82
+ 'is_nullabe' => $row['Null'] === 'YES' ? 1 : 0,
83
+ 'extra' => $row['Extra'],
84
+ 'default' => $row['Default'],
85
+ 'key' => $row['Key']
86
+ );
87
+ }
88
+ }
89
+
90
+ return $tableStructure;
91
+ }
92
+
93
+ /**
94
+ * Check exists column in table
95
+ *
96
+ * @param string $table
97
+ * @param string $column_name
98
+ * @return bool
99
+ */
100
+ protected function existsColumn( $table, $column_name )
101
+ {
102
+ global $wpdb;
103
+
104
+ return (bool) $wpdb->query( $wpdb->prepare( 'SELECT 1 FROM information_schema.COLUMNS
105
+ WHERE TABLE_NAME = %s AND COLUMN_NAME = %s AND TABLE_SCHEMA = SCHEMA() LIMIT 1',
106
+ $table,
107
+ $column_name
108
+ ) );
109
+ }
110
+ }
backend/modules/debug/resources/js/debug.js CHANGED
@@ -1,5 +1,6 @@
1
  jQuery(function($) {
2
- let $constraintModal = $('#bookly-js-add-constraint'),
 
3
  $columnModal = $('#bookly-js-add-field'),
4
  $tableModal = $('#bookly-js-create-table'),
5
  $status,
@@ -12,6 +13,38 @@ jQuery(function($) {
12
  $('#bookly_import').submit();
13
  }
14
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
 
16
  $('[data-action=fix-constraint]')
17
  .on('click', function (e) {
@@ -23,10 +56,10 @@ jQuery(function($) {
23
  ref_table = $tr.find('td:eq(1)').html(),
24
  ref_column = $tr.find('td:eq(2)').html()
25
  ;
26
- $('.bookly-js-loading:first-child', $constraintModal).addClass('bookly-loading').removeClass('collapse');
27
- $('.bookly-js-loading:last-child', $constraintModal).addClass('collapse');
28
- $('.bookly-js-fix-consistency', $constraintModal).hide();
29
- $constraintModal.modal();
30
  $.ajax({
31
  url: ajaxurl,
32
  type: 'POST',
@@ -41,22 +74,35 @@ jQuery(function($) {
41
  dataType: 'json',
42
  success: function (response) {
43
  if (response.success) {
44
- $('#bookly-js-table, .bookly-js-table', $constraintModal).html(table);
45
- $('#bookly-js-column, .bookly-js-column', $constraintModal).html(column);
46
- $('#bookly-js-ref_table, .bookly-js-ref_table', $constraintModal).html(ref_table);
47
- $('#bookly-js-ref_column, .bookly-js-ref_column', $constraintModal).html(ref_column);
48
- $('#bookly-js-DELETE_RULE', $constraintModal).val(response.data.DELETE_RULE);
49
- $('#bookly-js-UPDATE_RULE', $constraintModal).val(response.data.UPDATE_RULE);
50
  } else {
51
- $('#bookly-js-DELETE_RULE', $constraintModal).val('');
52
- $('#bookly-js-DELETE_RULE', $constraintModal).val('');
53
  }
54
- $('.bookly-js-loading', $constraintModal).toggleClass('collapse');
55
  }
56
  });
57
  });
58
 
59
- $constraintModal
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  .on('click', '.bookly-js-save', function () {
61
  let ladda = Ladda.create(this);
62
  ladda.start();
@@ -65,23 +111,23 @@ jQuery(function($) {
65
  type : 'POST',
66
  data : {
67
  action : 'bookly_add_constraint',
68
- table : $('#bookly-js-table', $constraintModal).html(),
69
- column : $('#bookly-js-column', $constraintModal).html(),
70
- ref_table : $('#bookly-js-ref_table', $constraintModal).html(),
71
- ref_column : $('#bookly-js-ref_column', $constraintModal).html(),
72
- delete_rule : $('#bookly-js-DELETE_RULE', $constraintModal).val(),
73
- update_rule : $('#bookly-js-UPDATE_RULE', $constraintModal).val(),
74
  csrf_token : BooklyL10n.csrfToken
75
  },
76
  dataType : 'json',
77
  success : function (response) {
78
  if (response.success) {
79
  booklyAlert({success: [response.data.message]});
80
- $constraintModal.modal('hide');
81
  $status.html('OK');
82
  } else {
83
  booklyAlert({error : [response.data.message]});
84
- $('.bookly-js-fix-consistency', $constraintModal).show();
85
  }
86
  ladda.stop();
87
  },
@@ -94,16 +140,16 @@ jQuery(function($) {
94
  .on('click', '[data-action=fix-consistency]', function (e) {
95
  e.preventDefault();
96
  let $button = $(this),
97
- table = $('#bookly-js-table', $constraintModal).html(),
98
- column = $('#bookly-js-column', $constraintModal).html(),
99
- ref_table = $('#bookly-js-ref_table', $constraintModal).html(),
100
- ref_column = $('#bookly-js-ref_column', $constraintModal).html(),
101
  data = {
102
  action : 'bookly_fix_consistency',
103
- table : $('#bookly-js-table', $constraintModal).html(),
104
- column : $('#bookly-js-column', $constraintModal).html(),
105
- ref_table : $('#bookly-js-ref_table', $constraintModal).html(),
106
- ref_column : $('#bookly-js-ref_column', $constraintModal).html(),
107
  csrf_token : BooklyL10n.csrfToken,
108
  rule : ''
109
  },
@@ -111,7 +157,7 @@ jQuery(function($) {
111
  ladda = ''
112
  ;
113
  if ($button.hasClass('bookly-js-auto')) {
114
- data.rule = $('#bookly-js-DELETE_RULE', $constraintModal).val();
115
  ladda = Ladda.create(this);
116
  } else {
117
  if ($button.hasClass('bookly-js-delete')) {
@@ -145,7 +191,7 @@ jQuery(function($) {
145
  success : function (response) {
146
  if (response.success) {
147
  booklyAlert({success: [response.data.message]});
148
- $('.bookly-js-fix-consistency', $constraintModal).hide();
149
  } else {
150
  booklyAlert({error : [response.data.message]});
151
  }
@@ -285,4 +331,37 @@ jQuery(function($) {
285
  }
286
  });
287
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
288
  });
1
  jQuery(function($) {
2
+ let $addConstraintModal = $('#bookly-js-add-constraint'),
3
+ $dropConstraintModal = $('#bookly-js-drop-constraint'),
4
  $columnModal = $('#bookly-js-add-field'),
5
  $tableModal = $('#bookly-js-create-table'),
6
  $status,
13
  $('#bookly_import').submit();
14
  }
15
  });
16
+ $('#bookly-fix-all-silent').on('click', function () {
17
+ if (confirm('Execute automatic fixing issues found in database schema?')) {
18
+ let ladda = Ladda.create(this);
19
+ ladda.start();
20
+ $.ajax({
21
+ url : ajaxurl,
22
+ type : 'POST',
23
+ data : {
24
+ action: 'bookly_fix_data_base_schema',
25
+ csrf_token: BooklyL10n.csrfToken
26
+ },
27
+ dataType : 'json',
28
+ success : function (response) {
29
+ booklyAlert({success: [response.data.message]});
30
+ if (!response.success) {
31
+ booklyAlert({error: response.data.errors});
32
+ }
33
+ ladda.stop();
34
+ },
35
+ error: function () {
36
+ booklyAlert({error: ['Error: in query execution.']});
37
+ ladda.stop();
38
+ },
39
+ }).always(function () {
40
+ setTimeout(function () {
41
+ if (confirm('Reload page?')) {
42
+ location.reload();
43
+ }
44
+ }, 3000);
45
+ });
46
+ }
47
+ });
48
 
49
  $('[data-action=fix-constraint]')
50
  .on('click', function (e) {
56
  ref_table = $tr.find('td:eq(1)').html(),
57
  ref_column = $tr.find('td:eq(2)').html()
58
  ;
59
+ $('.bookly-js-loading:first-child', $addConstraintModal).addClass('bookly-loading').removeClass('collapse');
60
+ $('.bookly-js-loading:last-child', $addConstraintModal).addClass('collapse');
61
+ $('.bookly-js-fix-consistency', $addConstraintModal).hide();
62
+ $addConstraintModal.modal();
63
  $.ajax({
64
  url: ajaxurl,
65
  type: 'POST',
74
  dataType: 'json',
75
  success: function (response) {
76
  if (response.success) {
77
+ $('#bookly-js-table, .bookly-js-table', $addConstraintModal).html(table);
78
+ $('#bookly-js-column, .bookly-js-column', $addConstraintModal).html(column);
79
+ $('#bookly-js-ref_table, .bookly-js-ref_table', $addConstraintModal).html(ref_table);
80
+ $('#bookly-js-ref_column, .bookly-js-ref_column', $addConstraintModal).html(ref_column);
81
+ $('#bookly-js-DELETE_RULE', $addConstraintModal).val(response.data.DELETE_RULE);
82
+ $('#bookly-js-UPDATE_RULE', $addConstraintModal).val(response.data.UPDATE_RULE);
83
  } else {
84
+ $('#bookly-js-DELETE_RULE', $addConstraintModal).val('');
85
+ $('#bookly-js-DELETE_RULE', $addConstraintModal).val('');
86
  }
87
+ $('.bookly-js-loading', $addConstraintModal).toggleClass('collapse');
88
  }
89
  });
90
  });
91
 
92
+ $('[data-action=drop-constraint]')
93
+ .on('click', function (e) {
94
+ e.preventDefault();
95
+ $status = $(this).closest('td');
96
+ let $tr = $(this).closest('tr'),
97
+ table = $tr.closest('.panel-collapse').attr('id'),
98
+ constrain = $tr.find('td:eq(2)').html()
99
+ ;
100
+ $dropConstraintModal.modal();
101
+ $('#bookly-js-table', $dropConstraintModal).html(table);
102
+ $('#bookly-js-constraint', $dropConstraintModal).html(constrain);
103
+ });
104
+
105
+ $addConstraintModal
106
  .on('click', '.bookly-js-save', function () {
107
  let ladda = Ladda.create(this);
108
  ladda.start();
111
  type : 'POST',
112
  data : {
113
  action : 'bookly_add_constraint',
114
+ table : $('#bookly-js-table', $addConstraintModal).html(),
115
+ column : $('#bookly-js-column', $addConstraintModal).html(),
116
+ ref_table : $('#bookly-js-ref_table', $addConstraintModal).html(),
117
+ ref_column : $('#bookly-js-ref_column', $addConstraintModal).html(),
118
+ delete_rule : $('#bookly-js-DELETE_RULE', $addConstraintModal).val(),
119
+ update_rule : $('#bookly-js-UPDATE_RULE', $addConstraintModal).val(),
120
  csrf_token : BooklyL10n.csrfToken
121
  },
122
  dataType : 'json',
123
  success : function (response) {
124
  if (response.success) {
125
  booklyAlert({success: [response.data.message]});
126
+ $addConstraintModal.modal('hide');
127
  $status.html('OK');
128
  } else {
129
  booklyAlert({error : [response.data.message]});
130
+ $('.bookly-js-fix-consistency', $addConstraintModal).show();
131
  }
132
  ladda.stop();
133
  },
140
  .on('click', '[data-action=fix-consistency]', function (e) {
141
  e.preventDefault();
142
  let $button = $(this),
143
+ table = $('#bookly-js-table', $addConstraintModal).html(),
144
+ column = $('#bookly-js-column', $addConstraintModal).html(),
145
+ ref_table = $('#bookly-js-ref_table', $addConstraintModal).html(),
146
+ ref_column = $('#bookly-js-ref_column', $addConstraintModal).html(),
147
  data = {
148
  action : 'bookly_fix_consistency',
149
+ table : $('#bookly-js-table', $addConstraintModal).html(),
150
+ column : $('#bookly-js-column', $addConstraintModal).html(),
151
+ ref_table : $('#bookly-js-ref_table', $addConstraintModal).html(),
152
+ ref_column : $('#bookly-js-ref_column', $addConstraintModal).html(),
153
  csrf_token : BooklyL10n.csrfToken,
154
  rule : ''
155
  },
157
  ladda = ''
158
  ;
159
  if ($button.hasClass('bookly-js-auto')) {
160
+ data.rule = $('#bookly-js-DELETE_RULE', $addConstraintModal).val();
161
  ladda = Ladda.create(this);
162
  } else {
163
  if ($button.hasClass('bookly-js-delete')) {
191
  success : function (response) {
192
  if (response.success) {
193
  booklyAlert({success: [response.data.message]});
194
+ $('.bookly-js-fix-consistency', $addConstraintModal).hide();
195
  } else {
196
  booklyAlert({error : [response.data.message]});
197
  }
331
  }
332
  });
333
  });
334
+
335
+ $dropConstraintModal
336
+ .on('click', '.bookly-js-save', function () {
337
+ let ladda = Ladda.create(this),
338
+ table = $('#bookly-js-table', $dropConstraintModal).html(),
339
+ constrain = $('#bookly-js-constraint', $dropConstraintModal).html();
340
+ ladda.start();
341
+ $.ajax({
342
+ url : ajaxurl,
343
+ type : 'POST',
344
+ data : {
345
+ action : 'bookly_execute_query',
346
+ query : 'ALTER TABLE `' + table + '` DROP FOREIGN KEY `' + constrain + '`',
347
+ csrf_token: BooklyL10n.csrfToken
348
+ },
349
+ dataType : 'json',
350
+ success : function (response) {
351
+ if (response.success) {
352
+ booklyAlert({success: [response.data.message]});
353
+ $dropConstraintModal.modal('hide');
354
+ $create.closest('.panel').find('.panel-body').html('Refresh the current page');
355
+ $create.remove();
356
+ } else {
357
+ booklyAlert({error : [response.data.message]});
358
+ }
359
+ ladda.stop();
360
+ },
361
+ error: function () {
362
+ booklyAlert({error: ['Error: in query execution.']});
363
+ ladda.stop();
364
+ }
365
+ });
366
+ });
367
  });
backend/modules/debug/templates/index.php CHANGED
@@ -17,22 +17,25 @@ use Bookly\Backend\Components\Controls\Buttons;
17
 
18
  <div class="panel-group" id="data-management">
19
  <div class="bookly-data-button">
20
- <form action="<?php echo admin_url( 'admin-ajax.php?action=bookly_export_data' ) ?>" method="POST">
21
- <?php Inputs::renderCsrf() ?>
22
- <button id="bookly-export" type="submit" class="btn btn-lg btn-success">
23
- <span class="ladda-label">Export data</span>
24
- </button>
25
- </form>
26
  </div>
27
  <div class="bookly-data-button">
28
- <form id="bookly_import" action="<?php echo admin_url( 'admin-ajax.php?action=bookly_import_data' ) ?>" method="POST" enctype="multipart/form-data">
29
- <?php Inputs::renderCsrf() ?>
30
- <div id="bookly-import" class="btn btn-lg btn-primary btn-file">
31
- <span class="ladda-label">Import data</span>
32
- <input type="file" id="bookly_import_file" name="import">
33
- </div>
34
- </form>
35
- </div>
 
 
 
36
  </div>
37
  <div class="page-header text-right clearfix">
38
  <div class="bookly-page-title">
@@ -41,7 +44,7 @@ use Bookly\Backend\Components\Controls\Buttons;
41
  </div>
42
  <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
43
  <?php foreach ( $debug as $tableName => $table ) : ?>
44
- <div class="panel <?php echo $table['status'] == 1 ? 'panel-success' : 'panel-danger' ?>">
45
  <div class="panel-heading" role="tab" id="heading_<?php echo $tableName ?>">
46
  <h4 class="panel-title">
47
  <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#<?php echo $tableName ?>" aria-expanded="true" aria-controls="<?php echo $tableName ?>">
@@ -66,7 +69,15 @@ use Bookly\Backend\Components\Controls\Buttons;
66
  <tbody>
67
  <?php foreach ( $table['fields'] as $field => $status ) : ?>
68
  <tr class="<?php echo $status ? 'default' : 'danger' ?>">
69
- <td><?php echo $field ?></td>
 
 
 
 
 
 
 
 
70
  <td><?php echo $status ? 'OK' : '<button class="btn btn-success btn-xs" type="button" data-action="fix-column">FIX…</button>' ?></td>
71
  </tr>
72
  <?php endforeach ?>
@@ -95,7 +106,36 @@ use Bookly\Backend\Components\Controls\Buttons;
95
  </tbody>
96
  </table>
97
  <?php endif ?>
98
- <?php else: ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  Table does not exist
100
  <?php endif ?>
101
  </div>
@@ -144,8 +184,8 @@ ADD CONSTRAINT
144
  <span class="sr-only">Toggle Dropdown</span>
145
  </button>
146
  <ul class="dropdown-menu">
147
- <li><a class="bookly-js-update" href="#" data-action="fix-consistency">UPDATE `<span class="bookly-js-ref_table"></span>` SET `<span class="bookly-js-ref_column"></span>` = NULL WHERE `<span class="bookly-js-ref_column"></span>` NOT IN (…)</a></li>
148
- <li><a class="bookly-js-delete" href="#" data-action="fix-consistency">DELETE FROM `<span class="bookly-js-ref_table"></span>` WHERE `<span class="bookly-js-ref_column"></span>` NOT IN (…)</a></li>
149
  </ul>
150
  </div>
151
  </div>
@@ -192,4 +232,23 @@ ADD CONSTRAINT
192
  </div>
193
  </div>
194
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  </div>
17
 
18
  <div class="panel-group" id="data-management">
19
  <div class="bookly-data-button">
20
+ <form action="<?php echo admin_url( 'admin-ajax.php?action=bookly_export_data' ) ?>" method="POST">
21
+ <?php Inputs::renderCsrf() ?>
22
+ <button id="bookly-export" type="submit" class="btn btn-lg btn-success">
23
+ <span class="ladda-label">Export data</span>
24
+ </button>
25
+ </form>
26
  </div>
27
  <div class="bookly-data-button">
28
+ <form id="bookly_import" action="<?php echo admin_url( 'admin-ajax.php?action=bookly_import_data' ) ?>" method="POST" enctype="multipart/form-data">
29
+ <?php Inputs::renderCsrf() ?>
30
+ <div id="bookly-import" class="btn btn-lg btn-primary btn-file">
31
+ <span class="ladda-label">Import data</span>
32
+ <input type="file" id="bookly_import_file" name="import">
33
+ </div>
34
+ </form>
35
+ </div>
36
+ <div class="bookly-data-button pull-right">
37
+ <?php Bookly\Backend\Components\Controls\Buttons::renderCustom( 'bookly-fix-all-silent', 'btn-success btn-lg', 'Fix database schema ...' ) ?>
38
+ </div>
39
  </div>
40
  <div class="page-header text-right clearfix">
41
  <div class="bookly-page-title">
44
  </div>
45
  <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
46
  <?php foreach ( $debug as $tableName => $table ) : ?>
47
+ <div class="panel <?php echo $table['status'] == 1 ? 'panel-success' : 'panel-danger' ?> bookly-margin-right-remove">
48
  <div class="panel-heading" role="tab" id="heading_<?php echo $tableName ?>">
49
  <h4 class="panel-title">
50
  <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#<?php echo $tableName ?>" aria-expanded="true" aria-controls="<?php echo $tableName ?>">
69
  <tbody>
70
  <?php foreach ( $table['fields'] as $field => $status ) : ?>
71
  <tr class="<?php echo $status ? 'default' : 'danger' ?>">
72
+ <td><?php echo $field ?>
73
+ <?php if ( isset( $table['info'][ $field ] ) ) : ?>
74
+ <div class="pull-right">
75
+ <?php foreach ( $table['info'][ $field ] as $key ) : ?>
76
+ <span class="label label-warning" style="margin: 0 5px;"><?php echo $key ?></span>
77
+ <?php endforeach ?>
78
+ </div>
79
+ <?php endif ?>
80
+ </td>
81
  <td><?php echo $status ? 'OK' : '<button class="btn btn-success btn-xs" type="button" data-action="fix-column">FIX…</button>' ?></td>
82
  </tr>
83
  <?php endforeach ?>
106
  </tbody>
107
  </table>
108
  <?php endif ?>
109
+ <?php if ( $table['constraints_3d'] ) : ?>
110
+ <h4>Third-party constraints</h4>
111
+ <table class="table table-condensed">
112
+ <thead>
113
+ <tr>
114
+ <th>Column name</th>
115
+ <th>Reference</th>
116
+ <th>Name</th>
117
+ <th width="50">Status</th>
118
+ </tr>
119
+ </thead>
120
+ <tbody>
121
+ <?php foreach ( $table['constraints_3d'] as $key => $constraint ) : ?>
122
+ <tr class="<?php echo $constraint['status'] ? 'default' : 'danger' ?>">
123
+ <td><?php echo $constraint['column_name'] ?></td>
124
+ <td><?php echo $constraint['referenced_table_name'] . '.' . $constraint['referenced_column_name'] ?>
125
+ <?php if ( ! $constraint['reference_exists'] ) : ?><div class="pull-right"><span class="label label-warning" style="margin: 0 5px;">not exist</span><?php endif ?></div></td>
126
+ <td><?php echo $constraint['constraint_name'] ?></td>
127
+ <td><?php if ( $constraint['status'] ) : ?>
128
+ OK
129
+ <?php else : ?>
130
+ <button class="btn btn-xs <?php echo $constraint['reference_exists']?'btn-danger':'btn-success' ?>" type="button" data-action="drop-constraint">DROP…</button>
131
+ <?php endif ?>
132
+ </td>
133
+ </tr>
134
+ <?php endforeach ?>
135
+ </tbody>
136
+ </table>
137
+ <?php endif ?>
138
+ <?php else : ?>
139
  Table does not exist
140
  <?php endif ?>
141
  </div>
184
  <span class="sr-only">Toggle Dropdown</span>
185
  </button>
186
  <ul class="dropdown-menu">
187
+ <li><a class="bookly-js-update" href="#" data-action="fix-consistency">UPDATE `<span class="bookly-js-table"></span>` SET `<span class="bookly-js-ref_column"></span>` = NULL WHERE `<span class="bookly-js-ref_column"></span>` NOT IN (…)</a></li>
188
+ <li><a class="bookly-js-delete" href="#" data-action="fix-consistency">DELETE FROM `<span class="bookly-js-table"></span>` WHERE `<span class="bookly-js-ref_column"></span>` NOT IN (…)</a></li>
189
  </ul>
190
  </div>
191
  </div>
232
  </div>
233
  </div>
234
  </div>
235
+ <div id="bookly-js-drop-constraint" class="modal fade" tabindex="-1" role="dialog">
236
+ <div class="modal-dialog" role="document">
237
+ <div class="modal-content">
238
+ <div class="modal-header">
239
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
240
+ <h4 class="modal-title">Drop foreign key</h4>
241
+ </div>
242
+ <div class="modal-body">
243
+ <div class="bookly-js-loading"><pre>
244
+ ALTER TABLE `<span id="bookly-js-table"></span>`
245
+ DROP FOREIGN KEY `<span id="bookly-js-constraint"></span>`</pre></div>
246
+ </div>
247
+ <div class="modal-footer">
248
+ <?php Buttons::renderCustom( null, 'bookly-js-save btn-lg btn-success', 'Drop' ) ?>
249
+ <?php Buttons::renderCustom( null, 'btn-lg btn-default', 'Close', array( 'data-dismiss' => 'modal' ) ) ?>
250
+ </div>
251
+ </div>
252
+ </div>
253
+ </div>
254
  </div>
backend/modules/messages/Ajax.php CHANGED
@@ -30,7 +30,7 @@ class Ajax extends Lib\Base\Ajax
30
  wp_send_json( array(
31
  'draw' => ( int ) self::parameter( 'draw' ),
32
  'recordsTotal' => $total,
33
- 'recordsFiltered' => count( $data ),
34
  'data' => $data,
35
  ) );
36
  }
30
  wp_send_json( array(
31
  'draw' => ( int ) self::parameter( 'draw' ),
32
  'recordsTotal' => $total,
33
+ 'recordsFiltered' => $total,
34
  'data' => $data,
35
  ) );
36
  }
backend/modules/messages/Page.php CHANGED
@@ -62,10 +62,10 @@ class Page extends Lib\Base\Component
62
  $messages = __( 'Messages', 'bookly' );
63
  $count = self::getMessagesCount();
64
  if ( $count ) {
65
- add_submenu_page( 'bookly-menu', $messages, sprintf( '%s <span class="update-plugins count-%d"><span class="update-count">%d</span></span>', $messages, $count, $count ), 'manage_options',
66
  self::pageSlug(), function () { Page::render(); } );
67
  } else {
68
- add_submenu_page( 'bookly-menu', $messages, $messages, 'manage_options',
69
  self::pageSlug(), function () { Page::render(); } );
70
  }
71
  }
62
  $messages = __( 'Messages', 'bookly' );
63
  $count = self::getMessagesCount();
64
  if ( $count ) {
65
+ add_submenu_page( 'bookly-menu', $messages, sprintf( '%s <span class="update-plugins count-%d"><span class="update-count">%d</span></span>', $messages, $count, $count ), Lib\Utils\Common::getRequiredCapability(),
66
  self::pageSlug(), function () { Page::render(); } );
67
  } else {
68
+ add_submenu_page( 'bookly-menu', $messages, $messages, Lib\Utils\Common::getRequiredCapability(),
69
  self::pageSlug(), function () { Page::render(); } );
70
  }
71
  }
backend/modules/notifications/templates/_test_email_modal.php CHANGED
@@ -48,7 +48,7 @@ use Bookly\Backend\Components\Controls\Inputs;
48
  </div>
49
  <div class="modal-footer">
50
  <?php Inputs::renderCsrf() ?>
51
- <?php Buttons::renderCustom( null, 'btn-lg btn-success', esc_attr__( 'Send', 'bookly' ) ) ?>
52
  </div>
53
  </form>
54
  </div>
48
  </div>
49
  <div class="modal-footer">
50
  <?php Inputs::renderCsrf() ?>
51
+ <?php Buttons::renderCustom( null, 'btn-lg btn-success', esc_attr__( 'Send', 'bookly' ), array( 'disabled' => 'disabled' ) ) ?>
52
  </div>
53
  </form>
54
  </div>
backend/modules/payments/Page.php CHANGED
@@ -47,6 +47,7 @@ class Page extends Lib\Base\Component
47
  'details' => __( 'Details', 'bookly' ),
48
  'areYouSure' => __( 'Are you sure?', 'bookly' ),
49
  'noResultFound' => __( 'No result found', 'bookly' ),
 
50
  'invoice' => array(
51
  'enabled' => (int) Lib\Config::invoicesActive(),
52
  'button' => __( 'Invoice', 'bookly' ),
@@ -63,13 +64,13 @@ class Page extends Lib\Base\Component
63
  Lib\Entities\Payment::TYPE_PAYULATAM,
64
  Lib\Entities\Payment::TYPE_PAYSON,
65
  Lib\Entities\Payment::TYPE_MOLLIE,
66
- Lib\Entities\Payment::TYPE_COUPON,
67
  Lib\Entities\Payment::TYPE_WOOCOMMERCE,
68
  );
69
 
70
  $providers = Lib\Entities\Staff::query()->select( 'id, full_name' )->sortBy( 'full_name' )->whereNot( 'visibility', 'archive' )->fetchArray();
71
  $services = Lib\Entities\Service::query()->select( 'id, title' )->sortBy( 'title' )->fetchArray();
72
- $customers = Lib\Entities\Customer::query( 'c' )->select( 'c.id, c.full_name, c.first_name, c.last_name' )->fetchArray();
73
 
74
  self::renderTemplate( 'index', compact( 'types', 'providers', 'services', 'customers' ) );
75
  }
47
  'details' => __( 'Details', 'bookly' ),
48
  'areYouSure' => __( 'Are you sure?', 'bookly' ),
49
  'noResultFound' => __( 'No result found', 'bookly' ),
50
+ 'searching' => __( 'Searching', 'bookly' ),
51
  'invoice' => array(
52
  'enabled' => (int) Lib\Config::invoicesActive(),
53
  'button' => __( 'Invoice', 'bookly' ),
64
  Lib\Entities\Payment::TYPE_PAYULATAM,
65
  Lib\Entities\Payment::TYPE_PAYSON,
66
  Lib\Entities\Payment::TYPE_MOLLIE,
67
+ Lib\Entities\Payment::TYPE_FREE,
68
  Lib\Entities\Payment::TYPE_WOOCOMMERCE,
69
  );
70
 
71
  $providers = Lib\Entities\Staff::query()->select( 'id, full_name' )->sortBy( 'full_name' )->whereNot( 'visibility', 'archive' )->fetchArray();
72
  $services = Lib\Entities\Service::query()->select( 'id, title' )->sortBy( 'title' )->fetchArray();
73
+ $customers = Lib\Entities\Customer::query()->count() < Lib\Entities\Customer::REMOTE_LIMIT ? Lib\Entities\Customer::query( 'c' )->select( 'c.id, c.full_name, c.first_name, c.last_name' )->fetchArray() : false;
74
 
75
  self::renderTemplate( 'index', compact( 'types', 'providers', 'services', 'customers' ) );
76
  }
backend/modules/payments/resources/js/payments.js CHANGED
@@ -40,10 +40,6 @@ jQuery(function($) {
40
 
41
  $('.bookly-js-select')
42
  .val(null)
43
- .on('select2:unselecting', function(e) {
44
- e.preventDefault();
45
- $(this).val(null).trigger('change');
46
- })
47
  .select2({
48
  allowClear: true,
49
  theme: 'bootstrap',
@@ -52,6 +48,31 @@ jQuery(function($) {
52
  }
53
  });
54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  /**
56
  * Init Columns.
57
  */
@@ -84,9 +105,9 @@ jQuery(function($) {
84
  render: function ( data, type, row, meta ) {
85
  var buttons = '';
86
  if (BooklyL10n.invoice.enabled) {
87
- buttons += '<button type="button" class="btn btn-default bookly-margin-right-md" data-action="view-invoice" data-payment_id="' + row.id + '"><i class="dashicons dashicons-media-text"></i> ' + BooklyL10n.invoice.button + '</a>';
88
  }
89
- return buttons + '<button type="button" class="btn btn-default" data-toggle="modal" data-target="#bookly-payment-details-modal" data-payment_id="' + row.id + '"><i class="glyphicon glyphicon-list-alt"></i> ' + BooklyL10n.details + '</a>';
90
  }
91
  },
92
  {
@@ -185,7 +206,7 @@ jQuery(function($) {
185
  cancelLabel: BooklyL10n.dateRange.cancel,
186
  fromLabel: BooklyL10n.dateRange.from,
187
  toLabel: BooklyL10n.dateRange.to,
188
- customRangeLabel: BooklyL10n.dateRange.custom_range,
189
  daysOfWeek: BooklyL10n.datePicker.dayNamesShort,
190
  monthNames: BooklyL10n.datePicker.monthNames,
191
  firstDay: parseInt(BooklyL10n.dateRange.firstDay),
@@ -233,7 +254,7 @@ jQuery(function($) {
233
  dataType : 'json',
234
  success : function(response) {
235
  if (response.success) {
236
- dt.rows($checkboxes.closest('td')).remove().draw();
237
  } else {
238
  alert(response.data.message);
239
  }
40
 
41
  $('.bookly-js-select')
42
  .val(null)
 
 
 
 
43
  .select2({
44
  allowClear: true,
45
  theme: 'bootstrap',
48
  }
49
  });
50
 
51
+ $('.bookly-js-select-ajax')
52
+ .select2({
53
+ width: '100%',
54
+ theme: 'bootstrap',
55
+ allowClear: true,
56
+ language : {
57
+ noResults: function() { return BooklyL10n.no_result_found; },
58
+ searching: function () { return BooklyL10n.searching; }
59
+ },
60
+ ajax: {
61
+ url: ajaxurl,
62
+ dataType: 'json',
63
+ delay: 250,
64
+ data: function (params) {
65
+ params.page = params.page || 1;
66
+ return {
67
+ action: $(this).data('action'),
68
+ filter: params.term,
69
+ page: params.page,
70
+ csrf_token : BooklyL10n.csrfToken
71
+ };
72
+ }
73
+ },
74
+ });
75
+
76
  /**
77
  * Init Columns.
78
  */
105
  render: function ( data, type, row, meta ) {
106
  var buttons = '';
107
  if (BooklyL10n.invoice.enabled) {
108
+ buttons += '<button type="button" class="btn btn-default bookly-margin-right-md" data-action="view-invoice" data-payment_id="' + row.id + '"><i class="dashicons dashicons-media-text"></i> ' + BooklyL10n.invoice.button + '</button>';
109
  }
110
+ return buttons + '<button type="button" class="btn btn-default" data-toggle="modal" data-target="#bookly-payment-details-modal" data-payment_id="' + row.id + '"><i class="glyphicon glyphicon-list-alt"></i> ' + BooklyL10n.details + '</button>';
111
  }
112
  },
113
  {
206
  cancelLabel: BooklyL10n.dateRange.cancel,
207
  fromLabel: BooklyL10n.dateRange.from,
208
  toLabel: BooklyL10n.dateRange.to,
209
+ customRangeLabel: BooklyL10n.dateRange.customRange,
210
  daysOfWeek: BooklyL10n.datePicker.dayNamesShort,
211
  monthNames: BooklyL10n.datePicker.monthNames,
212
  firstDay: parseInt(BooklyL10n.dateRange.firstDay),
254
  dataType : 'json',
255
  success : function(response) {
256
  if (response.success) {
257
+ dt.ajax.reload();
258
  } else {
259
  alert(response.data.message);
260
  }
backend/modules/payments/templates/index.php CHANGED
@@ -42,10 +42,12 @@ use Bookly\Backend\Modules\Payments\Proxy;
42
  </div>
43
  <div class="col-md-1 col-lg-2">
44
  <div class="form-group">
45
- <select class="form-control bookly-js-select" id="bookly-filter-customer" data-placeholder="<?php esc_attr_e( 'Customer', 'bookly' ) ?>">
46
- <?php foreach ( $customers as $customer ) : ?>
47
- <option value="<?php echo $customer['id'] ?>"><?php echo esc_html( $customer['full_name'] ) ?></option>
48
- <?php endforeach ?>
 
 
49
  </select>
50
  </div>
51
  </div>
@@ -122,4 +124,4 @@ use Bookly\Backend\Modules\Payments\Proxy;
122
  <?php Components\Dialogs\Payment\Dialog::render() ?>
123
  </div>
124
  </div>
125
- </div>
42
  </div>
43
  <div class="col-md-1 col-lg-2">
44
  <div class="form-group">
45
+ <select class="form-control <?php echo $customers === false ? 'bookly-js-select-ajax' : 'bookly-js-select' ?>" id="bookly-filter-customer" data-placeholder="<?php esc_attr_e( 'Customer', 'bookly' ) ?>" data-action="bookly_get_customers_list">
46
+ <?php if ( $customers !== false ) : ?>
47
+ <?php foreach ( $customers as $customer ) : ?>
48
+ <option value="<?php echo $customer['id'] ?>"><?php echo esc_html( $customer['full_name'] ) ?></option>
49
+ <?php endforeach ?>
50
+ <?php endif ?>
51
  </select>
52
  </div>
53
  </div>
124
  <?php Components\Dialogs\Payment\Dialog::render() ?>
125
  </div>
126
  </div>
127
+ </div>
backend/modules/services/resources/js/services-list.js CHANGED
@@ -105,22 +105,20 @@ jQuery(function ($) {
105
  processing : BooklyL10n.processing
106
  }
107
  }).on('row-reordered', function (e, diff, edit) {
108
- var positions = [];
109
- function sortByPosition(a, b){
110
- return ((a.position < b.position) ? -1 : ((a.position > b.position) ? 1 : 0));
111
- }
112
- dt.data().each(function (service) {
113
- positions.push({position: service.position, id: service.id});
114
  });
115
  $.ajax({
116
- url : ajaxurl,
117
- type : 'POST',
118
- data: {
119
- 'action' : 'bookly_update_services_position',
120
- 'csrf_token' : BooklyL10n.csrfToken,
121
- 'positions[]': $.map(positions.sort(sortByPosition), function (value) {
122
- return value.id;
123
- })
 
124
  },
125
  dataType: 'json',
126
  success : function (response) {
105
  processing : BooklyL10n.processing
106
  }
107
  }).on('row-reordered', function (e, diff, edit) {
108
+ let positions = [];
109
+ dt.data().each(function (item) {
110
+ positions.push({position: parseInt(item.position), id: item.id});
 
 
 
111
  });
112
  $.ajax({
113
+ url : ajaxurl,
114
+ type : 'POST',
115
+ data : {
116
+ action : 'bookly_update_services_position',
117
+ csrf_token : BooklyL10n.csrfToken,
118
+ positions : (positions.sort((a, b) => a.position - b.position))
119
+ .map(function (value) {
120
+ return value.id;
121
+ })
122
  },
123
  dataType: 'json',
124
  success : function (response) {
backend/modules/services/templates/time.php CHANGED
@@ -2,12 +2,10 @@
2
  use Bookly\Lib\Utils\Common;
3
  use Bookly\Lib\Utils\DateTime;
4
  use Bookly\Lib\Entities\Service;
5
- use Bookly\Backend\Components\Controls\Buttons;
6
- use Bookly\Backend\Components\Controls\Inputs;
7
  use Bookly\Backend\Modules\Services\Proxy;
8
  ?>
9
- <div class=" bookly-js-service-time-container">
10
- <div class="form-group">
11
  <label for="bookly-service-duration">
12
  <?php esc_html_e( 'Duration', 'bookly' ) ?>
13
  </label>
@@ -37,14 +35,16 @@ use Bookly\Backend\Modules\Services\Proxy;
37
  </div>
38
  </div>
39
  </div>
40
- <div class="form-group bookly-js-service bookly-js-service-simple">
41
  <label for="bookly-service-slot-length">
42
  <?php esc_html_e( 'Time slot length', 'bookly' ) ?>
43
  </label>
44
  <p class="help-block"><?php esc_html_e( 'The time interval which is used as a step when building all time slots for the service at the Time step. The setting overrides global settings in Settings → General. Use Default to apply global settings.', 'bookly' ) ?></p>
45
  <select id="bookly-service-slot-length" class="form-control" name="slot_length">
46
  <option value="<?php echo Service::SLOT_LENGTH_DEFAULT ?>"<?php selected( $service['slot_length'], Service::SLOT_LENGTH_DEFAULT ) ?>><?php esc_html_e( 'Default', 'bookly' ) ?></option>
47
- <option value="<?php echo Service::SLOT_LENGTH_AS_SERVICE_DURATION ?>"<?php selected( $service['slot_length'], Service::SLOT_LENGTH_AS_SERVICE_DURATION ) ?>><?php esc_html_e( 'Slot length as service duration', 'bookly' ) ?></option>
 
 
48
  <?php foreach ( array( 300, 600, 720, 900, 1200, 1800, 2700, 3600, 5400, 7200, 10800, 14400, 21600 ) as $duration ): ?>
49
  <option value="<?php echo $duration ?>"<?php selected( $service['slot_length'], $duration ) ?>><?php echo esc_html( DateTime::secondsToInterval( $duration ) ) ?></option>
50
  <?php endforeach ?>
2
  use Bookly\Lib\Utils\Common;
3
  use Bookly\Lib\Utils\DateTime;
4
  use Bookly\Lib\Entities\Service;
 
 
5
  use Bookly\Backend\Modules\Services\Proxy;
6
  ?>
7
+ <div class="bookly-js-service-time-container">
8
+ <div class="form-group bookly-js-service bookly-js-service-simple">
9
  <label for="bookly-service-duration">
10
  <?php esc_html_e( 'Duration', 'bookly' ) ?>
11
  </label>
35
  </div>
36
  </div>
37
  </div>
38
+ <div class="form-group">
39
  <label for="bookly-service-slot-length">
40
  <?php esc_html_e( 'Time slot length', 'bookly' ) ?>
41
  </label>
42
  <p class="help-block"><?php esc_html_e( 'The time interval which is used as a step when building all time slots for the service at the Time step. The setting overrides global settings in Settings → General. Use Default to apply global settings.', 'bookly' ) ?></p>
43
  <select id="bookly-service-slot-length" class="form-control" name="slot_length">
44
  <option value="<?php echo Service::SLOT_LENGTH_DEFAULT ?>"<?php selected( $service['slot_length'], Service::SLOT_LENGTH_DEFAULT ) ?>><?php esc_html_e( 'Default', 'bookly' ) ?></option>
45
+ <?php if ( $service['type'] === Service::TYPE_SIMPLE ) : ?>
46
+ <option value="<?php echo Service::SLOT_LENGTH_AS_SERVICE_DURATION ?>"<?php selected( $service['slot_length'], Service::SLOT_LENGTH_AS_SERVICE_DURATION ) ?>><?php esc_html_e( 'Slot length as service duration', 'bookly' ) ?></option>
47
+ <?php endif ?>
48
  <?php foreach ( array( 300, 600, 720, 900, 1200, 1800, 2700, 3600, 5400, 7200, 10800, 14400, 21600 ) as $duration ): ?>
49
  <option value="<?php echo $duration ?>"<?php selected( $service['slot_length'], $duration ) ?>><?php echo esc_html( DateTime::secondsToInterval( $duration ) ) ?></option>
50
  <?php endforeach ?>
backend/modules/settings/Page.php CHANGED
@@ -74,6 +74,7 @@ class Page extends Lib\Base\Ajax
74
  update_option( 'bookly_gen_max_days_for_booking', (int) self::parameter( 'bookly_gen_max_days_for_booking' ) );
75
  update_option( 'bookly_gen_use_client_time_zone', (int) self::parameter( 'bookly_gen_use_client_time_zone' ) );
76
  update_option( 'bookly_gen_collect_stats', self::parameter( 'bookly_gen_collect_stats' ) );
 
77
  $alert['success'][] = __( 'Settings saved.', 'bookly' );
78
  break;
79
  case 'url': // URL settings form.
74
  update_option( 'bookly_gen_max_days_for_booking', (int) self::parameter( 'bookly_gen_max_days_for_booking' ) );
75
  update_option( 'bookly_gen_use_client_time_zone', (int) self::parameter( 'bookly_gen_use_client_time_zone' ) );
76
  update_option( 'bookly_gen_collect_stats', self::parameter( 'bookly_gen_collect_stats' ) );
77
+ update_option( 'bookly_app_show_powered_by', self::parameter( 'bookly_app_show_powered_by' ) );
78
  $alert['success'][] = __( 'Settings saved.', 'bookly' );
79
  break;
80
  case 'url': // URL settings form.
backend/modules/settings/templates/_generalForm.php CHANGED
@@ -18,6 +18,7 @@ use Bookly\Backend\Modules\Settings\Proxy;
18
  Selects::renderSingle( 'bookly_gen_allow_staff_edit_profile', __( 'Allow staff members to edit their profiles', 'bookly' ), __( 'If this option is enabled then all staff members who are associated with WordPress users will be able to edit their own profiles, services, schedule and days off.', 'bookly' ) );
19
  Selects::renderSingle( 'bookly_gen_link_assets_method', __( 'Method to include Bookly JavaScript and CSS files on the page', 'bookly' ), __( 'With "Enqueue" method the JavaScript and CSS files of Bookly will be included on all pages of your website. This method should work with all themes. With "Print" method the files will be included only on the pages which contain Bookly booking form. This method may not work with all themes.', 'bookly' ), array( array( 'enqueue', 'Enqueue' ), array( 'print', 'Print' ) ) );
20
  Selects::renderSingle( 'bookly_gen_collect_stats', __( 'Help us improve Bookly by sending anonymous usage stats', 'bookly' ) );
 
21
  ?>
22
  <div class="panel-footer">
23
  <?php ControlInputs::renderCsrf() ?>
18
  Selects::renderSingle( 'bookly_gen_allow_staff_edit_profile', __( 'Allow staff members to edit their profiles', 'bookly' ), __( 'If this option is enabled then all staff members who are associated with WordPress users will be able to edit their own profiles, services, schedule and days off.', 'bookly' ) );
19
  Selects::renderSingle( 'bookly_gen_link_assets_method', __( 'Method to include Bookly JavaScript and CSS files on the page', 'bookly' ), __( 'With "Enqueue" method the JavaScript and CSS files of Bookly will be included on all pages of your website. This method should work with all themes. With "Print" method the files will be included only on the pages which contain Bookly booking form. This method may not work with all themes.', 'bookly' ), array( array( 'enqueue', 'Enqueue' ), array( 'print', 'Print' ) ) );
20
  Selects::renderSingle( 'bookly_gen_collect_stats', __( 'Help us improve Bookly by sending anonymous usage stats', 'bookly' ) );
21
+ Selects::renderSingle( 'bookly_app_show_powered_by', __( 'Allow the plugin to set a Powered by Bookly notice on the booking widget to spread information about the plugin. This will allow the team to improve the product and enhance its functionality.', 'bookly' ) );
22
  ?>
23
  <div class="panel-footer">
24
  <?php ControlInputs::renderCsrf() ?>
backend/modules/shop/Page.php CHANGED
@@ -60,10 +60,10 @@ class Page extends Lib\Base\Component
60
  $title = __( 'Addons', 'bookly' );
61
  $count = self::getNotSeenCount();
62
  if ( $count ) {
63
- add_submenu_page( 'bookly-menu', $title, sprintf( '%s <span class="update-plugins count-%d"><span class="update-count">%d</span></span>', $title, $count, $count ), 'manage_options',
64
  self::pageSlug(), function () { Page::render(); } );
65
  } else {
66
- add_submenu_page( 'bookly-menu', $title, $title, 'manage_options',
67
  self::pageSlug(), function () { Page::render(); } );
68
  }
69
  }
60
  $title = __( 'Addons', 'bookly' );
61
  $count = self::getNotSeenCount();
62
  if ( $count ) {
63
+ add_submenu_page( 'bookly-menu', $title, sprintf( '%s <span class="update-plugins count-%d"><span class="update-count">%d</span></span>', $title, $count, $count ), Lib\Utils\Common::getRequiredCapability(),
64
  self::pageSlug(), function () { Page::render(); } );
65
  } else {
66
+ add_submenu_page( 'bookly-menu', $title, $title, Lib\Utils\Common::getRequiredCapability(),
67
  self::pageSlug(), function () { Page::render(); } );
68
  }
69
  }
backend/modules/sms/Ajax.php CHANGED
@@ -9,6 +9,19 @@ use Bookly\Lib;
9
  */
10
  class Ajax extends Lib\Base\Ajax
11
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  /**
13
  * Get purchases list.
14
  */
@@ -271,4 +284,52 @@ class Ajax extends Lib\Base\Ajax
271
  update_option( 'bookly_sms_administrator_phone', self::parameter( 'bookly_sms_administrator_phone' ) );
272
  wp_send_json_success();
273
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  }
9
  */
10
  class Ajax extends Lib\Base\Ajax
11
  {
12
+ /**
13
+ * @inheritdoc
14
+ */
15
+ protected static function permissions()
16
+ {
17
+ $permissions = get_option( 'bookly_gen_allow_staff_edit_profile' ) ? array( '_default' => 'user' ) : array();
18
+ if ( Lib\Config::staffCabinetActive() ) {
19
+ $permissions = array( '_default' => 'user' );
20
+ }
21
+
22
+ return $permissions;
23
+ }
24
+
25
  /**
26
  * Get purchases list.
27
  */
284
  update_option( 'bookly_sms_administrator_phone', self::parameter( 'bookly_sms_administrator_phone' ) );
285
  wp_send_json_success();
286
  }
287
+
288
+ /**
289
+ * Send queue
290
+ */
291
+ public static function sendQueue()
292
+ {
293
+ $queue = self::parameter( 'queue', array() );
294
+ $sms = new Lib\SMS();
295
+
296
+ foreach ( $queue as $notification ) {
297
+ if ( $notification['gateway'] == 'sms' ) {
298
+ $sms->sendSms( $notification['address'], $notification['message'], $notification['impersonal'], $notification['type_id'] );
299
+ } else {
300
+ wp_mail( $notification['address'], $notification['subject'], $notification['message'], $notification['headers'], isset( $notification['attachments'] ) ? $notification['attachments'] : array() );
301
+ }
302
+ }
303
+ self::_deleteAttachmentFiles( self::parameter( 'queue_full', array() ) );
304
+
305
+ wp_send_json_success();
306
+ }
307
+
308
+ /**
309
+ * Delete attachments files
310
+ */
311
+ public static function clearAttachments()
312
+ {
313
+ self::_deleteAttachmentFiles( self::parameter( 'queue', array() ) );
314
+
315
+ wp_send_json_success();
316
+ }
317
+
318
+ /**
319
+ * Delete attachment files
320
+ *
321
+ * @param $queue
322
+ */
323
+ private static function _deleteAttachmentFiles( $queue )
324
+ {
325
+ foreach ( $queue as $notification ) {
326
+ if ( isset( $notification['attachments'] ) ) {
327
+ foreach ( $notification['attachments'] as $file ) {
328
+ if ( file_exists( $file ) ) {
329
+ unlink( $file );
330
+ }
331
+ }
332
+ }
333
+ }
334
+ }
335
  }
backend/modules/sms/Page.php CHANGED
@@ -50,9 +50,9 @@ class Page extends Lib\Base\Component
50
  ),
51
  ) );
52
 
53
- $alert = array( 'success' => array(), 'error' => array() );
54
- $prices = array();
55
- $sms = new Lib\SMS();
56
 
57
  $email_confirm_required = false;
58
  $show_registration_form = false;
@@ -64,22 +64,19 @@ class Page extends Lib\Base\Component
64
  $sms->logout();
65
  } elseif ( self::hasParameter( 'form-registration' ) ) {
66
  if ( self::parameter( 'accept_tos', false ) ) {
67
- $token = $sms->register(
68
  self::parameter( 'username' ),
69
  self::parameter( 'password' ),
70
  self::parameter( 'password_repeat' )
71
  );
72
- if ( $token !== false ) {
73
  $email_confirm_required = self::parameter( 'username' );
74
- self::_sendEmailConfirmNotification( $token, self::parameter( 'username' ) );
75
  } else {
76
  $show_registration_form = true;
77
  }
78
  } else {
79
  $alert['error'][] = __( 'Please accept terms and conditions.', 'bookly' );
80
  }
81
- } elseif ( self::hasParameter( 'token' ) ) {
82
- $sms->confirmEmail( self::parameter( 'token' ) );
83
  }
84
  if ( $email_confirm_required !== false || self::hasParameter( 'form-registration' ) ) {
85
  $is_logged_in = false;
@@ -122,7 +119,7 @@ class Page extends Lib\Base\Component
122
  wp_localize_script( 'bookly-daterangepicker.js', 'BooklyL10n',
123
  array(
124
  'csrfToken' => Lib\Utils\Common::getCsrfToken(),
125
- 'alert' => $alert,
126
  'areYouSure' => __( 'Are you sure?', 'bookly' ),
127
  'cancel' => __( 'Cancel', 'bookly' ),
128
  'country' => get_option( 'bookly_cst_phone_default_country' ),
@@ -135,9 +132,8 @@ class Page extends Lib\Base\Component
135
  'utils' => is_rtl() ? '' : plugins_url( 'intlTelInput.utils.js', Lib\Plugin::getDirectory() . '/frontend/resources/js/intlTelInput.utils.js' ),
136
  'enabled' => get_option( 'bookly_cst_phone_default_country' ) != 'disabled',
137
  ),
138
-
139
  'datePicker' => Lib\Utils\DateTime::datePickerOptions(),
140
- 'dateRange' => Lib\Utils\DateTime::dateRangeOptions(),
141
  'sender_id' => array(
142
  'sent' => __( 'Sender ID request is sent.', 'bookly' ),
143
  'set_default' => __( 'Sender ID is reset to default.', 'bookly' ),
@@ -168,25 +164,6 @@ class Page extends Lib\Base\Component
168
  self::renderTemplate( 'index', compact( 'sms', 'is_logged_in', 'prices', 'bookly_ntf_processing_interval_values', 'undelivered_count', 'email_confirm_required', 'show_registration_form' ) );
169
  }
170
 
171
- /**
172
- * Send notification to confirm email.
173
- *
174
- * @param string $token
175
- * @param string $email
176
- */
177
- private static function _sendEmailConfirmNotification( $token, $email )
178
- {
179
- $confirm_url = admin_url( 'admin.php?' . build_query( array( 'page' => self::pageSlug(), 'token' => $token ) ) );
180
- $message = sprintf( __( "Hello,\n\nThank you for registering at Bookly SMS service. Please click the link below to verify your email address.\n\n<a href='%s'>%s</a>\n\nBookly", 'bookly' ), $confirm_url, $confirm_url );
181
-
182
- wp_mail(
183
- $email,
184
- __( 'Bookly SMS service – email confirmation', 'bookly' ),
185
- get_option( 'bookly_email_send_as' ) == 'html' ? wpautop( $message ) : $message,
186
- Lib\Utils\Common::getEmailHeaders()
187
- );
188
- }
189
-
190
  /**
191
  * Show 'SMS Notifications' submenu with counter inside Bookly main menu.
192
  */
@@ -199,7 +176,7 @@ class Page extends Lib\Base\Component
199
  'bookly-menu',
200
  $sms,
201
  $count ? sprintf( '%s <span class="update-plugins count-%d"><span class="update-count">%d</span></span>', $sms, $count, $count ) : $sms,
202
- 'manage_options',
203
  self::pageSlug(),
204
  function () { Page::render(); }
205
  );
50
  ),
51
  ) );
52
 
53
+ $alert = array( 'success' => array(), 'error' => array() );
54
+ $prices = array();
55
+ $sms = new Lib\SMS();
56
 
57
  $email_confirm_required = false;
58
  $show_registration_form = false;
64
  $sms->logout();
65
  } elseif ( self::hasParameter( 'form-registration' ) ) {
66
  if ( self::parameter( 'accept_tos', false ) ) {
67
+ $success = $sms->register(
68
  self::parameter( 'username' ),
69
  self::parameter( 'password' ),
70
  self::parameter( 'password_repeat' )
71
  );
72
+ if ( $success ) {
73
  $email_confirm_required = self::parameter( 'username' );
 
74
  } else {
75
  $show_registration_form = true;
76
  }
77
  } else {
78
  $alert['error'][] = __( 'Please accept terms and conditions.', 'bookly' );
79
  }
 
 
80
  }
81
  if ( $email_confirm_required !== false || self::hasParameter( 'form-registration' ) ) {
82
  $is_logged_in = false;
119
  wp_localize_script( 'bookly-daterangepicker.js', 'BooklyL10n',
120
  array(
121
  'csrfToken' => Lib\Utils\Common::getCsrfToken(),
122
+ 'smsAlert' => $alert,
123
  'areYouSure' => __( 'Are you sure?', 'bookly' ),
124
  'cancel' => __( 'Cancel', 'bookly' ),
125
  'country' => get_option( 'bookly_cst_phone_default_country' ),
132
  'utils' => is_rtl() ? '' : plugins_url( 'intlTelInput.utils.js', Lib\Plugin::getDirectory() . '/frontend/resources/js/intlTelInput.utils.js' ),
133
  'enabled' => get_option( 'bookly_cst_phone_default_country' ) != 'disabled',
134
  ),
 
135
  'datePicker' => Lib\Utils\DateTime::datePickerOptions(),
136
+ 'dateRange' => Lib\Utils\DateTime::dateRangeOptions( array( 'lastMonth' => __( 'Last month', 'bookly' ), ) ),
137
  'sender_id' => array(
138
  'sent' => __( 'Sender ID request is sent.', 'bookly' ),
139
  'set_default' => __( 'Sender ID is reset to default.', 'bookly' ),
164
  self::renderTemplate( 'index', compact( 'sms', 'is_logged_in', 'prices', 'bookly_ntf_processing_interval_values', 'undelivered_count', 'email_confirm_required', 'show_registration_form' ) );
165
  }
166
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
167
  /**
168
  * Show 'SMS Notifications' submenu with counter inside Bookly main menu.
169
  */
176
  'bookly-menu',
177
  $sms,
178
  $count ? sprintf( '%s <span class="update-plugins count-%d"><span class="update-count">%d</span></span>', $sms, $count, $count ) : $sms,
179
+ Lib\Utils\Common::getRequiredCapability(),
180
  self::pageSlug(),
181
  function () { Page::render(); }
182
  );
backend/modules/sms/resources/js/notifications-list.js CHANGED
@@ -208,11 +208,14 @@ jQuery(function($) {
208
  ladda.stop();
209
  if (response.success) {
210
  booklyAlert({success: [BooklyL10n.sentSuccessfully]});
 
211
  }
212
  }
213
  });
214
  })
215
  .on('shown.bs.modal', function () {
 
 
216
  $testNotificationsList.html('');
217
  var active = 0;
218
  (dt.rows().data()).each(function (notification) {
@@ -224,12 +227,11 @@ jQuery(function($) {
224
  }
225
  });
226
  $('.bookly-js-count', $modalTestEmail).html(active);
 
227
  });
228
 
229
  $testNotificationsList
230
  .on('change', ':checkbox', function () {
231
  $('.bookly-js-count', $modalTestEmail).html($(':checked', $testNotificationsList).length);
232
  });
233
-
234
- booklyAlert(BooklyL10n.alert);
235
  });
208
  ladda.stop();
209
  if (response.success) {
210
  booklyAlert({success: [BooklyL10n.sentSuccessfully]});
211
+ $modalTestEmail.modal('hide');
212
  }
213
  }
214
  });
215
  })
216
  .on('shown.bs.modal', function () {
217
+ var $send = $(this).find('.btn-success');
218
+ $send.prop('disabled', true);
219
  $testNotificationsList.html('');
220
  var active = 0;
221
  (dt.rows().data()).each(function (notification) {
227
  }
228
  });
229
  $('.bookly-js-count', $modalTestEmail).html(active);
230
+ $send.prop('disabled', false);
231
  });
232
 
233
  $testNotificationsList
234
  .on('change', ':checkbox', function () {
235
  $('.bookly-js-count', $modalTestEmail).html($(':checked', $testNotificationsList).length);
236
  });
 
 
237
  });
backend/modules/sms/resources/js/sms.js CHANGED
@@ -7,7 +7,7 @@ jQuery(function($) {
7
  $form_login = $('.bookly-login-form')
8
  ;
9
 
10
- booklyAlert(BooklyL10n.alert);
11
 
12
  $('.show-register-form').on('click', function (e) {
13
  e.preventDefault();
@@ -280,7 +280,7 @@ jQuery(function($) {
280
  cancelLabel : BooklyL10n.dateRange.cancel,
281
  fromLabel : BooklyL10n.dateRange.from,
282
  toLabel : BooklyL10n.dateRange.to,
283
- customRangeLabel: BooklyL10n.dateRange.custom_range,
284
  daysOfWeek : BooklyL10n.datePicker.dayNamesShort,
285
  monthNames : BooklyL10n.datePicker.monthNames,
286
  firstDay : parseInt(BooklyL10n.dateRange.firstDay),
7
  $form_login = $('.bookly-login-form')
8
  ;
9
 
10
+ booklyAlert(BooklyL10n.smsAlert);
11
 
12
  $('.show-register-form').on('click', function (e) {
13
  e.preventDefault();
280
  cancelLabel : BooklyL10n.dateRange.cancel,
281
  fromLabel : BooklyL10n.dateRange.from,
282
  toLabel : BooklyL10n.dateRange.to,
283
+ customRangeLabel: BooklyL10n.dateRange.customRange,
284
  daysOfWeek : BooklyL10n.datePicker.dayNamesShort,
285
  monthNames : BooklyL10n.datePicker.monthNames,
286
  firstDay : parseInt(BooklyL10n.dateRange.firstDay),
backend/modules/staff/Ajax.php CHANGED
@@ -140,66 +140,6 @@ class Ajax extends Lib\Base\Ajax
140
  wp_send_json_success();
141
  }
142
 
143
- /**
144
- * Reset breaks.
145
- */
146
- public static function resetBreaks()
147
- {
148
- $breaks = self::parameter( 'breaks' );
149
-
150
- if ( ! Lib\Utils\Common::isCurrentUserAdmin() ) {
151
- // Check permissions to prevent one staff member from updating profile of another staff member.
152
- do {
153
- if ( self::parameter( 'staff_cabinet' ) && Lib\Config::staffCabinetActive() ) {
154
- $allow = true;
155
- } else {
156
- $allow = get_option( 'bookly_gen_allow_staff_edit_profile' );
157
- }
158
- if ( $allow ) {
159
- $breaks = self::parameter( 'breaks' );
160
- $staff = new Lib\Entities\Staff();
161
- $staff->load( $breaks['staff_id'] );
162
- if ( $staff->getWpUserId() == get_current_user_id() ) {
163
- break;
164
- }
165
- }
166
- do_action( 'admin_page_access_denied' );
167
- wp_die( 'Bookly: ' . __( 'You do not have sufficient permissions to access this page.' ) );
168
- } while ( 0 );
169
- }
170
-
171
- $html_breaks = array();
172
-
173
- // Remove all breaks for staff member.
174
- $break = new Lib\Entities\ScheduleItemBreak();
175
- $break->removeBreaksByStaffId( $breaks['staff_id'] );
176
-
177
- // Restore previous breaks.
178
- if ( isset( $breaks['breaks'] ) && is_array( $breaks['breaks'] ) ) {
179
- foreach ( $breaks['breaks'] as $day ) {
180
- $schedule_item_break = new Lib\Entities\ScheduleItemBreak();
181
- $schedule_item_break->setFields( $day );
182
- $schedule_item_break->save();
183
- }
184
- }
185
-
186
- $staff = new Lib\Entities\Staff();
187
- $staff->load( $breaks['staff_id'] );
188
-
189
- // Make array with breaks (html) for each day.
190
- foreach ( $staff->getScheduleItems() as $item ) {
191
- /** @var Lib\Entities\StaffScheduleItem $item */
192
- $html_breaks[ $item->getId() ] = self::renderTemplate( '_breaks', array(
193
- 'day_is_not_available' => null === $item->getStartTime(),
194
- 'item' => $item,
195
- 'break_start' => new TimeChoice( array( 'use_empty' => false, 'type' => 'break_from' ) ),
196
- 'break_end' => new TimeChoice( array( 'use_empty' => false, 'type' => 'to' ) ),
197
- ), false );
198
- }
199
-
200
- wp_send_json( $html_breaks );
201
- }
202
-
203
  /**
204
  * Extend parent method to control access on staff member level.
205
  *
140
  wp_send_json_success();
141
  }
142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  /**
144
  * Extend parent method to control access on staff member level.
145
  *
backend/modules/staff/resources/js/staff-list.js CHANGED
@@ -141,22 +141,20 @@ jQuery(function ($) {
141
  processing : BooklyL10n.processing
142
  }
143
  }).on('row-reordered', function (e, diff, edit) {
144
- var positions = [];
145
- function sortByPosition(a, b){
146
- return ((a.position < b.position) ? -1 : ((a.position > b.position) ? 1 : 0));
147
- }
148
- dt.data().each(function (service) {
149
- positions.push({position: service.position, id: service.id});
150
  });
151
  $.ajax({
152
- url : ajaxurl,
153
- type : 'POST',
154
- data: {
155
  action : 'bookly_update_staff_position',
156
  csrf_token : BooklyL10n.csrfToken,
157
- 'positions[]': $.map(positions.sort(sortByPosition), function (value) {
158
- return value.id;
159
- })
 
160
  },
161
  dataType: 'json',
162
  success : function (response) {
@@ -248,10 +246,6 @@ jQuery(function ($) {
248
  });
249
 
250
  $('.bookly-js-select')
251
- .on('select2:unselecting', function(e) {
252
- e.preventDefault();
253
- $(this).val(null).trigger('change');
254
- })
255
  .select2({
256
  width: '100%',
257
  theme: 'bootstrap',
141
  processing : BooklyL10n.processing
142
  }
143
  }).on('row-reordered', function (e, diff, edit) {
144
+ let positions = [];
145
+ dt.data().each(function (item) {
146
+ positions.push({position: parseInt(item.position), id: item.id});
 
 
 
147
  });
148
  $.ajax({
149
+ url : ajaxurl,
150
+ type : 'POST',
151
+ data : {
152
  action : 'bookly_update_staff_position',
153
  csrf_token : BooklyL10n.csrfToken,
154
+ positions : (positions.sort((a, b) => a.position - b.position))
155
+ .map(function (value) {
156
+ return value.id;
157
+ })
158
  },
159
  dataType: 'json',
160
  success : function (response) {
246
  });
247
 
248
  $('.bookly-js-select')
 
 
 
 
249
  .select2({
250
  width: '100%',
251
  theme: 'bootstrap',
backend/resources/bootstrap/css/bootstrap-theme.min.css CHANGED
@@ -1,3 +1,3 @@
1
  #bookly-tbs{
2
-
3
- }#bookly-tbs html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}#bookly-tbs body{margin:0}#bookly-tbs article,#bookly-tbs aside,#bookly-tbs details,#bookly-tbs figcaption,#bookly-tbs figure,#bookly-tbs footer,#bookly-tbs header,#bookly-tbs hgroup,#bookly-tbs main,#bookly-tbs menu,#bookly-tbs nav,#bookly-tbs section,#bookly-tbs summary{display:block}#bookly-tbs audio,#bookly-tbs canvas,#bookly-tbs progress,#bookly-tbs video{display:inline-block;vertical-align:baseline}#bookly-tbs audio:not([controls]){display:none;height:0}#bookly-tbs [hidden],#bookly-tbs template{display:none}#bookly-tbs a{background-color:transparent}#bookly-tbs a:active,#bookly-tbs a:hover{outline:0}#bookly-tbs abbr[title]{border-bottom:1px dotted}#bookly-tbs b,#bookly-tbs strong{font-weight:700}#bookly-tbs dfn{font-style:italic}#bookly-tbs h1{margin:.67em 0;font-size:2em}#bookly-tbs mark{color:#000;background:#ff0}#bookly-tbs small{font-size:80%}#bookly-tbs sub,#bookly-tbs sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}#bookly-tbs sup{top:-.5em}#bookly-tbs sub{bottom:-.25em}#bookly-tbs img{border:0}#bookly-tbs svg:not(:root){overflow:hidden}#bookly-tbs figure{margin:1em 40px}#bookly-tbs hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs pre{overflow:auto}#bookly-tbs code,#bookly-tbs kbd,#bookly-tbs pre,#bookly-tbs samp{font-family:monospace,monospace;font-size:1em}#bookly-tbs button,#bookly-tbs input,#bookly-tbs optgroup,#bookly-tbs select,#bookly-tbs textarea{margin:0;font:inherit;color:inherit}#bookly-tbs button{overflow:visible}#bookly-tbs button,#bookly-tbs select{text-transform:none}#bookly-tbs button,#bookly-tbs html input[type=button],#bookly-tbs input[type=reset],#bookly-tbs input[type=submit]{-webkit-appearance:button;cursor:pointer}#bookly-tbs button[disabled],#bookly-tbs html input[disabled]{cursor:default}#bookly-tbs button::-moz-focus-inner,#bookly-tbs input::-moz-focus-inner{padding:0;border:0}#bookly-tbs input{line-height:normal}#bookly-tbs input[type=checkbox],#bookly-tbs input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}#bookly-tbs input[type=number]::-webkit-inner-spin-button,#bookly-tbs input[type=number]::-webkit-outer-spin-button{height:auto}#bookly-tbs input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}#bookly-tbs input[type=search]::-webkit-search-cancel-button,#bookly-tbs input[type=search]::-webkit-search-decoration{-webkit-appearance:none}#bookly-tbs fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}#bookly-tbs legend{padding:0;border:0}#bookly-tbs textarea{overflow:auto}#bookly-tbs optgroup{font-weight:700}#bookly-tbs table{border-spacing:0;border-collapse:collapse}#bookly-tbs td,#bookly-tbs th{padding:0}@media print{#bookly-tbs *,#bookly-tbs :after,#bookly-tbs :before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}#bookly-tbs a,#bookly-tbs a:visited{text-decoration:underline}#bookly-tbs a[href]:after{content:" (" attr(href) ")"}#bookly-tbs abbr[title]:after{content:" (" attr(title) ")"}#bookly-tbs a[href^="javascript:"]:after,#bookly-tbs a[href^="#"]:after{content:""}#bookly-tbs blockquote,#bookly-tbs pre{border:1px solid #999;page-break-inside:avoid}#bookly-tbs thead{display:table-header-group}#bookly-tbs img,#bookly-tbs tr{page-break-inside:avoid}#bookly-tbs img{max-width:100%!important}#bookly-tbs h2,#bookly-tbs h3,#bookly-tbs p{orphans:3;widows:3}#bookly-tbs h2,#bookly-tbs h3{page-break-after:avoid}#bookly-tbs .navbar{display:none}#bookly-tbs .btn>.caret,#bookly-tbs .dropup>.btn>.caret{border-top-color:#000!important}#bookly-tbs .label{border:1px solid #000}#bookly-tbs .table{border-collapse:collapse!important}#bookly-tbs .table td,#bookly-tbs .table th{background-color:#fff!important}#bookly-tbs .table-bordered td,#bookly-tbs .table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}#bookly-tbs .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bookly-tbs .glyphicon-asterisk:before{content:"\002a"}#bookly-tbs .glyphicon-plus:before{content:"\002b"}#bookly-tbs .glyphicon-eur:before,#bookly-tbs .glyphicon-euro:before{content:"\20ac"}#bookly-tbs .glyphicon-minus:before{content:"\2212"}#bookly-tbs .glyphicon-cloud:before{content:"\2601"}#bookly-tbs .glyphicon-envelope:before{content:"\2709"}#bookly-tbs .glyphicon-pencil:before{content:"\270f"}#bookly-tbs .glyphicon-glass:before{content:"\e001"}#bookly-tbs .glyphicon-music:before{content:"\e002"}#bookly-tbs .glyphicon-search:before{content:"\e003"}#bookly-tbs .glyphicon-heart:before{content:"\e005"}#bookly-tbs .glyphicon-star:before{content:"\e006"}#bookly-tbs .glyphicon-star-empty:before{content:"\e007"}#bookly-tbs .glyphicon-user:before{content:"\e008"}#bookly-tbs .glyphicon-film:before{content:"\e009"}#bookly-tbs .glyphicon-th-large:before{content:"\e010"}#bookly-tbs .glyphicon-th:before{content:"\e011"}#bookly-tbs .glyphicon-th-list:before{content:"\e012"}#bookly-tbs .glyphicon-ok:before{content:"\e013"}#bookly-tbs .glyphicon-remove:before{content:"\e014"}#bookly-tbs .glyphicon-zoom-in:before{content:"\e015"}#bookly-tbs .glyphicon-zoom-out:before{content:"\e016"}#bookly-tbs .glyphicon-off:before{content:"\e017"}#bookly-tbs .glyphicon-signal:before{content:"\e018"}#bookly-tbs .glyphicon-cog:before{content:"\e019"}#bookly-tbs .glyphicon-trash:before{content:"\e020"}#bookly-tbs .glyphicon-home:before{content:"\e021"}#bookly-tbs .glyphicon-file:before{content:"\e022"}#bookly-tbs .glyphicon-time:before{content:"\e023"}#bookly-tbs .glyphicon-road:before{content:"\e024"}#bookly-tbs .glyphicon-download-alt:before{content:"\e025"}#bookly-tbs .glyphicon-download:before{content:"\e026"}#bookly-tbs .glyphicon-upload:before{content:"\e027"}#bookly-tbs .glyphicon-inbox:before{content:"\e028"}#bookly-tbs .glyphicon-play-circle:before{content:"\e029"}#bookly-tbs .glyphicon-repeat:before{content:"\e030"}#bookly-tbs .glyphicon-refresh:before{content:"\e031"}#bookly-tbs .glyphicon-list-alt:before{content:"\e032"}#bookly-tbs .glyphicon-lock:before{content:"\e033"}#bookly-tbs .glyphicon-flag:before{content:"\e034"}#bookly-tbs .glyphicon-headphones:before{content:"\e035"}#bookly-tbs .glyphicon-volume-off:before{content:"\e036"}#bookly-tbs .glyphicon-volume-down:before{content:"\e037"}#bookly-tbs .glyphicon-volume-up:before{content:"\e038"}#bookly-tbs .glyphicon-qrcode:before{content:"\e039"}#bookly-tbs .glyphicon-barcode:before{content:"\e040"}#bookly-tbs .glyphicon-tag:before{content:"\e041"}#bookly-tbs .glyphicon-tags:before{content:"\e042"}#bookly-tbs .glyphicon-book:before{content:"\e043"}#bookly-tbs .glyphicon-bookmark:before{content:"\e044"}#bookly-tbs .glyphicon-print:before{content:"\e045"}#bookly-tbs .glyphicon-camera:before{content:"\e046"}#bookly-tbs .glyphicon-font:before{content:"\e047"}#bookly-tbs .glyphicon-bold:before{content:"\e048"}#bookly-tbs .glyphicon-italic:before{content:"\e049"}#bookly-tbs .glyphicon-text-height:before{content:"\e050"}#bookly-tbs .glyphicon-text-width:before{content:"\e051"}#bookly-tbs .glyphicon-align-left:before{content:"\e052"}#bookly-tbs .glyphicon-align-center:before{content:"\e053"}#bookly-tbs .glyphicon-align-right:before{content:"\e054"}#bookly-tbs .glyphicon-align-justify:before{content:"\e055"}#bookly-tbs .glyphicon-list:before{content:"\e056"}#bookly-tbs .glyphicon-indent-left:before{content:"\e057"}#bookly-tbs .glyphicon-indent-right:before{content:"\e058"}#bookly-tbs .glyphicon-facetime-video:before{content:"\e059"}#bookly-tbs .glyphicon-picture:before{content:"\e060"}#bookly-tbs .glyphicon-map-marker:before{content:"\e062"}#bookly-tbs .glyphicon-adjust:before{content:"\e063"}#bookly-tbs .glyphicon-tint:before{content:"\e064"}#bookly-tbs .glyphicon-edit:before{content:"\e065"}#bookly-tbs .glyphicon-share:before{content:"\e066"}#bookly-tbs .glyphicon-check:before{content:"\e067"}#bookly-tbs .glyphicon-move:before{content:"\e068"}#bookly-tbs .glyphicon-step-backward:before{content:"\e069"}#bookly-tbs .glyphicon-fast-backward:before{content:"\e070"}#bookly-tbs .glyphicon-backward:before{content:"\e071"}#bookly-tbs .glyphicon-play:before{content:"\e072"}#bookly-tbs .glyphicon-pause:before{content:"\e073"}#bookly-tbs .glyphicon-stop:before{content:"\e074"}#bookly-tbs .glyphicon-forward:before{content:"\e075"}#bookly-tbs .glyphicon-fast-forward:before{content:"\e076"}#bookly-tbs .glyphicon-step-forward:before{content:"\e077"}#bookly-tbs .glyphicon-eject:before{content:"\e078"}#bookly-tbs .glyphicon-chevron-left:before{content:"\e079"}#bookly-tbs .glyphicon-chevron-right:before{content:"\e080"}#bookly-tbs .glyphicon-plus-sign:before{content:"\e081"}#bookly-tbs .glyphicon-minus-sign:before{content:"\e082"}#bookly-tbs .glyphicon-remove-sign:before{content:"\e083"}#bookly-tbs .glyphicon-ok-sign:before{content:"\e084"}#bookly-tbs .glyphicon-question-sign:before{content:"\e085"}#bookly-tbs .glyphicon-info-sign:before{content:"\e086"}#bookly-tbs .glyphicon-screenshot:before{content:"\e087"}#bookly-tbs .glyphicon-remove-circle:before{content:"\e088"}#bookly-tbs .glyphicon-ok-circle:before{content:"\e089"}#bookly-tbs .glyphicon-ban-circle:before{content:"\e090"}#bookly-tbs .glyphicon-arrow-left:before{content:"\e091"}#bookly-tbs .glyphicon-arrow-right:before{content:"\e092"}#bookly-tbs .glyphicon-arrow-up:before{content:"\e093"}#bookly-tbs .glyphicon-arrow-down:before{content:"\e094"}#bookly-tbs .glyphicon-share-alt:before{content:"\e095"}#bookly-tbs .glyphicon-resize-full:before{content:"\e096"}#bookly-tbs .glyphicon-resize-small:before{content:"\e097"}#bookly-tbs .glyphicon-exclamation-sign:before{content:"\e101"}#bookly-tbs .glyphicon-gift:before{content:"\e102"}#bookly-tbs .glyphicon-leaf:before{content:"\e103"}#bookly-tbs .glyphicon-fire:before{content:"\e104"}#bookly-tbs .glyphicon-eye-open:before{content:"\e105"}#bookly-tbs .glyphicon-eye-close:before{content:"\e106"}#bookly-tbs .glyphicon-warning-sign:before{content:"\e107"}#bookly-tbs .glyphicon-plane:before{content:"\e108"}#bookly-tbs .glyphicon-calendar:before{content:"\e109"}#bookly-tbs .glyphicon-random:before{content:"\e110"}#bookly-tbs .glyphicon-comment:before{content:"\e111"}#bookly-tbs .glyphicon-magnet:before{content:"\e112"}#bookly-tbs .glyphicon-chevron-up:before{content:"\e113"}#bookly-tbs .glyphicon-chevron-down:before{content:"\e114"}#bookly-tbs .glyphicon-retweet:before{content:"\e115"}#bookly-tbs .glyphicon-shopping-cart:before{content:"\e116"}#bookly-tbs .glyphicon-folder-close:before{content:"\e117"}#bookly-tbs .glyphicon-folder-open:before{content:"\e118"}#bookly-tbs .glyphicon-resize-vertical:before{content:"\e119"}#bookly-tbs .glyphicon-resize-horizontal:before{content:"\e120"}#bookly-tbs .glyphicon-hdd:before{content:"\e121"}#bookly-tbs .glyphicon-bullhorn:before{content:"\e122"}#bookly-tbs .glyphicon-bell:before{content:"\e123"}#bookly-tbs .glyphicon-certificate:before{content:"\e124"}#bookly-tbs .glyphicon-thumbs-up:before{content:"\e125"}#bookly-tbs .glyphicon-thumbs-down:before{content:"\e126"}#bookly-tbs .glyphicon-hand-right:before{content:"\e127"}#bookly-tbs .glyphicon-hand-left:before{content:"\e128"}#bookly-tbs .glyphicon-hand-up:before{content:"\e129"}#bookly-tbs .glyphicon-hand-down:before{content:"\e130"}#bookly-tbs .glyphicon-circle-arrow-right:before{content:"\e131"}#bookly-tbs .glyphicon-circle-arrow-left:before{content:"\e132"}#bookly-tbs .glyphicon-circle-arrow-up:before{content:"\e133"}#bookly-tbs .glyphicon-circle-arrow-down:before{content:"\e134"}#bookly-tbs .glyphicon-globe:before{content:"\e135"}#bookly-tbs .glyphicon-wrench:before{content:"\e136"}#bookly-tbs .glyphicon-tasks:before{content:"\e137"}#bookly-tbs .glyphicon-filter:before{content:"\e138"}#bookly-tbs .glyphicon-briefcase:before{content:"\e139"}#bookly-tbs .glyphicon-fullscreen:before{content:"\e140"}#bookly-tbs .glyphicon-dashboard:before{content:"\e141"}#bookly-tbs .glyphicon-paperclip:before{content:"\e142"}#bookly-tbs .glyphicon-heart-empty:before{content:"\e143"}#bookly-tbs .glyphicon-link:before{content:"\e144"}#bookly-tbs .glyphicon-phone:before{content:"\e145"}#bookly-tbs .glyphicon-pushpin:before{content:"\e146"}#bookly-tbs .glyphicon-usd:before{content:"\e148"}#bookly-tbs .glyphicon-gbp:before{content:"\e149"}#bookly-tbs .glyphicon-sort:before{content:"\e150"}#bookly-tbs .glyphicon-sort-by-alphabet:before{content:"\e151"}#bookly-tbs .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}#bookly-tbs .glyphicon-sort-by-order:before{content:"\e153"}#bookly-tbs .glyphicon-sort-by-order-alt:before{content:"\e154"}#bookly-tbs .glyphicon-sort-by-attributes:before{content:"\e155"}#bookly-tbs .glyphicon-sort-by-attributes-alt:before{content:"\e156"}#bookly-tbs .glyphicon-unchecked:before{content:"\e157"}#bookly-tbs .glyphicon-expand:before{content:"\e158"}#bookly-tbs .glyphicon-collapse-down:before{content:"\e159"}#bookly-tbs .glyphicon-collapse-up:before{content:"\e160"}#bookly-tbs .glyphicon-log-in:before{content:"\e161"}#bookly-tbs .glyphicon-flash:before{content:"\e162"}#bookly-tbs .glyphicon-log-out:before{content:"\e163"}#bookly-tbs .glyphicon-new-window:before{content:"\e164"}#bookly-tbs .glyphicon-record:before{content:"\e165"}#bookly-tbs .glyphicon-save:before{content:"\e166"}#bookly-tbs .glyphicon-open:before{content:"\e167"}#bookly-tbs .glyphicon-saved:before{content:"\e168"}#bookly-tbs .glyphicon-import:before{content:"\e169"}#bookly-tbs .glyphicon-export:before{content:"\e170"}#bookly-tbs .glyphicon-send:before{content:"\e171"}#bookly-tbs .glyphicon-floppy-disk:before{content:"\e172"}#bookly-tbs .glyphicon-floppy-saved:before{content:"\e173"}#bookly-tbs .glyphicon-floppy-remove:before{content:"\e174"}#bookly-tbs .glyphicon-floppy-save:before{content:"\e175"}#bookly-tbs .glyphicon-floppy-open:before{content:"\e176"}#bookly-tbs .glyphicon-credit-card:before{content:"\e177"}#bookly-tbs .glyphicon-transfer:before{content:"\e178"}#bookly-tbs .glyphicon-cutlery:before{content:"\e179"}#bookly-tbs .glyphicon-header:before{content:"\e180"}#bookly-tbs .glyphicon-compressed:before{content:"\e181"}#bookly-tbs .glyphicon-earphone:before{content:"\e182"}#bookly-tbs .glyphicon-phone-alt:before{content:"\e183"}#bookly-tbs .glyphicon-tower:before{content:"\e184"}#bookly-tbs .glyphicon-stats:before{content:"\e185"}#bookly-tbs .glyphicon-sd-video:before{content:"\e186"}#bookly-tbs .glyphicon-hd-video:before{content:"\e187"}#bookly-tbs .glyphicon-subtitles:before{content:"\e188"}#bookly-tbs .glyphicon-sound-stereo:before{content:"\e189"}#bookly-tbs .glyphicon-sound-dolby:before{content:"\e190"}#bookly-tbs .glyphicon-sound-5-1:before{content:"\e191"}#bookly-tbs .glyphicon-sound-6-1:before{content:"\e192"}#bookly-tbs .glyphicon-sound-7-1:before{content:"\e193"}#bookly-tbs .glyphicon-copyright-mark:before{content:"\e194"}#bookly-tbs .glyphicon-registration-mark:before{content:"\e195"}#bookly-tbs .glyphicon-cloud-download:before{content:"\e197"}#bookly-tbs .glyphicon-cloud-upload:before{content:"\e198"}#bookly-tbs .glyphicon-tree-conifer:before{content:"\e199"}#bookly-tbs .glyphicon-tree-deciduous:before{content:"\e200"}#bookly-tbs .glyphicon-cd:before{content:"\e201"}#bookly-tbs .glyphicon-save-file:before{content:"\e202"}#bookly-tbs .glyphicon-open-file:before{content:"\e203"}#bookly-tbs .glyphicon-level-up:before{content:"\e204"}#bookly-tbs .glyphicon-copy:before{content:"\e205"}#bookly-tbs .glyphicon-paste:before{content:"\e206"}#bookly-tbs .glyphicon-alert:before{content:"\e209"}#bookly-tbs .glyphicon-equalizer:before{content:"\e210"}#bookly-tbs .glyphicon-king:before{content:"\e211"}#bookly-tbs .glyphicon-queen:before{content:"\e212"}#bookly-tbs .glyphicon-pawn:before{content:"\e213"}#bookly-tbs .glyphicon-bishop:before{content:"\e214"}#bookly-tbs .glyphicon-knight:before{content:"\e215"}#bookly-tbs .glyphicon-baby-formula:before{content:"\e216"}#bookly-tbs .glyphicon-tent:before{content:"\26fa"}#bookly-tbs .glyphicon-blackboard:before{content:"\e218"}#bookly-tbs .glyphicon-bed:before{content:"\e219"}#bookly-tbs .glyphicon-apple:before{content:"\f8ff"}#bookly-tbs .glyphicon-erase:before{content:"\e221"}#bookly-tbs .glyphicon-hourglass:before{content:"\231b"}#bookly-tbs .glyphicon-lamp:before{content:"\e223"}#bookly-tbs .glyphicon-duplicate:before{content:"\e224"}#bookly-tbs .glyphicon-piggy-bank:before{content:"\e225"}#bookly-tbs .glyphicon-scissors:before{content:"\e226"}#bookly-tbs .glyphicon-bitcoin:before{content:"\e227"}#bookly-tbs .glyphicon-btc:before{content:"\e227"}#bookly-tbs .glyphicon-xbt:before{content:"\e227"}#bookly-tbs .glyphicon-yen:before{content:"\00a5"}#bookly-tbs .glyphicon-jpy:before{content:"\00a5"}#bookly-tbs .glyphicon-ruble:before{content:"\20bd"}#bookly-tbs .glyphicon-rub:before{content:"\20bd"}#bookly-tbs .glyphicon-scale:before{content:"\e230"}#bookly-tbs .glyphicon-ice-lolly:before{content:"\e231"}#bookly-tbs .glyphicon-ice-lolly-tasted:before{content:"\e232"}#bookly-tbs .glyphicon-education:before{content:"\e233"}#bookly-tbs .glyphicon-option-horizontal:before{content:"\e234"}#bookly-tbs .glyphicon-option-vertical:before{content:"\e235"}#bookly-tbs .glyphicon-menu-hamburger:before{content:"\e236"}#bookly-tbs .glyphicon-modal-window:before{content:"\e237"}#bookly-tbs .glyphicon-oil:before{content:"\e238"}#bookly-tbs .glyphicon-grain:before{content:"\e239"}#bookly-tbs .glyphicon-sunglasses:before{content:"\e240"}#bookly-tbs .glyphicon-text-size:before{content:"\e241"}#bookly-tbs .glyphicon-text-color:before{content:"\e242"}#bookly-tbs .glyphicon-text-background:before{content:"\e243"}#bookly-tbs .glyphicon-object-align-top:before{content:"\e244"}#bookly-tbs .glyphicon-object-align-bottom:before{content:"\e245"}#bookly-tbs .glyphicon-object-align-horizontal:before{content:"\e246"}#bookly-tbs .glyphicon-object-align-left:before{content:"\e247"}#bookly-tbs .glyphicon-object-align-vertical:before{content:"\e248"}#bookly-tbs .glyphicon-object-align-right:before{content:"\e249"}#bookly-tbs .glyphicon-triangle-right:before{content:"\e250"}#bookly-tbs .glyphicon-triangle-left:before{content:"\e251"}#bookly-tbs .glyphicon-triangle-bottom:before{content:"\e252"}#bookly-tbs .glyphicon-triangle-top:before{content:"\e253"}#bookly-tbs .glyphicon-console:before{content:"\e254"}#bookly-tbs .glyphicon-superscript:before{content:"\e255"}#bookly-tbs .glyphicon-subscript:before{content:"\e256"}#bookly-tbs .glyphicon-menu-left:before{content:"\e257"}#bookly-tbs .glyphicon-menu-right:before{content:"\e258"}#bookly-tbs .glyphicon-menu-down:before{content:"\e259"}#bookly-tbs .glyphicon-menu-up:before{content:"\e260"}#bookly-tbs *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bookly-tbs :after,#bookly-tbs :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bookly-tbs .bookly-tbs-body{font-family:"open sans","helvetica neue",helvetica,arial,sans-serif;font-size:15px;line-height:1.4;color:#3e424a;background-color:transparent;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bookly-tbs button,#bookly-tbs input,#bookly-tbs select,#bookly-tbs textarea{font-family:inherit;font-size:inherit;line-height:inherit}#bookly-tbs a{color:#08c;text-decoration:none}#bookly-tbs a:focus,#bookly-tbs a:hover{color:#005580;text-decoration:none}#bookly-tbs a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bookly-tbs figure{margin:0}#bookly-tbs img{vertical-align:middle}#bookly-tbs .carousel-inner>.item>a>img,#bookly-tbs .carousel-inner>.item>img,#bookly-tbs .img-responsive,#bookly-tbs .thumbnail a>img,#bookly-tbs .thumbnail>img{display:block;max-width:100%;height:auto}#bookly-tbs .img-rounded{border-radius:6px}#bookly-tbs .img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.4;background-color:transparent;border:1px solid #e8ebf0;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#bookly-tbs .img-circle{border-radius:50%}#bookly-tbs hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #d9dee4}#bookly-tbs .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}#bookly-tbs .sr-only-focusable:active,#bookly-tbs .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}#bookly-tbs [role=button]{cursor:pointer}#bookly-tbs .h1,#bookly-tbs .h2,#bookly-tbs .h3,#bookly-tbs .h4,#bookly-tbs .h5,#bookly-tbs .h6,#bookly-tbs h1,#bookly-tbs h2,#bookly-tbs h3,#bookly-tbs h4,#bookly-tbs h5,#bookly-tbs h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit}#bookly-tbs .h1 .small,#bookly-tbs .h1 small,#bookly-tbs .h2 .small,#bookly-tbs .h2 small,#bookly-tbs .h3 .small,#bookly-tbs .h3 small,#bookly-tbs .h4 .small,#bookly-tbs .h4 small,#bookly-tbs .h5 .small,#bookly-tbs .h5 small,#bookly-tbs .h6 .small,#bookly-tbs .h6 small,#bookly-tbs h1 .small,#bookly-tbs h1 small,#bookly-tbs h2 .small,#bookly-tbs h2 small,#bookly-tbs h3 .small,#bookly-tbs h3 small,#bookly-tbs h4 .small,#bookly-tbs h4 small,#bookly-tbs h5 .small,#bookly-tbs h5 small,#bookly-tbs h6 .small,#bookly-tbs h6 small{font-weight:400;line-height:1;color:#d9dee4}#bookly-tbs .h1,#bookly-tbs .h2,#bookly-tbs .h3,#bookly-tbs h1,#bookly-tbs h2,#bookly-tbs h3{margin-top:21px;margin-bottom:10.5px}#bookly-tbs .h1 .small,#bookly-tbs .h1 small,#bookly-tbs .h2 .small,#bookly-tbs .h2 small,#bookly-tbs .h3 .small,#bookly-tbs .h3 small,#bookly-tbs h1 .small,#bookly-tbs h1 small,#bookly-tbs h2 .small,#bookly-tbs h2 small,#bookly-tbs h3 .small,#bookly-tbs h3 small{font-size:65%}#bookly-tbs .h4,#bookly-tbs .h5,#bookly-tbs .h6,#bookly-tbs h4,#bookly-tbs h5,#bookly-tbs h6{margin-top:10.5px;margin-bottom:10.5px}#bookly-tbs .h4 .small,#bookly-tbs .h4 small,#bookly-tbs .h5 .small,#bookly-tbs .h5 small,#bookly-tbs .h6 .small,#bookly-tbs .h6 small,#bookly-tbs h4 .small,#bookly-tbs h4 small,#bookly-tbs h5 .small,#bookly-tbs h5 small,#bookly-tbs h6 .small,#bookly-tbs h6 small{font-size:75%}#bookly-tbs .h1,#bookly-tbs h1{font-size:27px}#bookly-tbs .h2,#bookly-tbs h2{font-size:24px}#bookly-tbs .h3,#bookly-tbs h3{font-size:21px}#bookly-tbs .h4,#bookly-tbs h4{font-size:18px}#bookly-tbs .h5,#bookly-tbs h5{font-size:15px}#bookly-tbs .h6,#bookly-tbs h6{font-size:13px}#bookly-tbs p{margin:0 0 10.5px}#bookly-tbs .lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){#bookly-tbs .lead{font-size:22.5px}}#bookly-tbs .small,#bookly-tbs small{font-size:86%}#bookly-tbs .mark,#bookly-tbs mark{padding:.2em;background-color:#fcf8e3}#bookly-tbs .text-left{text-align:left}#bookly-tbs .text-right{text-align:right}#bookly-tbs .text-center{text-align:center}#bookly-tbs .text-justify{text-align:justify}#bookly-tbs .text-nowrap{white-space:nowrap}#bookly-tbs .text-lowercase{text-transform:lowercase}#bookly-tbs .text-uppercase{text-transform:uppercase}#bookly-tbs .text-capitalize{text-transform:capitalize}#bookly-tbs .text-muted{color:#d9dee4}#bookly-tbs .text-primary{color:#08c}#bookly-tbs a.text-primary:focus,#bookly-tbs a.text-primary:hover{color:#069}#bookly-tbs .text-success{color:#3c763d}#bookly-tbs a.text-success:focus,#bookly-tbs a.text-success:hover{color:#2b542c}#bookly-tbs .text-info{color:#31708f}#bookly-tbs a.text-info:focus,#bookly-tbs a.text-info:hover{color:#245269}#bookly-tbs .text-warning{color:#8a6d3b}#bookly-tbs a.text-warning:focus,#bookly-tbs a.text-warning:hover{color:#66512c}#bookly-tbs .text-danger{color:#a94442}#bookly-tbs a.text-danger:focus,#bookly-tbs a.text-danger:hover{color:#843534}#bookly-tbs .bg-primary{color:#fff;background-color:#08c}#bookly-tbs a.bg-primary:focus,#bookly-tbs a.bg-primary:hover{background-color:#069}#bookly-tbs .bg-success{background-color:#dff0d8}#bookly-tbs a.bg-success:focus,#bookly-tbs a.bg-success:hover{background-color:#c1e2b3}#bookly-tbs .bg-info{background-color:#d9edf7}#bookly-tbs a.bg-info:focus,#bookly-tbs a.bg-info:hover{background-color:#afd9ee}#bookly-tbs .bg-warning{background-color:#fcf8e3}#bookly-tbs a.bg-warning:focus,#bookly-tbs a.bg-warning:hover{background-color:#f7ecb5}#bookly-tbs .bg-danger{background-color:#f2dede}#bookly-tbs a.bg-danger:focus,#bookly-tbs a.bg-danger:hover{background-color:#e4b9b9}#bookly-tbs .page-header{padding-bottom:9.5px;margin:42px 0 10.5px;border-bottom:1px solid transparent}#bookly-tbs ol,#bookly-tbs ul{margin-top:0;margin-bottom:10.5px}#bookly-tbs ol ol,#bookly-tbs ol ul,#bookly-tbs ul ol,#bookly-tbs ul ul{margin-bottom:0}#bookly-tbs .list-unstyled{padding-left:0;list-style:none}#bookly-tbs .list-inline{padding-left:0;margin-left:-5px;list-style:none}#bookly-tbs .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}#bookly-tbs dl{margin-top:0;margin-bottom:21px}#bookly-tbs dd,#bookly-tbs dt{line-height:1.4}#bookly-tbs dt{font-weight:700}#bookly-tbs dd{margin-left:0}@media (min-width:768px){#bookly-tbs .dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .dl-horizontal dd{margin-left:180px}}#bookly-tbs abbr[data-original-title],#bookly-tbs abbr[title]{cursor:help;border-bottom:1px dotted #d9dee4}#bookly-tbs .initialism{font-size:90%;text-transform:uppercase}#bookly-tbs blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #e8ebf0}#bookly-tbs blockquote ol:last-child,#bookly-tbs blockquote p:last-child,#bookly-tbs blockquote ul:last-child{margin-bottom:0}#bookly-tbs blockquote .small,#bookly-tbs blockquote footer,#bookly-tbs blockquote small{display:block;font-size:80%;line-height:1.4;color:#d9dee4}#bookly-tbs blockquote .small:before,#bookly-tbs blockquote footer:before,#bookly-tbs blockquote small:before{content:'\2014 \00A0'}#bookly-tbs .blockquote-reverse,#bookly-tbs blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #e8ebf0;border-left:0}#bookly-tbs .blockquote-reverse .small:before,#bookly-tbs .blockquote-reverse footer:before,#bookly-tbs .blockquote-reverse small:before,#bookly-tbs blockquote.pull-right .small:before,#bookly-tbs blockquote.pull-right footer:before,#bookly-tbs blockquote.pull-right small:before{content:''}#bookly-tbs .blockquote-reverse .small:after,#bookly-tbs .blockquote-reverse footer:after,#bookly-tbs .blockquote-reverse small:after,#bookly-tbs blockquote.pull-right .small:after,#bookly-tbs blockquote.pull-right footer:after,#bookly-tbs blockquote.pull-right small:after{content:'\00A0 \2014'}#bookly-tbs address{margin-bottom:21px;font-style:normal;line-height:1.4}#bookly-tbs code,#bookly-tbs kbd,#bookly-tbs pre,#bookly-tbs samp{font-family:menlo,monaco,consolas,"courier new",monospace}#bookly-tbs code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}#bookly-tbs kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}#bookly-tbs kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.4;color:#5b6470;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}#bookly-tbs pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}#bookly-tbs .pre-scrollable{max-height:340px;overflow-y:scroll}#bookly-tbs .container{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}@media (min-width:768px){#bookly-tbs .container{width:740px}}@media (min-width:992px){#bookly-tbs .container{width:960px}}@media (min-width:1200px){#bookly-tbs .container{width:1160px}}#bookly-tbs .container-fluid{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}#bookly-tbs .row{margin-right:-10px;margin-left:-10px}#bookly-tbs .col-lg-1,#bookly-tbs .col-lg-10,#bookly-tbs .col-lg-11,#bookly-tbs .col-lg-12,#bookly-tbs .col-lg-2,#bookly-tbs .col-lg-3,#bookly-tbs .col-lg-4,#bookly-tbs .col-lg-5,#bookly-tbs .col-lg-6,#bookly-tbs .col-lg-7,#bookly-tbs .col-lg-8,#bookly-tbs .col-lg-9,#bookly-tbs .col-md-1,#bookly-tbs .col-md-10,#bookly-tbs .col-md-11,#bookly-tbs .col-md-12,#bookly-tbs .col-md-2,#bookly-tbs .col-md-3,#bookly-tbs .col-md-4,#bookly-tbs .col-md-5,#bookly-tbs .col-md-6,#bookly-tbs .col-md-7,#bookly-tbs .col-md-8,#bookly-tbs .col-md-9,#bookly-tbs .col-sm-1,#bookly-tbs .col-sm-10,#bookly-tbs .col-sm-11,#bookly-tbs .col-sm-12,#bookly-tbs .col-sm-2,#bookly-tbs .col-sm-3,#bookly-tbs .col-sm-4,#bookly-tbs .col-sm-5,#bookly-tbs .col-sm-6,#bookly-tbs .col-sm-7,#bookly-tbs .col-sm-8,#bookly-tbs .col-sm-9,#bookly-tbs .col-xs-1,#bookly-tbs .col-xs-10,#bookly-tbs .col-xs-11,#bookly-tbs .col-xs-12,#bookly-tbs .col-xs-2,#bookly-tbs .col-xs-3,#bookly-tbs .col-xs-4,#bookly-tbs .col-xs-5,#bookly-tbs .col-xs-6,#bookly-tbs .col-xs-7,#bookly-tbs .col-xs-8,#bookly-tbs .col-xs-9{position:relative;min-height:1px;padding-right:10px;padding-left:10px}#bookly-tbs .col-xs-1,#bookly-tbs .col-xs-10,#bookly-tbs .col-xs-11,#bookly-tbs .col-xs-12,#bookly-tbs .col-xs-2,#bookly-tbs .col-xs-3,#bookly-tbs .col-xs-4,#bookly-tbs .col-xs-5,#bookly-tbs .col-xs-6,#bookly-tbs .col-xs-7,#bookly-tbs .col-xs-8,#bookly-tbs .col-xs-9{float:left}#bookly-tbs .col-xs-12{width:100%}#bookly-tbs .col-xs-11{width:91.66666667%}#bookly-tbs .col-xs-10{width:83.33333333%}#bookly-tbs .col-xs-9{width:75%}#bookly-tbs .col-xs-8{width:66.66666667%}#bookly-tbs .col-xs-7{width:58.33333333%}#bookly-tbs .col-xs-6{width:50%}#bookly-tbs .col-xs-5{width:41.66666667%}#bookly-tbs .col-xs-4{width:33.33333333%}#bookly-tbs .col-xs-3{width:25%}#bookly-tbs .col-xs-2{width:16.66666667%}#bookly-tbs .col-xs-1{width:8.33333333%}#bookly-tbs .col-xs-pull-12{right:100%}#bookly-tbs .col-xs-pull-11{right:91.66666667%}#bookly-tbs .col-xs-pull-10{right:83.33333333%}#bookly-tbs .col-xs-pull-9{right:75%}#bookly-tbs .col-xs-pull-8{right:66.66666667%}#bookly-tbs .col-xs-pull-7{right:58.33333333%}#bookly-tbs .col-xs-pull-6{right:50%}#bookly-tbs .col-xs-pull-5{right:41.66666667%}#bookly-tbs .col-xs-pull-4{right:33.33333333%}#bookly-tbs .col-xs-pull-3{right:25%}#bookly-tbs .col-xs-pull-2{right:16.66666667%}#bookly-tbs .col-xs-pull-1{right:8.33333333%}#bookly-tbs .col-xs-pull-0{right:auto}#bookly-tbs .col-xs-push-12{left:100%}#bookly-tbs .col-xs-push-11{left:91.66666667%}#bookly-tbs .col-xs-push-10{left:83.33333333%}#bookly-tbs .col-xs-push-9{left:75%}#bookly-tbs .col-xs-push-8{left:66.66666667%}#bookly-tbs .col-xs-push-7{left:58.33333333%}#bookly-tbs .col-xs-push-6{left:50%}#bookly-tbs .col-xs-push-5{left:41.66666667%}#bookly-tbs .col-xs-push-4{left:33.33333333%}#bookly-tbs .col-xs-push-3{left:25%}#bookly-tbs .col-xs-push-2{left:16.66666667%}#bookly-tbs .col-xs-push-1{left:8.33333333%}#bookly-tbs .col-xs-push-0{left:auto}#bookly-tbs .col-xs-offset-12{margin-left:100%}#bookly-tbs .col-xs-offset-11{margin-left:91.66666667%}#bookly-tbs .col-xs-offset-10{margin-left:83.33333333%}#bookly-tbs .col-xs-offset-9{margin-left:75%}#bookly-tbs .col-xs-offset-8{margin-left:66.66666667%}#bookly-tbs .col-xs-offset-7{margin-left:58.33333333%}#bookly-tbs .col-xs-offset-6{margin-left:50%}#bookly-tbs .col-xs-offset-5{margin-left:41.66666667%}#bookly-tbs .col-xs-offset-4{margin-left:33.33333333%}#bookly-tbs .col-xs-offset-3{margin-left:25%}#bookly-tbs .col-xs-offset-2{margin-left:16.66666667%}#bookly-tbs .col-xs-offset-1{margin-left:8.33333333%}#bookly-tbs .col-xs-offset-0{margin-left:0}@media (min-width:768px){#bookly-tbs .col-sm-1,#bookly-tbs .col-sm-10,#bookly-tbs .col-sm-11,#bookly-tbs .col-sm-12,#bookly-tbs .col-sm-2,#bookly-tbs .col-sm-3,#bookly-tbs .col-sm-4,#bookly-tbs .col-sm-5,#bookly-tbs .col-sm-6,#bookly-tbs .col-sm-7,#bookly-tbs .col-sm-8,#bookly-tbs .col-sm-9{float:left}#bookly-tbs .col-sm-12{width:100%}#bookly-tbs .col-sm-11{width:91.66666667%}#bookly-tbs .col-sm-10{width:83.33333333%}#bookly-tbs .col-sm-9{width:75%}#bookly-tbs .col-sm-8{width:66.66666667%}#bookly-tbs .col-sm-7{width:58.33333333%}#bookly-tbs .col-sm-6{width:50%}#bookly-tbs .col-sm-5{width:41.66666667%}#bookly-tbs .col-sm-4{width:33.33333333%}#bookly-tbs .col-sm-3{width:25%}#bookly-tbs .col-sm-2{width:16.66666667%}#bookly-tbs .col-sm-1{width:8.33333333%}#bookly-tbs .col-sm-pull-12{right:100%}#bookly-tbs .col-sm-pull-11{right:91.66666667%}#bookly-tbs .col-sm-pull-10{right:83.33333333%}#bookly-tbs .col-sm-pull-9{right:75%}#bookly-tbs .col-sm-pull-8{right:66.66666667%}#bookly-tbs .col-sm-pull-7{right:58.33333333%}#bookly-tbs .col-sm-pull-6{right:50%}#bookly-tbs .col-sm-pull-5{right:41.66666667%}#bookly-tbs .col-sm-pull-4{right:33.33333333%}#bookly-tbs .col-sm-pull-3{right:25%}#bookly-tbs .col-sm-pull-2{right:16.66666667%}#bookly-tbs .col-sm-pull-1{right:8.33333333%}#bookly-tbs .col-sm-pull-0{right:auto}#bookly-tbs .col-sm-push-12{left:100%}#bookly-tbs .col-sm-push-11{left:91.66666667%}#bookly-tbs .col-sm-push-10{left:83.33333333%}#bookly-tbs .col-sm-push-9{left:75%}#bookly-tbs .col-sm-push-8{left:66.66666667%}#bookly-tbs .col-sm-push-7{left:58.33333333%}#bookly-tbs .col-sm-push-6{left:50%}#bookly-tbs .col-sm-push-5{left:41.66666667%}#bookly-tbs .col-sm-push-4{left:33.33333333%}#bookly-tbs .col-sm-push-3{left:25%}#bookly-tbs .col-sm-push-2{left:16.66666667%}#bookly-tbs .col-sm-push-1{left:8.33333333%}#bookly-tbs .col-sm-push-0{left:auto}#bookly-tbs .col-sm-offset-12{margin-left:100%}#bookly-tbs .col-sm-offset-11{margin-left:91.66666667%}#bookly-tbs .col-sm-offset-10{margin-left:83.33333333%}#bookly-tbs .col-sm-offset-9{margin-left:75%}#bookly-tbs .col-sm-offset-8{margin-left:66.66666667%}#bookly-tbs .col-sm-offset-7{margin-left:58.33333333%}#bookly-tbs .col-sm-offset-6{margin-left:50%}#bookly-tbs .col-sm-offset-5{margin-left:41.66666667%}#bookly-tbs .col-sm-offset-4{margin-left:33.33333333%}#bookly-tbs .col-sm-offset-3{margin-left:25%}#bookly-tbs .col-sm-offset-2{margin-left:16.66666667%}#bookly-tbs .col-sm-offset-1{margin-left:8.33333333%}#bookly-tbs .col-sm-offset-0{margin-left:0}}@media (min-width:992px){#bookly-tbs .col-md-1,#bookly-tbs .col-md-10,#bookly-tbs .col-md-11,#bookly-tbs .col-md-12,#bookly-tbs .col-md-2,#bookly-tbs .col-md-3,#bookly-tbs .col-md-4,#bookly-tbs .col-md-5,#bookly-tbs .col-md-6,#bookly-tbs .col-md-7,#bookly-tbs .col-md-8,#bookly-tbs .col-md-9{float:left}#bookly-tbs .col-md-12{width:100%}#bookly-tbs .col-md-11{width:91.66666667%}#bookly-tbs .col-md-10{width:83.33333333%}#bookly-tbs .col-md-9{width:75%}#bookly-tbs .col-md-8{width:66.66666667%}#bookly-tbs .col-md-7{width:58.33333333%}#bookly-tbs .col-md-6{width:50%}#bookly-tbs .col-md-5{width:41.66666667%}#bookly-tbs .col-md-4{width:33.33333333%}#bookly-tbs .col-md-3{width:25%}#bookly-tbs .col-md-2{width:16.66666667%}#bookly-tbs .col-md-1{width:8.33333333%}#bookly-tbs .col-md-pull-12{right:100%}#bookly-tbs .col-md-pull-11{right:91.66666667%}#bookly-tbs .col-md-pull-10{right:83.33333333%}#bookly-tbs .col-md-pull-9{right:75%}#bookly-tbs .col-md-pull-8{right:66.66666667%}#bookly-tbs .col-md-pull-7{right:58.33333333%}#bookly-tbs .col-md-pull-6{right:50%}#bookly-tbs .col-md-pull-5{right:41.66666667%}#bookly-tbs .col-md-pull-4{right:33.33333333%}#bookly-tbs .col-md-pull-3{right:25%}#bookly-tbs .col-md-pull-2{right:16.66666667%}#bookly-tbs .col-md-pull-1{right:8.33333333%}#bookly-tbs .col-md-pull-0{right:auto}#bookly-tbs .col-md-push-12{left:100%}#bookly-tbs .col-md-push-11{left:91.66666667%}#bookly-tbs .col-md-push-10{left:83.33333333%}#bookly-tbs .col-md-push-9{left:75%}#bookly-tbs .col-md-push-8{left:66.66666667%}#bookly-tbs .col-md-push-7{left:58.33333333%}#bookly-tbs .col-md-push-6{left:50%}#bookly-tbs .col-md-push-5{left:41.66666667%}#bookly-tbs .col-md-push-4{left:33.33333333%}#bookly-tbs .col-md-push-3{left:25%}#bookly-tbs .col-md-push-2{left:16.66666667%}#bookly-tbs .col-md-push-1{left:8.33333333%}#bookly-tbs .col-md-push-0{left:auto}#bookly-tbs .col-md-offset-12{margin-left:100%}#bookly-tbs .col-md-offset-11{margin-left:91.66666667%}#bookly-tbs .col-md-offset-10{margin-left:83.33333333%}#bookly-tbs .col-md-offset-9{margin-left:75%}#bookly-tbs .col-md-offset-8{margin-left:66.66666667%}#bookly-tbs .col-md-offset-7{margin-left:58.33333333%}#bookly-tbs .col-md-offset-6{margin-left:50%}#bookly-tbs .col-md-offset-5{margin-left:41.66666667%}#bookly-tbs .col-md-offset-4{margin-left:33.33333333%}#bookly-tbs .col-md-offset-3{margin-left:25%}#bookly-tbs .col-md-offset-2{margin-left:16.66666667%}#bookly-tbs .col-md-offset-1{margin-left:8.33333333%}#bookly-tbs .col-md-offset-0{margin-left:0}}@media (min-width:1200px){#bookly-tbs .col-lg-1,#bookly-tbs .col-lg-10,#bookly-tbs .col-lg-11,#bookly-tbs .col-lg-12,#bookly-tbs .col-lg-2,#bookly-tbs .col-lg-3,#bookly-tbs .col-lg-4,#bookly-tbs .col-lg-5,#bookly-tbs .col-lg-6,#bookly-tbs .col-lg-7,#bookly-tbs .col-lg-8,#bookly-tbs .col-lg-9{float:left}#bookly-tbs .col-lg-12{width:100%}#bookly-tbs .col-lg-11{width:91.66666667%}#bookly-tbs .col-lg-10{width:83.33333333%}#bookly-tbs .col-lg-9{width:75%}#bookly-tbs .col-lg-8{width:66.66666667%}#bookly-tbs .col-lg-7{width:58.33333333%}#bookly-tbs .col-lg-6{width:50%}#bookly-tbs .col-lg-5{width:41.66666667%}#bookly-tbs .col-lg-4{width:33.33333333%}#bookly-tbs .col-lg-3{width:25%}#bookly-tbs .col-lg-2{width:16.66666667%}#bookly-tbs .col-lg-1{width:8.33333333%}#bookly-tbs .col-lg-pull-12{right:100%}#bookly-tbs .col-lg-pull-11{right:91.66666667%}#bookly-tbs .col-lg-pull-10{right:83.33333333%}#bookly-tbs .col-lg-pull-9{right:75%}#bookly-tbs .col-lg-pull-8{right:66.66666667%}#bookly-tbs .col-lg-pull-7{right:58.33333333%}#bookly-tbs .col-lg-pull-6{right:50%}#bookly-tbs .col-lg-pull-5{right:41.66666667%}#bookly-tbs .col-lg-pull-4{right:33.33333333%}#bookly-tbs .col-lg-pull-3{right:25%}#bookly-tbs .col-lg-pull-2{right:16.66666667%}#bookly-tbs .col-lg-pull-1{right:8.33333333%}#bookly-tbs .col-lg-pull-0{right:auto}#bookly-tbs .col-lg-push-12{left:100%}#bookly-tbs .col-lg-push-11{left:91.66666667%}#bookly-tbs .col-lg-push-10{left:83.33333333%}#bookly-tbs .col-lg-push-9{left:75%}#bookly-tbs .col-lg-push-8{left:66.66666667%}#bookly-tbs .col-lg-push-7{left:58.33333333%}#bookly-tbs .col-lg-push-6{left:50%}#bookly-tbs .col-lg-push-5{left:41.66666667%}#bookly-tbs .col-lg-push-4{left:33.33333333%}#bookly-tbs .col-lg-push-3{left:25%}#bookly-tbs .col-lg-push-2{left:16.66666667%}#bookly-tbs .col-lg-push-1{left:8.33333333%}#bookly-tbs .col-lg-push-0{left:auto}#bookly-tbs .col-lg-offset-12{margin-left:100%}#bookly-tbs .col-lg-offset-11{margin-left:91.66666667%}#bookly-tbs .col-lg-offset-10{margin-left:83.33333333%}#bookly-tbs .col-lg-offset-9{margin-left:75%}#bookly-tbs .col-lg-offset-8{margin-left:66.66666667%}#bookly-tbs .col-lg-offset-7{margin-left:58.33333333%}#bookly-tbs .col-lg-offset-6{margin-left:50%}#bookly-tbs .col-lg-offset-5{margin-left:41.66666667%}#bookly-tbs .col-lg-offset-4{margin-left:33.33333333%}#bookly-tbs .col-lg-offset-3{margin-left:25%}#bookly-tbs .col-lg-offset-2{margin-left:16.66666667%}#bookly-tbs .col-lg-offset-1{margin-left:8.33333333%}#bookly-tbs .col-lg-offset-0{margin-left:0}}#bookly-tbs table{background-color:transparent}#bookly-tbs caption{padding-top:8px;padding-bottom:8px;color:#d9dee4;text-align:left}#bookly-tbs th{text-align:left}#bookly-tbs .table{width:100%;max-width:100%;margin-bottom:21px}#bookly-tbs .table>tbody>tr>td,#bookly-tbs .table>tbody>tr>th,#bookly-tbs .table>tfoot>tr>td,#bookly-tbs .table>tfoot>tr>th,#bookly-tbs .table>thead>tr>td,#bookly-tbs .table>thead>tr>th{padding:8px;line-height:1.4;vertical-align:top;border-top:1px solid #d9dee4}#bookly-tbs .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #d9dee4}#bookly-tbs .table>caption+thead>tr:first-child>td,#bookly-tbs .table>caption+thead>tr:first-child>th,#bookly-tbs .table>colgroup+thead>tr:first-child>td,#bookly-tbs .table>colgroup+thead>tr:first-child>th,#bookly-tbs .table>thead:first-child>tr:first-child>td,#bookly-tbs .table>thead:first-child>tr:first-child>th{border-top:0}#bookly-tbs .table>tbody+tbody{border-top:2px solid #d9dee4}#bookly-tbs .table .table{background-color:transparent}#bookly-tbs .table-condensed>tbody>tr>td,#bookly-tbs .table-condensed>tbody>tr>th,#bookly-tbs .table-condensed>tfoot>tr>td,#bookly-tbs .table-condensed>tfoot>tr>th,#bookly-tbs .table-condensed>thead>tr>td,#bookly-tbs .table-condensed>thead>tr>th{padding:5px}#bookly-tbs .table-bordered{border:1px solid #d9dee4}#bookly-tbs .table-bordered>tbody>tr>td,#bookly-tbs .table-bordered>tbody>tr>th,#bookly-tbs .table-bordered>tfoot>tr>td,#bookly-tbs .table-bordered>tfoot>tr>th,#bookly-tbs .table-bordered>thead>tr>td,#bookly-tbs .table-bordered>thead>tr>th{border:1px solid #d9dee4}#bookly-tbs .table-bordered>thead>tr>td,#bookly-tbs .table-bordered>thead>tr>th{border-bottom-width:2px}#bookly-tbs .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}#bookly-tbs .table-hover>tbody>tr:hover{background-color:#f5f5f5}#bookly-tbs table col[class*=col-]{position:static;display:table-column;float:none}#bookly-tbs table td[class*=col-],#bookly-tbs table th[class*=col-]{position:static;display:table-cell;float:none}#bookly-tbs .table>tbody>tr.active>td,#bookly-tbs .table>tbody>tr.active>th,#bookly-tbs .table>tbody>tr>td.active,#bookly-tbs .table>tbody>tr>th.active,#bookly-tbs .table>tfoot>tr.active>td,#bookly-tbs .table>tfoot>tr.active>th,#bookly-tbs .table>tfoot>tr>td.active,#bookly-tbs .table>tfoot>tr>th.active,#bookly-tbs .table>thead>tr.active>td,#bookly-tbs .table>thead>tr.active>th,#bookly-tbs .table>thead>tr>td.active,#bookly-tbs .table>thead>tr>th.active{background-color:#f5f5f5}#bookly-tbs .table-hover>tbody>tr.active:hover>td,#bookly-tbs .table-hover>tbody>tr.active:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.active,#bookly-tbs .table-hover>tbody>tr>td.active:hover,#bookly-tbs .table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}#bookly-tbs .table>tbody>tr.success>td,#bookly-tbs .table>tbody>tr.success>th,#bookly-tbs .table>tbody>tr>td.success,#bookly-tbs .table>tbody>tr>th.success,#bookly-tbs .table>tfoot>tr.success>td,#bookly-tbs .table>tfoot>tr.success>th,#bookly-tbs .table>tfoot>tr>td.success,#bookly-tbs .table>tfoot>tr>th.success,#bookly-tbs .table>thead>tr.success>td,#bookly-tbs .table>thead>tr.success>th,#bookly-tbs .table>thead>tr>td.success,#bookly-tbs .table>thead>tr>th.success{background-color:#dff0d8}#bookly-tbs .table-hover>tbody>tr.success:hover>td,#bookly-tbs .table-hover>tbody>tr.success:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.success,#bookly-tbs .table-hover>tbody>tr>td.success:hover,#bookly-tbs .table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}#bookly-tbs .table>tbody>tr.info>td,#bookly-tbs .table>tbody>tr.info>th,#bookly-tbs .table>tbody>tr>td.info,#bookly-tbs .table>tbody>tr>th.info,#bookly-tbs .table>tfoot>tr.info>td,#bookly-tbs .table>tfoot>tr.info>th,#bookly-tbs .table>tfoot>tr>td.info,#bookly-tbs .table>tfoot>tr>th.info,#bookly-tbs .table>thead>tr.info>td,#bookly-tbs .table>thead>tr.info>th,#bookly-tbs .table>thead>tr>td.info,#bookly-tbs .table>thead>tr>th.info{background-color:#d9edf7}#bookly-tbs .table-hover>tbody>tr.info:hover>td,#bookly-tbs .table-hover>tbody>tr.info:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.info,#bookly-tbs .table-hover>tbody>tr>td.info:hover,#bookly-tbs .table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}#bookly-tbs .table>tbody>tr.warning>td,#bookly-tbs .table>tbody>tr.warning>th,#bookly-tbs .table>tbody>tr>td.warning,#bookly-tbs .table>tbody>tr>th.warning,#bookly-tbs .table>tfoot>tr.warning>td,#bookly-tbs .table>tfoot>tr.warning>th,#bookly-tbs .table>tfoot>tr>td.warning,#bookly-tbs .table>tfoot>tr>th.warning,#bookly-tbs .table>thead>tr.warning>td,#bookly-tbs .table>thead>tr.warning>th,#bookly-tbs .table>thead>tr>td.warning,#bookly-tbs .table>thead>tr>th.warning{background-color:#fcf8e3}#bookly-tbs .table-hover>tbody>tr.warning:hover>td,#bookly-tbs .table-hover>tbody>tr.warning:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.warning,#bookly-tbs .table-hover>tbody>tr>td.warning:hover,#bookly-tbs .table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}#bookly-tbs .table>tbody>tr.danger>td,#bookly-tbs .table>tbody>tr.danger>th,#bookly-tbs .table>tbody>tr>td.danger,#bookly-tbs .table>tbody>tr>th.danger,#bookly-tbs .table>tfoot>tr.danger>td,#bookly-tbs .table>tfoot>tr.danger>th,#bookly-tbs .table>tfoot>tr>td.danger,#bookly-tbs .table>tfoot>tr>th.danger,#bookly-tbs .table>thead>tr.danger>td,#bookly-tbs .table>thead>tr.danger>th,#bookly-tbs .table>thead>tr>td.danger,#bookly-tbs .table>thead>tr>th.danger{background-color:#f2dede}#bookly-tbs .table-hover>tbody>tr.danger:hover>td,#bookly-tbs .table-hover>tbody>tr.danger:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.danger,#bookly-tbs .table-hover>tbody>tr>td.danger:hover,#bookly-tbs .table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}#bookly-tbs .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){#bookly-tbs .table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #d9dee4}#bookly-tbs .table-responsive>.table{margin-bottom:0}#bookly-tbs .table-responsive>.table>tbody>tr>td,#bookly-tbs .table-responsive>.table>tbody>tr>th,#bookly-tbs .table-responsive>.table>tfoot>tr>td,#bookly-tbs .table-responsive>.table>tfoot>tr>th,#bookly-tbs .table-responsive>.table>thead>tr>td,#bookly-tbs .table-responsive>.table>thead>tr>th{white-space:nowrap}#bookly-tbs .table-responsive>.table-bordered{border:0}#bookly-tbs .table-responsive>.table-bordered>tbody>tr>td:first-child,#bookly-tbs .table-responsive>.table-bordered>tbody>tr>th:first-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>td:first-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>th:first-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>td:first-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}#bookly-tbs .table-responsive>.table-bordered>tbody>tr>td:last-child,#bookly-tbs .table-responsive>.table-bordered>tbody>tr>th:last-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>td:last-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>th:last-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>td:last-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}#bookly-tbs .table-responsive>.table-bordered>tbody>tr:last-child>td,#bookly-tbs .table-responsive>.table-bordered>tbody>tr:last-child>th,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr:last-child>td,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}#bookly-tbs fieldset{min-width:0;padding:0;margin:0;border:0}#bookly-tbs legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#5b6470;border:0;border-bottom:1px solid #e8ebf0}#bookly-tbs label{display:inline-block;max-width:100%;margin-bottom:7px;font-weight:700}#bookly-tbs input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bookly-tbs input[type=checkbox],#bookly-tbs input[type=radio]{margin:3px 0 0;margin-top:1px\9;line-height:normal}#bookly-tbs input[type=file]{display:block}#bookly-tbs input[type=range]{display:block;width:100%}#bookly-tbs select[multiple],#bookly-tbs select[size]{height:auto}#bookly-tbs input[type=file]:focus,#bookly-tbs input[type=checkbox]:focus,#bookly-tbs input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bookly-tbs output{display:block;padding-top:7px;font-size:15px;line-height:1.4;color:#3e424a}#bookly-tbs .form-control{display:block;width:100%;height:35px;padding:6px 12px;font-size:15px;line-height:1.4;color:#3e424a;background-color:#fff;background-image:none;border:1px solid #d9dee4;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0);box-shadow:inset 0 1px 1px rgba(0,0,0,0);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}#bookly-tbs .form-control:focus{border-color:#08c;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0),0 0 8px rgba(0,136,204,0);box-shadow:inset 0 1px 1px rgba(0,0,0,0),0 0 8px rgba(0,136,204,0)}#bookly-tbs .form-control::-moz-placeholder{color:#8a929e;opacity:1}#bookly-tbs .form-control:-ms-input-placeholder{color:#8a929e}#bookly-tbs .form-control::-webkit-input-placeholder{color:#8a929e}#bookly-tbs .form-control::-ms-expand{background-color:transparent;border:0}#bookly-tbs .form-control[disabled],#bookly-tbs .form-control[readonly],#bookly-tbs fieldset[disabled] .form-control{background-color:rgba(232,235,240,.7);opacity:1}#bookly-tbs .form-control[disabled],#bookly-tbs fieldset[disabled] .form-control{cursor:not-allowed}#bookly-tbs textarea.form-control{height:auto}#bookly-tbs input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){#bookly-tbs input[type=date].form-control,#bookly-tbs input[type=time].form-control,#bookly-tbs input[type=datetime-local].form-control,#bookly-tbs input[type=month].form-control{line-height:35px}#bookly-tbs .input-group-sm input[type=date],#bookly-tbs .input-group-sm input[type=time],#bookly-tbs .input-group-sm input[type=datetime-local],#bookly-tbs .input-group-sm input[type=month],#bookly-tbs input[type=date].input-sm,#bookly-tbs input[type=time].input-sm,#bookly-tbs input[type=datetime-local].input-sm,#bookly-tbs input[type=month].input-sm{line-height:32px}#bookly-tbs .input-group-lg input[type=date],#bookly-tbs .input-group-lg input[type=time],#bookly-tbs .input-group-lg input[type=datetime-local],#bookly-tbs .input-group-lg input[type=month],#bookly-tbs input[type=date].input-lg,#bookly-tbs input[type=time].input-lg,#bookly-tbs input[type=datetime-local].input-lg,#bookly-tbs input[type=month].input-lg{line-height:46px}}#bookly-tbs .form-group{margin-bottom:20px}#bookly-tbs .checkbox,#bookly-tbs .radio{position:relative;display:block;margin-top:6px;margin-bottom:7px}#bookly-tbs .checkbox label,#bookly-tbs .radio label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}#bookly-tbs .checkbox input[type=checkbox],#bookly-tbs .checkbox-inline input[type=checkbox],#bookly-tbs .radio input[type=radio],#bookly-tbs .radio-inline input[type=radio]{position:absolute;margin-top:3px\9;margin-left:-20px}#bookly-tbs .checkbox+.checkbox,#bookly-tbs .radio+.radio{margin-top:-5px}#bookly-tbs .checkbox-inline,#bookly-tbs .radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}#bookly-tbs .checkbox-inline+.checkbox-inline,#bookly-tbs .radio-inline+.radio-inline{margin-top:0;margin-left:10px}#bookly-tbs fieldset[disabled] input[type=checkbox],#bookly-tbs fieldset[disabled] input[type=radio],#bookly-tbs input[type=checkbox].disabled,#bookly-tbs input[type=checkbox][disabled],#bookly-tbs input[type=radio].disabled,#bookly-tbs input[type=radio][disabled]{cursor:not-allowed}#bookly-tbs .checkbox-inline.disabled,#bookly-tbs .radio-inline.disabled,#bookly-tbs fieldset[disabled] .checkbox-inline,#bookly-tbs fieldset[disabled] .radio-inline{cursor:not-allowed}#bookly-tbs .checkbox.disabled label,#bookly-tbs .radio.disabled label,#bookly-tbs fieldset[disabled] .checkbox label,#bookly-tbs fieldset[disabled] .radio label{cursor:not-allowed}#bookly-tbs .form-control-static{min-height:36px;padding-top:7px;padding-bottom:7px;margin-bottom:0}#bookly-tbs .form-control-static.input-lg,#bookly-tbs .form-control-static.input-sm{padding-right:0;padding-left:0}#bookly-tbs .input-sm{height:32px;padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs select.input-sm{height:32px;line-height:32px}#bookly-tbs select[multiple].input-sm,#bookly-tbs textarea.input-sm{height:auto}#bookly-tbs .form-group-sm .form-control{height:32px;padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs .form-group-sm select.form-control{height:32px;line-height:32px}#bookly-tbs .form-group-sm select[multiple].form-control,#bookly-tbs .form-group-sm textarea.form-control{height:auto}#bookly-tbs .form-group-sm .form-control-static{height:32px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.53846154}#bookly-tbs .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bookly-tbs select.input-lg{height:46px;line-height:46px}#bookly-tbs select[multiple].input-lg,#bookly-tbs textarea.input-lg{height:auto}#bookly-tbs .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bookly-tbs .form-group-lg select.form-control{height:46px;line-height:46px}#bookly-tbs .form-group-lg select[multiple].form-control,#bookly-tbs .form-group-lg textarea.form-control{height:auto}#bookly-tbs .form-group-lg .form-control-static{height:46px;min-height:39px;padding:11px 16px;font-size:18px;line-height:1.3333333}#bookly-tbs .has-feedback{position:relative}#bookly-tbs .has-feedback .form-control{padding-right:43.75px}#bookly-tbs .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:35px;height:35px;line-height:35px;text-align:center;pointer-events:none}#bookly-tbs .form-group-lg .form-control+.form-control-feedback,#bookly-tbs .input-group-lg+.form-control-feedback,#bookly-tbs .input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}#bookly-tbs .form-group-sm .form-control+.form-control-feedback,#bookly-tbs .input-group-sm+.form-control-feedback,#bookly-tbs .input-sm+.form-control-feedback{width:32px;height:32px;line-height:32px}#bookly-tbs .has-success .checkbox,#bookly-tbs .has-success .checkbox-inline,#bookly-tbs .has-success .control-label,#bookly-tbs .has-success .help-block,#bookly-tbs .has-success .radio,#bookly-tbs .has-success .radio-inline,#bookly-tbs .has-success.checkbox label,#bookly-tbs .has-success.checkbox-inline label,#bookly-tbs .has-success.radio label,#bookly-tbs .has-success.radio-inline label{color:#3c763d}#bookly-tbs .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bookly-tbs .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}#bookly-tbs .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}#bookly-tbs .has-success .form-control-feedback{color:#3c763d}#bookly-tbs .has-warning .checkbox,#bookly-tbs .has-warning .checkbox-inline,#bookly-tbs .has-warning .control-label,#bookly-tbs .has-warning .help-block,#bookly-tbs .has-warning .radio,#bookly-tbs .has-warning .radio-inline,#bookly-tbs .has-warning.checkbox label,#bookly-tbs .has-warning.checkbox-inline label,#bookly-tbs .has-warning.radio label,#bookly-tbs .has-warning.radio-inline label{color:#8a6d3b}#bookly-tbs .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bookly-tbs .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}#bookly-tbs .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}#bookly-tbs .has-warning .form-control-feedback{color:#8a6d3b}#bookly-tbs .has-error .checkbox,#bookly-tbs .has-error .checkbox-inline,#bookly-tbs .has-error .control-label,#bookly-tbs .has-error .help-block,#bookly-tbs .has-error .radio,#bookly-tbs .has-error .radio-inline,#bookly-tbs .has-error.checkbox label,#bookly-tbs .has-error.checkbox-inline label,#bookly-tbs .has-error.radio label,#bookly-tbs .has-error.radio-inline label{color:#a94442}#bookly-tbs .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bookly-tbs .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}#bookly-tbs .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}#bookly-tbs .has-error .form-control-feedback{color:#a94442}#bookly-tbs .has-feedback label~.form-control-feedback{top:26px}#bookly-tbs .has-feedback label.sr-only~.form-control-feedback{top:0}#bookly-tbs .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#8a929e}@media (min-width:768px){#bookly-tbs .form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bookly-tbs .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}#bookly-tbs .form-inline .form-control-static{display:inline-block}#bookly-tbs .form-inline .input-group{display:inline-table;vertical-align:middle}#bookly-tbs .form-inline .input-group .form-control,#bookly-tbs .form-inline .input-group .input-group-addon,#bookly-tbs .form-inline .input-group .input-group-btn{width:auto}#bookly-tbs .form-inline .input-group>.form-control{width:100%}#bookly-tbs .form-inline .control-label{margin-bottom:0;vertical-align:middle}#bookly-tbs .form-inline .checkbox,#bookly-tbs .form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bookly-tbs .form-inline .has-feedback .form-control-feedback{top:0}}#bookly-tbs .form-horizontal .checkbox,#bookly-tbs .form-horizontal .checkbox-inline,#bookly-tbs .form-horizontal .radio,#bookly-tbs .form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}#bookly-tbs .form-horizontal .checkbox,#bookly-tbs .form-horizontal .radio{min-height:28px}#bookly-tbs .form-horizontal .form-group{margin-right:-10px;margin-left:-10px}@media (min-width:768px){#bookly-tbs .form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}#bookly-tbs .form-horizontal .has-feedback .form-control-feedback{right:10px}@media (min-width:768px){#bookly-tbs .form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){#bookly-tbs .form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}#bookly-tbs .btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:15px;font-weight:400;line-height:1.4;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}#bookly-tbs .btn.active.focus,#bookly-tbs .btn.active:focus,#bookly-tbs .btn.focus,#bookly-tbs .btn:active.focus,#bookly-tbs .btn:active:focus,#bookly-tbs .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bookly-tbs .btn.focus,#bookly-tbs .btn:focus,#bookly-tbs .btn:hover{color:#3e424a;text-decoration:none}#bookly-tbs .btn.active,#bookly-tbs .btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bookly-tbs .btn.disabled,#bookly-tbs .btn[disabled],#bookly-tbs fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}#bookly-tbs a.btn.disabled,#bookly-tbs fieldset[disabled] a.btn{pointer-events:none}#bookly-tbs .btn-default{color:#3e424a;background-color:#fff;border-color:#d9dee4}#bookly-tbs .btn-default.focus,#bookly-tbs .btn-default:focus{color:#3e424a;background-color:#e6e6e6;border-color:#8e9daf}#bookly-tbs .btn-default:hover{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .btn-default.active,#bookly-tbs .btn-default:active,#bookly-tbs .open>.dropdown-toggle.btn-default{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .btn-default.active.focus,#bookly-tbs .btn-default.active:focus,#bookly-tbs .btn-default.active:hover,#bookly-tbs .btn-default:active.focus,#bookly-tbs .btn-default:active:focus,#bookly-tbs .btn-default:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-default.focus,#bookly-tbs .open>.dropdown-toggle.btn-default:focus,#bookly-tbs .open>.dropdown-toggle.btn-default:hover{color:#3e424a;background-color:#d4d4d4;border-color:#8e9daf}#bookly-tbs .btn-default.active,#bookly-tbs .btn-default:active,#bookly-tbs .open>.dropdown-toggle.btn-default{background-image:none}#bookly-tbs .btn-default.disabled.focus,#bookly-tbs .btn-default.disabled:focus,#bookly-tbs .btn-default.disabled:hover,#bookly-tbs .btn-default[disabled].focus,#bookly-tbs .btn-default[disabled]:focus,#bookly-tbs .btn-default[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-default.focus,#bookly-tbs fieldset[disabled] .btn-default:focus,#bookly-tbs fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#d9dee4}#bookly-tbs .btn-default .badge{color:#fff;background-color:#3e424a}#bookly-tbs .btn-primary{color:#fff;background-color:#08c;border-color:#08c}#bookly-tbs .btn-primary.focus,#bookly-tbs .btn-primary:focus{color:#fff;background-color:#069;border-color:#00334d}#bookly-tbs .btn-primary:hover{color:#fff;background-color:#069;border-color:#005f8f}#bookly-tbs .btn-primary.active,#bookly-tbs .btn-primary:active,#bookly-tbs .open>.dropdown-toggle.btn-primary{color:#fff;background-color:#069;border-color:#005f8f}#bookly-tbs .btn-primary.active.focus,#bookly-tbs .btn-primary.active:focus,#bookly-tbs .btn-primary.active:hover,#bookly-tbs .btn-primary:active.focus,#bookly-tbs .btn-primary:active:focus,#bookly-tbs .btn-primary:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-primary.focus,#bookly-tbs .open>.dropdown-toggle.btn-primary:focus,#bookly-tbs .open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#004e75;border-color:#00334d}#bookly-tbs .btn-primary.active,#bookly-tbs .btn-primary:active,#bookly-tbs .open>.dropdown-toggle.btn-primary{background-image:none}#bookly-tbs .btn-primary.disabled.focus,#bookly-tbs .btn-primary.disabled:focus,#bookly-tbs .btn-primary.disabled:hover,#bookly-tbs .btn-primary[disabled].focus,#bookly-tbs .btn-primary[disabled]:focus,#bookly-tbs .btn-primary[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-primary.focus,#bookly-tbs fieldset[disabled] .btn-primary:focus,#bookly-tbs fieldset[disabled] .btn-primary:hover{background-color:#08c;border-color:#08c}#bookly-tbs .btn-primary .badge{color:#08c;background-color:#fff}#bookly-tbs .btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}#bookly-tbs .btn-success.focus,#bookly-tbs .btn-success:focus{color:#fff;background-color:#449d44;border-color:#2d672d}#bookly-tbs .btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}#bookly-tbs .btn-success.active,#bookly-tbs .btn-success:active,#bookly-tbs .open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#419641}#bookly-tbs .btn-success.active.focus,#bookly-tbs .btn-success.active:focus,#bookly-tbs .btn-success.active:hover,#bookly-tbs .btn-success:active.focus,#bookly-tbs .btn-success:active:focus,#bookly-tbs .btn-success:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-success.focus,#bookly-tbs .open>.dropdown-toggle.btn-success:focus,#bookly-tbs .open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#2d672d}#bookly-tbs .btn-success.active,#bookly-tbs .btn-success:active,#bookly-tbs .open>.dropdown-toggle.btn-success{background-image:none}#bookly-tbs .btn-success.disabled.focus,#bookly-tbs .btn-success.disabled:focus,#bookly-tbs .btn-success.disabled:hover,#bookly-tbs .btn-success[disabled].focus,#bookly-tbs .btn-success[disabled]:focus,#bookly-tbs .btn-success[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-success.focus,#bookly-tbs fieldset[disabled] .btn-success:focus,#bookly-tbs fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#5cb85c}#bookly-tbs .btn-success .badge{color:#5cb85c;background-color:#fff}#bookly-tbs .btn-info{color:#fff;background-color:#5bc0de;border-color:#31b0d5}#bookly-tbs .btn-info.focus,#bookly-tbs .btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#175b70}#bookly-tbs .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2289a7}#bookly-tbs .btn-info.active,#bookly-tbs .btn-info:active,#bookly-tbs .open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#2289a7}#bookly-tbs .btn-info.active.focus,#bookly-tbs .btn-info.active:focus,#bookly-tbs .btn-info.active:hover,#bookly-tbs .btn-info:active.focus,#bookly-tbs .btn-info:active:focus,#bookly-tbs .btn-info:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-info.focus,#bookly-tbs .open>.dropdown-toggle.btn-info:focus,#bookly-tbs .open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#175b70}#bookly-tbs .btn-info.active,#bookly-tbs .btn-info:active,#bookly-tbs .open>.dropdown-toggle.btn-info{background-image:none}#bookly-tbs .btn-info.disabled.focus,#bookly-tbs .btn-info.disabled:focus,#bookly-tbs .btn-info.disabled:hover,#bookly-tbs .btn-info[disabled].focus,#bookly-tbs .btn-info[disabled]:focus,#bookly-tbs .btn-info[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-info.focus,#bookly-tbs fieldset[disabled] .btn-info:focus,#bookly-tbs fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#31b0d5}#bookly-tbs .btn-info .badge{color:#5bc0de;background-color:#fff}#bookly-tbs .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}#bookly-tbs .btn-warning.focus,#bookly-tbs .btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#b06d0f}#bookly-tbs .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}#bookly-tbs .btn-warning.active,#bookly-tbs .btn-warning:active,#bookly-tbs .open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#eb9316}#bookly-tbs .btn-warning.active.focus,#bookly-tbs .btn-warning.active:focus,#bookly-tbs .btn-warning.active:hover,#bookly-tbs .btn-warning:active.focus,#bookly-tbs .btn-warning:active:focus,#bookly-tbs .btn-warning:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-warning.focus,#bookly-tbs .open>.dropdown-toggle.btn-warning:focus,#bookly-tbs .open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#b06d0f}#bookly-tbs .btn-warning.active,#bookly-tbs .btn-warning:active,#bookly-tbs .open>.dropdown-toggle.btn-warning{background-image:none}#bookly-tbs .btn-warning.disabled.focus,#bookly-tbs .btn-warning.disabled:focus,#bookly-tbs .btn-warning.disabled:hover,#bookly-tbs .btn-warning[disabled].focus,#bookly-tbs .btn-warning[disabled]:focus,#bookly-tbs .btn-warning[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-warning.focus,#bookly-tbs fieldset[disabled] .btn-warning:focus,#bookly-tbs fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#f0ad4e}#bookly-tbs .btn-warning .badge{color:#f0ad4e;background-color:#fff}#bookly-tbs .btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}#bookly-tbs .btn-danger.focus,#bookly-tbs .btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#8b211e}#bookly-tbs .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}#bookly-tbs .btn-danger.active,#bookly-tbs .btn-danger:active,#bookly-tbs .open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#c12e2a}#bookly-tbs .btn-danger.active.focus,#bookly-tbs .btn-danger.active:focus,#bookly-tbs .btn-danger.active:hover,#bookly-tbs .btn-danger:active.focus,#bookly-tbs .btn-danger:active:focus,#bookly-tbs .btn-danger:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-danger.focus,#bookly-tbs .open>.dropdown-toggle.btn-danger:focus,#bookly-tbs .open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#8b211e}#bookly-tbs .btn-danger.active,#bookly-tbs .btn-danger:active,#bookly-tbs .open>.dropdown-toggle.btn-danger{background-image:none}#bookly-tbs .btn-danger.disabled.focus,#bookly-tbs .btn-danger.disabled:focus,#bookly-tbs .btn-danger.disabled:hover,#bookly-tbs .btn-danger[disabled].focus,#bookly-tbs .btn-danger[disabled]:focus,#bookly-tbs .btn-danger[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-danger.focus,#bookly-tbs fieldset[disabled] .btn-danger:focus,#bookly-tbs fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d9534f}#bookly-tbs .btn-danger .badge{color:#d9534f;background-color:#fff}#bookly-tbs .btn-link{font-weight:400;color:#08c;border-radius:0}#bookly-tbs .btn-link,#bookly-tbs .btn-link.active,#bookly-tbs .btn-link:active,#bookly-tbs .btn-link[disabled],#bookly-tbs fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .btn-link,#bookly-tbs .btn-link:active,#bookly-tbs .btn-link:focus,#bookly-tbs .btn-link:hover{border-color:transparent}#bookly-tbs .btn-link:focus,#bookly-tbs .btn-link:hover{color:#005580;text-decoration:none;background-color:transparent}#bookly-tbs .btn-link[disabled]:focus,#bookly-tbs .btn-link[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-link:focus,#bookly-tbs fieldset[disabled] .btn-link:hover{color:#8a929e;text-decoration:none}#bookly-tbs .btn-group-lg>.btn,#bookly-tbs .btn-lg{padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:4px}#bookly-tbs .btn-group-sm>.btn,#bookly-tbs .btn-sm{padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs .btn-group-xs>.btn,#bookly-tbs .btn-xs{padding:1px 5px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs .btn-block{display:block;width:100%}#bookly-tbs .btn-block+.btn-block{margin-top:5px}#bookly-tbs input[type=button].btn-block,#bookly-tbs input[type=reset].btn-block,#bookly-tbs input[type=submit].btn-block{width:100%}#bookly-tbs .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}#bookly-tbs .fade.in{opacity:1}#bookly-tbs .collapse{display:none}#bookly-tbs .collapse.in{display:block}#bookly-tbs tr.collapse.in{display:table-row}#bookly-tbs tbody.collapse.in{display:table-row-group}#bookly-tbs .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}#bookly-tbs .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:5px dashed;border-top:5px solid\9;border-right:5px solid transparent;border-left:5px solid transparent}#bookly-tbs .dropdown,#bookly-tbs .dropup{position:relative}#bookly-tbs .dropdown-toggle:focus{outline:0}#bookly-tbs .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:15px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}#bookly-tbs .dropdown-menu.pull-right{right:0;left:auto}#bookly-tbs .dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}#bookly-tbs .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4;color:#5b6470;white-space:nowrap}#bookly-tbs .dropdown-menu>li>a:focus,#bookly-tbs .dropdown-menu>li>a:hover{color:#505762;text-decoration:none;background-color:#f5f5f5}#bookly-tbs .dropdown-menu>.active>a,#bookly-tbs .dropdown-menu>.active>a:focus,#bookly-tbs .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#08c;outline:0}#bookly-tbs .dropdown-menu>.disabled>a,#bookly-tbs .dropdown-menu>.disabled>a:focus,#bookly-tbs .dropdown-menu>.disabled>a:hover{color:#d9dee4}#bookly-tbs .dropdown-menu>.disabled>a:focus,#bookly-tbs .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}#bookly-tbs .open>.dropdown-menu{display:block}#bookly-tbs .open>a{outline:0}#bookly-tbs .dropdown-menu-right{right:0;left:auto}#bookly-tbs .dropdown-menu-left{right:auto;left:0}#bookly-tbs .dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.4;color:#d9dee4;white-space:nowrap}#bookly-tbs .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}#bookly-tbs .pull-right>.dropdown-menu{right:0;left:auto}#bookly-tbs .dropup .caret,#bookly-tbs .navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:5px dashed;border-bottom:5px solid\9}#bookly-tbs .dropup .dropdown-menu,#bookly-tbs .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){#bookly-tbs .navbar-right .dropdown-menu{right:0;left:auto}#bookly-tbs .navbar-right .dropdown-menu-left{right:auto;left:0}}#bookly-tbs .btn-group,#bookly-tbs .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}#bookly-tbs .btn-group-vertical>.btn,#bookly-tbs .btn-group>.btn{position:relative;float:left}#bookly-tbs .btn-group-vertical>.btn.active,#bookly-tbs .btn-group-vertical>.btn:active,#bookly-tbs .btn-group-vertical>.btn:focus,#bookly-tbs .btn-group-vertical>.btn:hover,#bookly-tbs .btn-group>.btn.active,#bookly-tbs .btn-group>.btn:active,#bookly-tbs .btn-group>.btn:focus,#bookly-tbs .btn-group>.btn:hover{z-index:2}#bookly-tbs .btn-group .btn+.btn,#bookly-tbs .btn-group .btn+.btn-group,#bookly-tbs .btn-group .btn-group+.btn,#bookly-tbs .btn-group .btn-group+.btn-group{margin-left:-1px}#bookly-tbs .btn-toolbar{margin-left:-5px}#bookly-tbs .btn-toolbar .btn,#bookly-tbs .btn-toolbar .btn-group,#bookly-tbs .btn-toolbar .input-group{float:left}#bookly-tbs .btn-toolbar>.btn,#bookly-tbs .btn-toolbar>.btn-group,#bookly-tbs .btn-toolbar>.input-group{margin-left:5px}#bookly-tbs .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}#bookly-tbs .btn-group>.btn:first-child{margin-left:0}#bookly-tbs .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .btn-group>.btn:last-child:not(:first-child),#bookly-tbs .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group>.btn-group{float:left}#bookly-tbs .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bookly-tbs .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,#bookly-tbs .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group .dropdown-toggle:active,#bookly-tbs .btn-group.open .dropdown-toggle{outline:0}#bookly-tbs .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}#bookly-tbs .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}#bookly-tbs .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bookly-tbs .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .btn .caret{margin-left:0}#bookly-tbs .btn-lg .caret{border-width:6px 6px 0;border-bottom-width:0}#bookly-tbs .dropup .btn-lg .caret{border-width:0 6px 6px}#bookly-tbs .btn-group-vertical>.btn,#bookly-tbs .btn-group-vertical>.btn-group,#bookly-tbs .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}#bookly-tbs .btn-group-vertical>.btn-group>.btn{float:none}#bookly-tbs .btn-group-vertical>.btn+.btn,#bookly-tbs .btn-group-vertical>.btn+.btn-group,#bookly-tbs .btn-group-vertical>.btn-group+.btn,#bookly-tbs .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}#bookly-tbs .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}#bookly-tbs .btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bookly-tbs .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bookly-tbs .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,#bookly-tbs .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}#bookly-tbs .btn-group-justified>.btn,#bookly-tbs .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}#bookly-tbs .btn-group-justified>.btn-group .btn{width:100%}#bookly-tbs .btn-group-justified>.btn-group .dropdown-menu{left:auto}#bookly-tbs [data-toggle=buttons]>.btn input[type=checkbox],#bookly-tbs [data-toggle=buttons]>.btn input[type=radio],#bookly-tbs [data-toggle=buttons]>.btn-group>.btn input[type=checkbox],#bookly-tbs [data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}#bookly-tbs .input-group{position:relative;display:table;border-collapse:separate}#bookly-tbs .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}#bookly-tbs .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}#bookly-tbs .input-group .form-control:focus{z-index:3}#bookly-tbs .input-group-lg>.form-control,#bookly-tbs .input-group-lg>.input-group-addon,#bookly-tbs .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bookly-tbs select.input-group-lg>.form-control,#bookly-tbs select.input-group-lg>.input-group-addon,#bookly-tbs select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}#bookly-tbs select[multiple].input-group-lg>.form-control,#bookly-tbs select[multiple].input-group-lg>.input-group-addon,#bookly-tbs select[multiple].input-group-lg>.input-group-btn>.btn,#bookly-tbs textarea.input-group-lg>.form-control,#bookly-tbs textarea.input-group-lg>.input-group-addon,#bookly-tbs textarea.input-group-lg>.input-group-btn>.btn{height:auto}#bookly-tbs .input-group-sm>.form-control,#bookly-tbs .input-group-sm>.input-group-addon,#bookly-tbs .input-group-sm>.input-group-btn>.btn{height:32px;padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs select.input-group-sm>.form-control,#bookly-tbs select.input-group-sm>.input-group-addon,#bookly-tbs select.input-group-sm>.input-group-btn>.btn{height:32px;line-height:32px}#bookly-tbs select[multiple].input-group-sm>.form-control,#bookly-tbs select[multiple].input-group-sm>.input-group-addon,#bookly-tbs select[multiple].input-group-sm>.input-group-btn>.btn,#bookly-tbs textarea.input-group-sm>.form-control,#bookly-tbs textarea.input-group-sm>.input-group-addon,#bookly-tbs textarea.input-group-sm>.input-group-btn>.btn{height:auto}#bookly-tbs .input-group .form-control,#bookly-tbs .input-group-addon,#bookly-tbs .input-group-btn{display:table-cell}#bookly-tbs .input-group .form-control:not(:first-child):not(:last-child),#bookly-tbs .input-group-addon:not(:first-child):not(:last-child),#bookly-tbs .input-group-btn:not(:first-child):not(:last-child){border-radius:0}#bookly-tbs .input-group-addon,#bookly-tbs .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}#bookly-tbs .input-group-addon{padding:6px 12px;font-size:15px;font-weight:400;line-height:1;color:#3e424a;text-align:center;background-color:#e8ebf0;border:1px solid #d9dee4;border-radius:4px}#bookly-tbs .input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:3px}#bookly-tbs .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}#bookly-tbs .input-group-addon input[type=checkbox],#bookly-tbs .input-group-addon input[type=radio]{margin-top:0}#bookly-tbs .input-group .form-control:first-child,#bookly-tbs .input-group-addon:first-child,#bookly-tbs .input-group-btn:first-child>.btn,#bookly-tbs .input-group-btn:first-child>.btn-group>.btn,#bookly-tbs .input-group-btn:first-child>.dropdown-toggle,#bookly-tbs .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,#bookly-tbs .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .input-group-addon:first-child{border-right:0}#bookly-tbs .input-group .form-control:last-child,#bookly-tbs .input-group-addon:last-child,#bookly-tbs .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,#bookly-tbs .input-group-btn:first-child>.btn:not(:first-child),#bookly-tbs .input-group-btn:last-child>.btn,#bookly-tbs .input-group-btn:last-child>.btn-group>.btn,#bookly-tbs .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .input-group-addon:last-child{border-left:0}#bookly-tbs .input-group-btn{position:relative;font-size:0;white-space:nowrap}#bookly-tbs .input-group-btn>.btn{position:relative}#bookly-tbs .input-group-btn>.btn+.btn{margin-left:-1px}#bookly-tbs .input-group-btn>.btn:active,#bookly-tbs .input-group-btn>.btn:focus,#bookly-tbs .input-group-btn>.btn:hover{z-index:2}#bookly-tbs .input-group-btn:first-child>.btn,#bookly-tbs .input-group-btn:first-child>.btn-group{margin-right:-1px}#bookly-tbs .input-group-btn:last-child>.btn,#bookly-tbs .input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}#bookly-tbs .nav{padding-left:0;margin-bottom:0;list-style:none}#bookly-tbs .nav>li{position:relative;display:block}#bookly-tbs .nav>li>a{position:relative;display:block;padding:10px 15px}#bookly-tbs .nav>li>a:focus,#bookly-tbs .nav>li>a:hover{text-decoration:none;background-color:#e8ebf0}#bookly-tbs .nav>li.disabled>a{color:#d9dee4}#bookly-tbs .nav>li.disabled>a:focus,#bookly-tbs .nav>li.disabled>a:hover{color:#d9dee4;text-decoration:none;cursor:not-allowed;background-color:transparent}#bookly-tbs .nav .open>a,#bookly-tbs .nav .open>a:focus,#bookly-tbs .nav .open>a:hover{background-color:#e8ebf0;border-color:#08c}#bookly-tbs .nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}#bookly-tbs .nav>li>a>img{max-width:none}#bookly-tbs .nav-tabs{border-bottom:1px solid #d9dee4}#bookly-tbs .nav-tabs>li{float:left;margin-bottom:-1px}#bookly-tbs .nav-tabs>li>a{margin-right:2px;line-height:1.4;border:1px solid transparent;border-radius:4px 4px 0 0}#bookly-tbs .nav-tabs>li>a:hover{border-color:#e8ebf0 #e8ebf0 #d9dee4}#bookly-tbs .nav-tabs>li.active>a,#bookly-tbs .nav-tabs>li.active>a:focus,#bookly-tbs .nav-tabs>li.active>a:hover{color:#8a929e;cursor:default;background-color:transparent;border:1px solid transparent;border-bottom-color:transparent}#bookly-tbs .nav-tabs.nav-justified{width:100%;border-bottom:0}#bookly-tbs .nav-tabs.nav-justified>li{float:none}#bookly-tbs .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}#bookly-tbs .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:1px){#bookly-tbs .nav-tabs.nav-justified>li{display:table-cell;width:1%}#bookly-tbs .nav-tabs.nav-justified>li>a{margin-bottom:0}}#bookly-tbs .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}#bookly-tbs .nav-tabs.nav-justified>.active>a,#bookly-tbs .nav-tabs.nav-justified>.active>a:focus,#bookly-tbs .nav-tabs.nav-justified>.active>a:hover{border:1px solid #08c}@media (min-width:768px){#bookly-tbs .nav-tabs.nav-justified>li>a{border-bottom:1px solid #d9dee4;border-radius:4px 4px 0 0}#bookly-tbs .nav-tabs.nav-justified>.active>a,#bookly-tbs .nav-tabs.nav-justified>.active>a:focus,#bookly-tbs .nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#08c}}#bookly-tbs .nav-pills>li{float:left}#bookly-tbs .nav-pills>li>a{border-radius:4px}#bookly-tbs .nav-pills>li+li{margin-left:2px}#bookly-tbs .nav-pills>li.active>a,#bookly-tbs .nav-pills>li.active>a:focus,#bookly-tbs .nav-pills>li.active>a:hover{color:#fff;background-color:#08c}#bookly-tbs .nav-stacked>li{float:none}#bookly-tbs .nav-stacked>li+li{margin-top:2px;margin-left:0}#bookly-tbs .nav-justified{width:100%}#bookly-tbs .nav-justified>li{float:none}#bookly-tbs .nav-justified>li>a{margin-bottom:5px;text-align:center}#bookly-tbs .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:1px){#bookly-tbs .nav-justified>li{display:table-cell;width:1%}#bookly-tbs .nav-justified>li>a{margin-bottom:0}}#bookly-tbs .nav-tabs-justified{border-bottom:0}#bookly-tbs .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}#bookly-tbs .nav-tabs-justified>.active>a,#bookly-tbs .nav-tabs-justified>.active>a:focus,#bookly-tbs .nav-tabs-justified>.active>a:hover{border:1px solid #08c}@media (min-width:768px){#bookly-tbs .nav-tabs-justified>li>a{border-bottom:1px solid #d9dee4;border-radius:4px 4px 0 0}#bookly-tbs .nav-tabs-justified>.active>a,#bookly-tbs .nav-tabs-justified>.active>a:focus,#bookly-tbs .nav-tabs-justified>.active>a:hover{border-bottom-color:#08c}}#bookly-tbs .tab-content>.tab-pane{display:none}#bookly-tbs .tab-content>.active{display:block}#bookly-tbs .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .navbar{position:relative;min-height:50px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){#bookly-tbs .navbar{border-radius:4px}}@media (min-width:768px){#bookly-tbs .navbar-header{float:left}}#bookly-tbs .navbar-collapse{padding-right:10px;padding-left:10px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}#bookly-tbs .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){#bookly-tbs .navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}#bookly-tbs .navbar-collapse.in{overflow-y:visible}#bookly-tbs .navbar-fixed-bottom .navbar-collapse,#bookly-tbs .navbar-fixed-top .navbar-collapse,#bookly-tbs .navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}#bookly-tbs .navbar-fixed-bottom .navbar-collapse,#bookly-tbs .navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){#bookly-tbs .navbar-fixed-bottom .navbar-collapse,#bookly-tbs .navbar-fixed-top .navbar-collapse{max-height:200px}}#bookly-tbs .container-fluid>.navbar-collapse,#bookly-tbs .container-fluid>.navbar-header,#bookly-tbs .container>.navbar-collapse,#bookly-tbs .container>.navbar-header{margin-right:-10px;margin-left:-10px}@media (min-width:768px){#bookly-tbs .container-fluid>.navbar-collapse,#bookly-tbs .container-fluid>.navbar-header,#bookly-tbs .container>.navbar-collapse,#bookly-tbs .container>.navbar-header{margin-right:0;margin-left:0}}#bookly-tbs .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){#bookly-tbs .navbar-static-top{border-radius:0}}#bookly-tbs .navbar-fixed-bottom,#bookly-tbs .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){#bookly-tbs .navbar-fixed-bottom,#bookly-tbs .navbar-fixed-top{border-radius:0}}#bookly-tbs .navbar-fixed-top{top:0;border-width:0 0 1px}#bookly-tbs .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}#bookly-tbs .navbar-brand{float:left;height:50px;padding:14.5px 10px;font-size:18px;line-height:21px}#bookly-tbs .navbar-brand:focus,#bookly-tbs .navbar-brand:hover{text-decoration:none}#bookly-tbs .navbar-brand>img{display:block}@media (min-width:768px){#bookly-tbs .navbar>.container .navbar-brand,#bookly-tbs .navbar>.container-fluid .navbar-brand{margin-left:-10px}}#bookly-tbs .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:10px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}#bookly-tbs .navbar-toggle:focus{outline:0}#bookly-tbs .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}#bookly-tbs .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){#bookly-tbs .navbar-toggle{display:none}}#bookly-tbs .navbar-nav{margin:7.25px -10px}#bookly-tbs .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){#bookly-tbs .navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .navbar-nav .open .dropdown-menu .dropdown-header,#bookly-tbs .navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}#bookly-tbs .navbar-nav .open .dropdown-menu>li>a{line-height:21px}#bookly-tbs .navbar-nav .open .dropdown-menu>li>a:focus,#bookly-tbs .navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){#bookly-tbs .navbar-nav{float:left;margin:0}#bookly-tbs .navbar-nav>li{float:left}#bookly-tbs .navbar-nav>li>a{padding-top:14.5px;padding-bottom:14.5px}}#bookly-tbs .navbar-form{padding:10px 10px;margin-top:7.5px;margin-right:-10px;margin-bottom:7.5px;margin-left:-10px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){#bookly-tbs .navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bookly-tbs .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}#bookly-tbs .navbar-form .form-control-static{display:inline-block}#bookly-tbs .navbar-form .input-group{display:inline-table;vertical-align:middle}#bookly-tbs .navbar-form .input-group .form-control,#bookly-tbs .navbar-form .input-group .input-group-addon,#bookly-tbs .navbar-form .input-group .input-group-btn{width:auto}#bookly-tbs .navbar-form .input-group>.form-control{width:100%}#bookly-tbs .navbar-form .control-label{margin-bottom:0;vertical-align:middle}#bookly-tbs .navbar-form .checkbox,#bookly-tbs .navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bookly-tbs .navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){#bookly-tbs .navbar-form .form-group{margin-bottom:5px}#bookly-tbs .navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){#bookly-tbs .navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}#bookly-tbs .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bookly-tbs .navbar-btn{margin-top:7.5px;margin-bottom:7.5px}#bookly-tbs .navbar-btn.btn-sm{margin-top:9px;margin-bottom:9px}#bookly-tbs .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}#bookly-tbs .navbar-text{margin-top:14.5px;margin-bottom:14.5px}@media (min-width:768px){#bookly-tbs .navbar-text{float:left;margin-right:10px;margin-left:10px}}@media (min-width:768px){#bookly-tbs .navbar-left{float:left!important}#bookly-tbs .navbar-right{float:right!important;margin-right:-10px}#bookly-tbs .navbar-right~.navbar-right{margin-right:0}}#bookly-tbs .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-brand{color:#777}#bookly-tbs .navbar-default .navbar-brand:focus,#bookly-tbs .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}#bookly-tbs .navbar-default .navbar-text{color:#777}#bookly-tbs .navbar-default .navbar-nav>li>a{color:#777}#bookly-tbs .navbar-default .navbar-nav>li>a:focus,#bookly-tbs .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}#bookly-tbs .navbar-default .navbar-nav>.active>a,#bookly-tbs .navbar-default .navbar-nav>.active>a:focus,#bookly-tbs .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-nav>.disabled>a,#bookly-tbs .navbar-default .navbar-nav>.disabled>a:focus,#bookly-tbs .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}#bookly-tbs .navbar-default .navbar-toggle{border-color:#e8ebf0}#bookly-tbs .navbar-default .navbar-toggle:focus,#bookly-tbs .navbar-default .navbar-toggle:hover{background-color:#e8ebf0}#bookly-tbs .navbar-default .navbar-toggle .icon-bar{background-color:#8a929e}#bookly-tbs .navbar-default .navbar-collapse,#bookly-tbs .navbar-default .navbar-form{border-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-nav>.open>a,#bookly-tbs .navbar-default .navbar-nav>.open>a:focus,#bookly-tbs .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.active>a,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}#bookly-tbs .navbar-default .navbar-link{color:#777}#bookly-tbs .navbar-default .navbar-link:hover{color:#333}#bookly-tbs .navbar-default .btn-link{color:#777}#bookly-tbs .navbar-default .btn-link:focus,#bookly-tbs .navbar-default .btn-link:hover{color:#333}#bookly-tbs .navbar-default .btn-link[disabled]:focus,#bookly-tbs .navbar-default .btn-link[disabled]:hover,#bookly-tbs fieldset[disabled] .navbar-default .btn-link:focus,#bookly-tbs fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}#bookly-tbs .navbar-inverse{background-color:#222;border-color:#080808}#bookly-tbs .navbar-inverse .navbar-brand{color:#fff}#bookly-tbs .navbar-inverse .navbar-brand:focus,#bookly-tbs .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-text{color:#fff}#bookly-tbs .navbar-inverse .navbar-nav>li>a{color:#fff}#bookly-tbs .navbar-inverse .navbar-nav>li>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-nav>.active>a,#bookly-tbs .navbar-inverse .navbar-nav>.active>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav>.disabled>a,#bookly-tbs .navbar-inverse .navbar-nav>.disabled>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-toggle{border-color:#333}#bookly-tbs .navbar-inverse .navbar-toggle:focus,#bookly-tbs .navbar-inverse .navbar-toggle:hover{background-color:#333}#bookly-tbs .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}#bookly-tbs .navbar-inverse .navbar-collapse,#bookly-tbs .navbar-inverse .navbar-form{border-color:#101010}#bookly-tbs .navbar-inverse .navbar-nav>.open>a,#bookly-tbs .navbar-inverse .navbar-nav>.open>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}#bookly-tbs .navbar-inverse .navbar-link{color:#fff}#bookly-tbs .navbar-inverse .navbar-link:hover{color:#fff}#bookly-tbs .navbar-inverse .btn-link{color:#fff}#bookly-tbs .navbar-inverse .btn-link:focus,#bookly-tbs .navbar-inverse .btn-link:hover{color:#fff}#bookly-tbs .navbar-inverse .btn-link[disabled]:focus,#bookly-tbs .navbar-inverse .btn-link[disabled]:hover,#bookly-tbs fieldset[disabled] .navbar-inverse .btn-link:focus,#bookly-tbs fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}#bookly-tbs .breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:4px}#bookly-tbs .breadcrumb>li{display:inline-block}#bookly-tbs .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}#bookly-tbs .breadcrumb>.active{color:#d9dee4}#bookly-tbs .pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}#bookly-tbs .pagination>li{display:inline}#bookly-tbs .pagination>li>a,#bookly-tbs .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.4;color:#08c;text-decoration:none;background-color:#fff;border:1px solid #e8ebf0}#bookly-tbs .pagination>li:first-child>a,#bookly-tbs .pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#bookly-tbs .pagination>li:last-child>a,#bookly-tbs .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}#bookly-tbs .pagination>li>a:focus,#bookly-tbs .pagination>li>a:hover,#bookly-tbs .pagination>li>span:focus,#bookly-tbs .pagination>li>span:hover{z-index:2;color:#005580;background-color:#e8ebf0;border-color:#e8ebf0}#bookly-tbs .pagination>.active>a,#bookly-tbs .pagination>.active>a:focus,#bookly-tbs .pagination>.active>a:hover,#bookly-tbs .pagination>.active>span,#bookly-tbs .pagination>.active>span:focus,#bookly-tbs .pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#08c;border-color:#08c}#bookly-tbs .pagination>.disabled>a,#bookly-tbs .pagination>.disabled>a:focus,#bookly-tbs .pagination>.disabled>a:hover,#bookly-tbs .pagination>.disabled>span,#bookly-tbs .pagination>.disabled>span:focus,#bookly-tbs .pagination>.disabled>span:hover{color:#d9dee4;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#e8ebf0}#bookly-tbs .pagination-lg>li>a,#bookly-tbs .pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}#bookly-tbs .pagination-lg>li:first-child>a,#bookly-tbs .pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}#bookly-tbs .pagination-lg>li:last-child>a,#bookly-tbs .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}#bookly-tbs .pagination-sm>li>a,#bookly-tbs .pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.53846154}#bookly-tbs .pagination-sm>li:first-child>a,#bookly-tbs .pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .pagination-sm>li:last-child>a,#bookly-tbs .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}#bookly-tbs .pager{padding-left:0;margin:21px 0;text-align:center;list-style:none}#bookly-tbs .pager li{display:inline}#bookly-tbs .pager li>a,#bookly-tbs .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #e8ebf0;border-radius:15px}#bookly-tbs .pager li>a:focus,#bookly-tbs .pager li>a:hover{text-decoration:none;background-color:#e8ebf0}#bookly-tbs .pager .next>a,#bookly-tbs .pager .next>span{float:right}#bookly-tbs .pager .previous>a,#bookly-tbs .pager .previous>span{float:left}#bookly-tbs .pager .disabled>a,#bookly-tbs .pager .disabled>a:focus,#bookly-tbs .pager .disabled>a:hover,#bookly-tbs .pager .disabled>span{color:#d9dee4;pointer-events:none;cursor:not-allowed;background-color:#fff}#bookly-tbs .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}#bookly-tbs a.label:focus,#bookly-tbs a.label:hover{color:#fff;text-decoration:none;cursor:pointer}#bookly-tbs .label:empty{display:none}#bookly-tbs .btn .label{position:relative;top:-1px}#bookly-tbs .label-default{background-color:#d9dee4}#bookly-tbs .label-default[href]:focus,#bookly-tbs .label-default[href]:hover{background-color:#bbc4cf}#bookly-tbs .label-primary{background-color:#08c}#bookly-tbs .label-primary[href]:focus,#bookly-tbs .label-primary[href]:hover{background-color:#069}#bookly-tbs .label-success{background-color:#5cb85c}#bookly-tbs .label-success[href]:focus,#bookly-tbs .label-success[href]:hover{background-color:#449d44}#bookly-tbs .label-info{background-color:#5bc0de}#bookly-tbs .label-info[href]:focus,#bookly-tbs .label-info[href]:hover{background-color:#31b0d5}#bookly-tbs .label-warning{background-color:#f0ad4e}#bookly-tbs .label-warning[href]:focus,#bookly-tbs .label-warning[href]:hover{background-color:#ec971f}#bookly-tbs .label-danger{background-color:#d9534f}#bookly-tbs .label-danger[href]:focus,#bookly-tbs .label-danger[href]:hover{background-color:#c9302c}#bookly-tbs .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#d9dee4;border-radius:10px}#bookly-tbs .badge:empty{display:none}#bookly-tbs .btn .badge{position:relative;top:-1px}#bookly-tbs .btn-group-xs>.btn .badge,#bookly-tbs .btn-xs .badge{top:0;padding:1px 5px}#bookly-tbs a.badge:focus,#bookly-tbs a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}#bookly-tbs .list-group-item.active>.badge,#bookly-tbs .nav-pills>.active>a>.badge{color:#08c;background-color:#fff}#bookly-tbs .list-group-item>.badge{float:right}#bookly-tbs .list-group-item>.badge+.badge{margin-right:5px}#bookly-tbs .nav-pills>li>a>.badge{margin-left:3px}#bookly-tbs .jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#e8ebf0}#bookly-tbs .jumbotron .h1,#bookly-tbs .jumbotron h1{color:inherit}#bookly-tbs .jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}#bookly-tbs .jumbotron>hr{border-top-color:#c9d0dc}#bookly-tbs .container .jumbotron,#bookly-tbs .container-fluid .jumbotron{padding-right:10px;padding-left:10px;border-radius:6px}#bookly-tbs .jumbotron .container{max-width:100%}@media screen and (min-width:768px){#bookly-tbs .jumbotron{padding-top:48px;padding-bottom:48px}#bookly-tbs .container .jumbotron,#bookly-tbs .container-fluid .jumbotron{padding-right:60px;padding-left:60px}#bookly-tbs .jumbotron .h1,#bookly-tbs .jumbotron h1{font-size:68px}}#bookly-tbs .thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.4;background-color:transparent;border:1px solid #e8ebf0;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}#bookly-tbs .thumbnail a>img,#bookly-tbs .thumbnail>img{margin-right:auto;margin-left:auto}#bookly-tbs a.thumbnail.active,#bookly-tbs a.thumbnail:focus,#bookly-tbs a.thumbnail:hover{border-color:#08c}#bookly-tbs .thumbnail .caption{padding:9px;color:#3e424a}#bookly-tbs .alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}#bookly-tbs .alert h4{margin-top:0;color:inherit}#bookly-tbs .alert .alert-link{font-weight:700}#bookly-tbs .alert>p,#bookly-tbs .alert>ul{margin-bottom:0}#bookly-tbs .alert>p+p{margin-top:5px}#bookly-tbs .alert-dismissable,#bookly-tbs .alert-dismissible{padding-right:35px}#bookly-tbs .alert-dismissable .close,#bookly-tbs .alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}#bookly-tbs .alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}#bookly-tbs .alert-success hr{border-top-color:#c9e2b3}#bookly-tbs .alert-success .alert-link{color:#2b542c}#bookly-tbs .alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}#bookly-tbs .alert-info hr{border-top-color:#a6e1ec}#bookly-tbs .alert-info .alert-link{color:#245269}#bookly-tbs .alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}#bookly-tbs .alert-warning hr{border-top-color:#f7e1b5}#bookly-tbs .alert-warning .alert-link{color:#66512c}#bookly-tbs .alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}#bookly-tbs .alert-danger hr{border-top-color:#e4b9c0}#bookly-tbs .alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}#bookly-tbs .progress{height:21px;margin-bottom:21px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}#bookly-tbs .progress-bar{float:left;width:0;height:100%;font-size:13px;line-height:21px;color:#fff;text-align:center;background-color:#08c;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}#bookly-tbs .progress-bar-striped,#bookly-tbs .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}#bookly-tbs .progress-bar.active,#bookly-tbs .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}#bookly-tbs .progress-bar-success{background-color:#5cb85c}#bookly-tbs .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bookly-tbs .progress-bar-info{background-color:#5bc0de}#bookly-tbs .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bookly-tbs .progress-bar-warning{background-color:#f0ad4e}#bookly-tbs .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bookly-tbs .progress-bar-danger{background-color:#d9534f}#bookly-tbs .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bookly-tbs .media{margin-top:15px}#bookly-tbs .media:first-child{margin-top:0}#bookly-tbs .media,#bookly-tbs .media-body{overflow:hidden;zoom:1}#bookly-tbs .media-body{width:10000px}#bookly-tbs .media-object{display:block}#bookly-tbs .media-object.img-thumbnail{max-width:none}#bookly-tbs .media-right,#bookly-tbs .media>.pull-right{padding-left:10px}#bookly-tbs .media-left,#bookly-tbs .media>.pull-left{padding-right:10px}#bookly-tbs .media-body,#bookly-tbs .media-left,#bookly-tbs .media-right{display:table-cell;vertical-align:top}#bookly-tbs .media-middle{vertical-align:middle}#bookly-tbs .media-bottom{vertical-align:bottom}#bookly-tbs .media-heading{margin-top:0;margin-bottom:5px}#bookly-tbs .media-list{padding-left:0;list-style:none}#bookly-tbs .list-group{padding-left:0;margin-bottom:20px}#bookly-tbs .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #e8ebf0}#bookly-tbs .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}#bookly-tbs .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bookly-tbs a.list-group-item,#bookly-tbs button.list-group-item{color:#555}#bookly-tbs a.list-group-item .list-group-item-heading,#bookly-tbs button.list-group-item .list-group-item-heading{color:#333}#bookly-tbs a.list-group-item:focus,#bookly-tbs a.list-group-item:hover,#bookly-tbs button.list-group-item:focus,#bookly-tbs button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}#bookly-tbs button.list-group-item{width:100%;text-align:left}#bookly-tbs .list-group-item.disabled,#bookly-tbs .list-group-item.disabled:focus,#bookly-tbs .list-group-item.disabled:hover{color:#d9dee4;cursor:not-allowed;background-color:#e8ebf0}#bookly-tbs .list-group-item.disabled .list-group-item-heading,#bookly-tbs .list-group-item.disabled:focus .list-group-item-heading,#bookly-tbs .list-group-item.disabled:hover .list-group-item-heading{color:inherit}#bookly-tbs .list-group-item.disabled .list-group-item-text,#bookly-tbs .list-group-item.disabled:focus .list-group-item-text,#bookly-tbs .list-group-item.disabled:hover .list-group-item-text{color:#d9dee4}#bookly-tbs .list-group-item.active,#bookly-tbs .list-group-item.active:focus,#bookly-tbs .list-group-item.active:hover{z-index:2;color:#fff;background-color:#08c;border-color:#08c}#bookly-tbs .list-group-item.active .list-group-item-heading,#bookly-tbs .list-group-item.active .list-group-item-heading>.small,#bookly-tbs .list-group-item.active .list-group-item-heading>small,#bookly-tbs .list-group-item.active:focus .list-group-item-heading,#bookly-tbs .list-group-item.active:focus .list-group-item-heading>.small,#bookly-tbs .list-group-item.active:focus .list-group-item-heading>small,#bookly-tbs .list-group-item.active:hover .list-group-item-heading,#bookly-tbs .list-group-item.active:hover .list-group-item-heading>.small,#bookly-tbs .list-group-item.active:hover .list-group-item-heading>small{color:inherit}#bookly-tbs .list-group-item.active .list-group-item-text,#bookly-tbs .list-group-item.active:focus .list-group-item-text,#bookly-tbs .list-group-item.active:hover .list-group-item-text{color:#9df}#bookly-tbs .list-group-item-success{color:#3c763d;background-color:#dff0d8}#bookly-tbs a.list-group-item-success,#bookly-tbs button.list-group-item-success{color:#3c763d}#bookly-tbs a.list-group-item-success .list-group-item-heading,#bookly-tbs button.list-group-item-success .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-success:focus,#bookly-tbs a.list-group-item-success:hover,#bookly-tbs button.list-group-item-success:focus,#bookly-tbs button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}#bookly-tbs a.list-group-item-success.active,#bookly-tbs a.list-group-item-success.active:focus,#bookly-tbs a.list-group-item-success.active:hover,#bookly-tbs button.list-group-item-success.active,#bookly-tbs button.list-group-item-success.active:focus,#bookly-tbs button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}#bookly-tbs .list-group-item-info{color:#31708f;background-color:#d9edf7}#bookly-tbs a.list-group-item-info,#bookly-tbs button.list-group-item-info{color:#31708f}#bookly-tbs a.list-group-item-info .list-group-item-heading,#bookly-tbs button.list-group-item-info .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-info:focus,#bookly-tbs a.list-group-item-info:hover,#bookly-tbs button.list-group-item-info:focus,#bookly-tbs button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}#bookly-tbs a.list-group-item-info.active,#bookly-tbs a.list-group-item-info.active:focus,#bookly-tbs a.list-group-item-info.active:hover,#bookly-tbs button.list-group-item-info.active,#bookly-tbs button.list-group-item-info.active:focus,#bookly-tbs button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}#bookly-tbs .list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}#bookly-tbs a.list-group-item-warning,#bookly-tbs button.list-group-item-warning{color:#8a6d3b}#bookly-tbs a.list-group-item-warning .list-group-item-heading,#bookly-tbs button.list-group-item-warning .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-warning:focus,#bookly-tbs a.list-group-item-warning:hover,#bookly-tbs button.list-group-item-warning:focus,#bookly-tbs button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}#bookly-tbs a.list-group-item-warning.active,#bookly-tbs a.list-group-item-warning.active:focus,#bookly-tbs a.list-group-item-warning.active:hover,#bookly-tbs button.list-group-item-warning.active,#bookly-tbs button.list-group-item-warning.active:focus,#bookly-tbs button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}#bookly-tbs .list-group-item-danger{color:#a94442;background-color:#f2dede}#bookly-tbs a.list-group-item-danger,#bookly-tbs button.list-group-item-danger{color:#a94442}#bookly-tbs a.list-group-item-danger .list-group-item-heading,#bookly-tbs button.list-group-item-danger .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-danger:focus,#bookly-tbs a.list-group-item-danger:hover,#bookly-tbs button.list-group-item-danger:focus,#bookly-tbs button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}#bookly-tbs a.list-group-item-danger.active,#bookly-tbs a.list-group-item-danger.active:focus,#bookly-tbs a.list-group-item-danger.active:hover,#bookly-tbs button.list-group-item-danger.active,#bookly-tbs button.list-group-item-danger.active:focus,#bookly-tbs button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}#bookly-tbs .list-group-item-heading{margin-top:0;margin-bottom:5px}#bookly-tbs .list-group-item-text{margin-bottom:0;line-height:1.3}#bookly-tbs .panel{margin-bottom:21px;background-color:#fff;border:2px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}#bookly-tbs .panel-body{padding:15px}#bookly-tbs .panel-heading{padding:15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel-heading>.dropdown .dropdown-toggle{color:inherit}#bookly-tbs .panel-title{margin-top:0;margin-bottom:0;font-size:15px;color:inherit}#bookly-tbs .panel-title>.small,#bookly-tbs .panel-title>.small>a,#bookly-tbs .panel-title>a,#bookly-tbs .panel-title>small,#bookly-tbs .panel-title>small>a{color:inherit}#bookly-tbs .panel-footer{padding:15px;background-color:#e8ebf0;border-top:1px solid #e8ebf0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.list-group,#bookly-tbs .panel>.panel-collapse>.list-group{margin-bottom:0}#bookly-tbs .panel>.list-group .list-group-item,#bookly-tbs .panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}#bookly-tbs .panel>.list-group:first-child .list-group-item:first-child,#bookly-tbs .panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel>.list-group:last-child .list-group-item:last-child,#bookly-tbs .panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}#bookly-tbs .list-group+.panel-footer{border-top-width:0}#bookly-tbs .panel>.panel-collapse>.table,#bookly-tbs .panel>.table,#bookly-tbs .panel>.table-responsive>.table{margin-bottom:0}#bookly-tbs .panel>.panel-collapse>.table caption,#bookly-tbs .panel>.table caption,#bookly-tbs .panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child,#bookly-tbs .panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child,#bookly-tbs .panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}#bookly-tbs .panel>.panel-body+.table,#bookly-tbs .panel>.panel-body+.table-responsive,#bookly-tbs .panel>.table+.panel-body,#bookly-tbs .panel>.table-responsive+.panel-body{border-top:1px solid #d9dee4}#bookly-tbs .panel>.table>tbody:first-child>tr:first-child td,#bookly-tbs .panel>.table>tbody:first-child>tr:first-child th{border-top:0}#bookly-tbs .panel>.table-bordered,#bookly-tbs .panel>.table-responsive>.table-bordered{border:0}#bookly-tbs .panel>.table-bordered>tbody>tr>td:first-child,#bookly-tbs .panel>.table-bordered>tbody>tr>th:first-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>td:first-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>th:first-child,#bookly-tbs .panel>.table-bordered>thead>tr>td:first-child,#bookly-tbs .panel>.table-bordered>thead>tr>th:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}#bookly-tbs .panel>.table-bordered>tbody>tr>td:last-child,#bookly-tbs .panel>.table-bordered>tbody>tr>th:last-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>td:last-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>th:last-child,#bookly-tbs .panel>.table-bordered>thead>tr>td:last-child,#bookly-tbs .panel>.table-bordered>thead>tr>th:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}#bookly-tbs .panel>.table-bordered>tbody>tr:first-child>td,#bookly-tbs .panel>.table-bordered>tbody>tr:first-child>th,#bookly-tbs .panel>.table-bordered>thead>tr:first-child>td,#bookly-tbs .panel>.table-bordered>thead>tr:first-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr:first-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}#bookly-tbs .panel>.table-bordered>tbody>tr:last-child>td,#bookly-tbs .panel>.table-bordered>tbody>tr:last-child>th,#bookly-tbs .panel>.table-bordered>tfoot>tr:last-child>td,#bookly-tbs .panel>.table-bordered>tfoot>tr:last-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}#bookly-tbs .panel>.table-responsive{margin-bottom:0;border:0}#bookly-tbs .panel-group{margin-bottom:21px}#bookly-tbs .panel-group .panel{margin-bottom:0;border-radius:4px}#bookly-tbs .panel-group .panel+.panel{margin-top:10px}#bookly-tbs .panel-group .panel-heading{border-bottom:0}#bookly-tbs .panel-group .panel-heading+.panel-collapse>.list-group,#bookly-tbs .panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #e8ebf0}#bookly-tbs .panel-group .panel-footer{border-top:0}#bookly-tbs .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #e8ebf0}#bookly-tbs .panel-default{border-color:#e8ebf0}#bookly-tbs .panel-default>.panel-heading{color:#3e424a;background-color:#e8ebf0;border-color:#e8ebf0}#bookly-tbs .panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e8ebf0}#bookly-tbs .panel-default>.panel-heading .badge{color:#e8ebf0;background-color:#3e424a}#bookly-tbs .panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e8ebf0}#bookly-tbs .panel-primary{border-color:#08c}#bookly-tbs .panel-primary>.panel-heading{color:#fff;background-color:#08c;border-color:#08c}#bookly-tbs .panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#08c}#bookly-tbs .panel-primary>.panel-heading .badge{color:#08c;background-color:#fff}#bookly-tbs .panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#08c}#bookly-tbs .panel-success{border-color:#d6e9c6}#bookly-tbs .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}#bookly-tbs .panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}#bookly-tbs .panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}#bookly-tbs .panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}#bookly-tbs .panel-info{border-color:#bce8f1}#bookly-tbs .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}#bookly-tbs .panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}#bookly-tbs .panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}#bookly-tbs .panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}#bookly-tbs .panel-warning{border-color:#faebcc}#bookly-tbs .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}#bookly-tbs .panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}#bookly-tbs .panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}#bookly-tbs .panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}#bookly-tbs .panel-danger{border-color:#ebccd1}#bookly-tbs .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}#bookly-tbs .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}#bookly-tbs .panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}#bookly-tbs .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}#bookly-tbs .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}#bookly-tbs .embed-responsive .embed-responsive-item,#bookly-tbs .embed-responsive embed,#bookly-tbs .embed-responsive iframe,#bookly-tbs .embed-responsive object,#bookly-tbs .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}#bookly-tbs .embed-responsive-16by9{padding-bottom:56.25%}#bookly-tbs .embed-responsive-4by3{padding-bottom:75%}#bookly-tbs .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}#bookly-tbs .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}#bookly-tbs .well-lg{padding:24px;border-radius:6px}#bookly-tbs .well-sm{padding:9px;border-radius:3px}#bookly-tbs .close{float:right;font-size:22.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}#bookly-tbs .close:focus,#bookly-tbs .close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}#bookly-tbs button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}#bookly-tbs .modal-open{overflow:hidden}#bookly-tbs .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}#bookly-tbs .modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}#bookly-tbs .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bookly-tbs .modal-open .modal{overflow-x:hidden;overflow-y:auto}#bookly-tbs .modal-dialog{position:relative;width:auto;margin:10px}#bookly-tbs .modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}#bookly-tbs .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}#bookly-tbs .modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}#bookly-tbs .modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}#bookly-tbs .modal-header{padding:15px;border-bottom:1px solid #e5e5e5}#bookly-tbs .modal-header .close{margin-top:-2px}#bookly-tbs .modal-title{margin:0;line-height:1.4}#bookly-tbs .modal-body{position:relative;padding:15px}#bookly-tbs .modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}#bookly-tbs .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}#bookly-tbs .modal-footer .btn-group .btn+.btn{margin-left:-1px}#bookly-tbs .modal-footer .btn-block+.btn-block{margin-left:0}#bookly-tbs .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){#bookly-tbs .modal-dialog{width:600px;margin:30px auto}#bookly-tbs .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#bookly-tbs .modal-sm{width:300px}}@media (min-width:992px){#bookly-tbs .modal-lg{width:900px}}#bookly-tbs .tooltip{position:absolute;z-index:1070;display:block;font-family:"open sans","helvetica neue",helvetica,arial,sans-serif;font-size:13px;font-style:normal;font-weight:400;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}#bookly-tbs .tooltip.in{filter:alpha(opacity=90);opacity:.9}#bookly-tbs .tooltip.top{padding:5px 0;margin-top:-3px}#bookly-tbs .tooltip.right{padding:0 5px;margin-left:3px}#bookly-tbs .tooltip.bottom{padding:5px 0;margin-top:3px}#bookly-tbs .tooltip.left{padding:0 5px;margin-left:-3px}#bookly-tbs .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}#bookly-tbs .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}#bookly-tbs .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}#bookly-tbs .tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bookly-tbs .tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bookly-tbs .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}#bookly-tbs .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}#bookly-tbs .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bookly-tbs .tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bookly-tbs .tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bookly-tbs .popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:600px;padding:1px;font-family:"open sans","helvetica neue",helvetica,arial,sans-serif;font-size:15px;font-style:normal;font-weight:400;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}#bookly-tbs .popover.top{margin-top:-10px}#bookly-tbs .popover.right{margin-left:10px}#bookly-tbs .popover.bottom{margin-top:10px}#bookly-tbs .popover.left{margin-left:-10px}#bookly-tbs .popover-title{padding:8px 14px;margin:0;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}#bookly-tbs .popover-content{padding:14px 20px}#bookly-tbs .popover>.popover-arrow,#bookly-tbs .popover>.popover-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}#bookly-tbs .popover>.popover-arrow{border-width:11px}#bookly-tbs .popover>.popover-arrow:after{content:"";border-width:10px}#bookly-tbs .popover.top>.popover-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}#bookly-tbs .popover.top>.popover-arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}#bookly-tbs .popover.right>.popover-arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}#bookly-tbs .popover.right>.popover-arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}#bookly-tbs .popover.bottom>.popover-arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}#bookly-tbs .popover.bottom>.popover-arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}#bookly-tbs .popover.left>.popover-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}#bookly-tbs .popover.left>.popover-arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}#bookly-tbs .carousel{position:relative}#bookly-tbs .carousel-inner{position:relative;width:100%;overflow:hidden}#bookly-tbs .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}#bookly-tbs .carousel-inner>.item>a>img,#bookly-tbs .carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){#bookly-tbs .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}#bookly-tbs .carousel-inner>.item.active.right,#bookly-tbs .carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}#bookly-tbs .carousel-inner>.item.active.left,#bookly-tbs .carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}#bookly-tbs .carousel-inner>.item.active,#bookly-tbs .carousel-inner>.item.next.left,#bookly-tbs .carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}#bookly-tbs .carousel-inner>.active,#bookly-tbs .carousel-inner>.next,#bookly-tbs .carousel-inner>.prev{display:block}#bookly-tbs .carousel-inner>.active{left:0}#bookly-tbs .carousel-inner>.next,#bookly-tbs .carousel-inner>.prev{position:absolute;top:0;width:100%}#bookly-tbs .carousel-inner>.next{left:100%}#bookly-tbs .carousel-inner>.prev{left:-100%}#bookly-tbs .carousel-inner>.next.left,#bookly-tbs .carousel-inner>.prev.right{left:0}#bookly-tbs .carousel-inner>.active.left{left:-100%}#bookly-tbs .carousel-inner>.active.right{left:100%}#bookly-tbs .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}#bookly-tbs .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}#bookly-tbs .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}#bookly-tbs .carousel-control:focus,#bookly-tbs .carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next,#bookly-tbs .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .icon-prev{left:50%;margin-left:-10px}#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next{right:50%;margin-right:-10px}#bookly-tbs .carousel-control .icon-next,#bookly-tbs .carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}#bookly-tbs .carousel-control .icon-prev:before{content:'\2039'}#bookly-tbs .carousel-control .icon-next:before{content:'\203a'}#bookly-tbs .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}#bookly-tbs .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}#bookly-tbs .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}#bookly-tbs .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}#bookly-tbs .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next,#bookly-tbs .carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .icon-prev{margin-left:-10px}#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next{margin-right:-10px}#bookly-tbs .carousel-caption{right:20%;left:20%;padding-bottom:30px}#bookly-tbs .carousel-indicators{bottom:20px}}#bookly-tbs .btn-group-vertical>.btn-group:after,#bookly-tbs .btn-group-vertical>.btn-group:before,#bookly-tbs .btn-toolbar:after,#bookly-tbs .btn-toolbar:before,#bookly-tbs .clearfix:after,#bookly-tbs .clearfix:before,#bookly-tbs .container-fluid:after,#bookly-tbs .container-fluid:before,#bookly-tbs .container:after,#bookly-tbs .container:before,#bookly-tbs .dl-horizontal dd:after,#bookly-tbs .dl-horizontal dd:before,#bookly-tbs .form-horizontal .form-group:after,#bookly-tbs .form-horizontal .form-group:before,#bookly-tbs .modal-footer:after,#bookly-tbs .modal-footer:before,#bookly-tbs .modal-header:after,#bookly-tbs .modal-header:before,#bookly-tbs .nav:after,#bookly-tbs .nav:before,#bookly-tbs .navbar-collapse:after,#bookly-tbs .navbar-collapse:before,#bookly-tbs .navbar-header:after,#bookly-tbs .navbar-header:before,#bookly-tbs .navbar:after,#bookly-tbs .navbar:before,#bookly-tbs .pager:after,#bookly-tbs .pager:before,#bookly-tbs .panel-body:after,#bookly-tbs .panel-body:before,#bookly-tbs .row:after,#bookly-tbs .row:before{display:table;content:" "}#bookly-tbs .btn-group-vertical>.btn-group:after,#bookly-tbs .btn-toolbar:after,#bookly-tbs .clearfix:after,#bookly-tbs .container-fluid:after,#bookly-tbs .container:after,#bookly-tbs .dl-horizontal dd:after,#bookly-tbs .form-horizontal .form-group:after,#bookly-tbs .modal-footer:after,#bookly-tbs .modal-header:after,#bookly-tbs .nav:after,#bookly-tbs .navbar-collapse:after,#bookly-tbs .navbar-header:after,#bookly-tbs .navbar:after,#bookly-tbs .pager:after,#bookly-tbs .panel-body:after,#bookly-tbs .row:after{clear:both}#bookly-tbs .center-block{display:block;margin-right:auto;margin-left:auto}#bookly-tbs .pull-right{float:right!important}#bookly-tbs .pull-left{float:left!important}#bookly-tbs .hide{display:none!important}#bookly-tbs .show{display:block!important}#bookly-tbs .invisible{visibility:hidden}#bookly-tbs .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bookly-tbs .hidden{display:none!important}#bookly-tbs .affix{position:fixed}@-ms-viewport{width:device-width}#bookly-tbs .visible-lg,#bookly-tbs .visible-md,#bookly-tbs .visible-sm,#bookly-tbs .visible-xs{display:none!important}#bookly-tbs .visible-lg-block,#bookly-tbs .visible-lg-inline,#bookly-tbs .visible-lg-inline-block,#bookly-tbs .visible-md-block,#bookly-tbs .visible-md-inline,#bookly-tbs .visible-md-inline-block,#bookly-tbs .visible-sm-block,#bookly-tbs .visible-sm-inline,#bookly-tbs .visible-sm-inline-block,#bookly-tbs .visible-xs-block,#bookly-tbs .visible-xs-inline,#bookly-tbs .visible-xs-inline-block{display:none!important}@media (max-width:767px){#bookly-tbs .visible-xs{display:block!important}#bookly-tbs table.visible-xs{display:table!important}#bookly-tbs tr.visible-xs{display:table-row!important}#bookly-tbs td.visible-xs,#bookly-tbs th.visible-xs{display:table-cell!important}}@media (max-width:767px){#bookly-tbs .visible-xs-block{display:block!important}}@media (max-width:767px){#bookly-tbs .visible-xs-inline{display:inline!important}}@media (max-width:767px){#bookly-tbs .visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm{display:block!important}#bookly-tbs table.visible-sm{display:table!important}#bookly-tbs tr.visible-sm{display:table-row!important}#bookly-tbs td.visible-sm,#bookly-tbs th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md{display:block!important}#bookly-tbs table.visible-md{display:table!important}#bookly-tbs tr.visible-md{display:table-row!important}#bookly-tbs td.visible-md,#bookly-tbs th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){#bookly-tbs .visible-lg{display:block!important}#bookly-tbs table.visible-lg{display:table!important}#bookly-tbs tr.visible-lg{display:table-row!important}#bookly-tbs td.visible-lg,#bookly-tbs th.visible-lg{display:table-cell!important}}@media (min-width:1200px){#bookly-tbs .visible-lg-block{display:block!important}}@media (min-width:1200px){#bookly-tbs .visible-lg-inline{display:inline!important}}@media (min-width:1200px){#bookly-tbs .visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){#bookly-tbs .hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .hidden-md{display:none!important}}@media (min-width:1200px){#bookly-tbs .hidden-lg{display:none!important}}#bookly-tbs .visible-print{display:none!important}@media print{#bookly-tbs .visible-print{display:block!important}#bookly-tbs table.visible-print{display:table!important}#bookly-tbs tr.visible-print{display:table-row!important}#bookly-tbs td.visible-print,#bookly-tbs th.visible-print{display:table-cell!important}}#bookly-tbs .visible-print-block{display:none!important}@media print{#bookly-tbs .visible-print-block{display:block!important}}#bookly-tbs .visible-print-inline{display:none!important}@media print{#bookly-tbs .visible-print-inline{display:inline!important}}#bookly-tbs .visible-print-inline-block{display:none!important}@media print{#bookly-tbs .visible-print-inline-block{display:inline-block!important}}@media print{#bookly-tbs .hidden-print{display:none!important}}#bookly-tbs [class*=block-grid-]{padding:0;margin:0;list-style:none;border:1px solid transparent;border-width:1px 0 0 1px}#bookly-tbs [class*=block-grid-]>*{display:block;float:left;height:auto;text-align:center;border:1px solid inherit;border-width:0 1px 1px 0}#bookly-tbs [class*=block-grid-]:after,#bookly-tbs [class*=block-grid-]:before{display:table;content:" "}#bookly-tbs .block-grid-16>:nth-of-type(16n+1),#bookly-tbs [class*=block-grid-]:after{clear:both}#bookly-tbs .block-grid-16>*{width:6.25%;line-height:49px}#bookly-tbs .btn-group-justified>.btn-group:not(:first-child) .btn,#bookly-tbs .btn-group-justified>.btn:not(:first-child){border-left:0}#bookly-tbs .btn-default-outline{color:#5b6470;background-color:transparent;border-color:#5b6470}#bookly-tbs .btn-default-outline.focus,#bookly-tbs .btn-default-outline:focus{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#22252a}#bookly-tbs .btn-default-outline:hover{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#40464e}#bookly-tbs .btn-default-outline.active,#bookly-tbs .btn-default-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-default-outline{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#40464e}#bookly-tbs .btn-default-outline.active.focus,#bookly-tbs .btn-default-outline.active:focus,#bookly-tbs .btn-default-outline.active:hover,#bookly-tbs .btn-default-outline:active.focus,#bookly-tbs .btn-default-outline:active:focus,#bookly-tbs .btn-default-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-default-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-default-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-default-outline:hover{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#22252a}#bookly-tbs .btn-default-outline.active,#bookly-tbs .btn-default-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-default-outline{background-image:none}#bookly-tbs .btn-default-outline.disabled.focus,#bookly-tbs .btn-default-outline.disabled:focus,#bookly-tbs .btn-default-outline.disabled:hover,#bookly-tbs .btn-default-outline[disabled].focus,#bookly-tbs .btn-default-outline[disabled]:focus,#bookly-tbs .btn-default-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-default-outline.focus,fieldset[disabled] #bookly-tbs .btn-default-outline:focus,fieldset[disabled] #bookly-tbs .btn-default-outline:hover{background-color:transparent;border-color:#5b6470}#bookly-tbs .btn-default-outline .badge{color:transparent;background-color:#5b6470}#bookly-tbs .btn-primary-outline{color:#08c;background-color:transparent;border-color:#08c}#bookly-tbs .btn-primary-outline.focus,#bookly-tbs .btn-primary-outline:focus{color:#08c;background-color:rgba(0,0,0,0);border-color:#00334d}#bookly-tbs .btn-primary-outline:hover{color:#08c;background-color:rgba(0,0,0,0);border-color:#005f8f}#bookly-tbs .btn-primary-outline.active,#bookly-tbs .btn-primary-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline{color:#08c;background-color:rgba(0,0,0,0);border-color:#005f8f}#bookly-tbs .btn-primary-outline.active.focus,#bookly-tbs .btn-primary-outline.active:focus,#bookly-tbs .btn-primary-outline.active:hover,#bookly-tbs .btn-primary-outline:active.focus,#bookly-tbs .btn-primary-outline:active:focus,#bookly-tbs .btn-primary-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline:hover{color:#08c;background-color:rgba(0,0,0,0);border-color:#00334d}#bookly-tbs .btn-primary-outline.active,#bookly-tbs .btn-primary-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline{background-image:none}#bookly-tbs .btn-primary-outline.disabled.focus,#bookly-tbs .btn-primary-outline.disabled:focus,#bookly-tbs .btn-primary-outline.disabled:hover,#bookly-tbs .btn-primary-outline[disabled].focus,#bookly-tbs .btn-primary-outline[disabled]:focus,#bookly-tbs .btn-primary-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-primary-outline.focus,fieldset[disabled] #bookly-tbs .btn-primary-outline:focus,fieldset[disabled] #bookly-tbs .btn-primary-outline:hover{background-color:transparent;border-color:#08c}#bookly-tbs .btn-primary-outline .badge{color:transparent;background-color:#08c}#bookly-tbs .btn-success-outline{color:#5cb85c;background-color:transparent;border-color:#5cb85c}#bookly-tbs .btn-success-outline.focus,#bookly-tbs .btn-success-outline:focus{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#2d672d}#bookly-tbs .btn-success-outline:hover{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#419641}#bookly-tbs .btn-success-outline.active,#bookly-tbs .btn-success-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-success-outline{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#419641}#bookly-tbs .btn-success-outline.active.focus,#bookly-tbs .btn-success-outline.active:focus,#bookly-tbs .btn-success-outline.active:hover,#bookly-tbs .btn-success-outline:active.focus,#bookly-tbs .btn-success-outline:active:focus,#bookly-tbs .btn-success-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-success-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-success-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-success-outline:hover{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#2d672d}#bookly-tbs .btn-success-outline.active,#bookly-tbs .btn-success-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-success-outline{background-image:none}#bookly-tbs .btn-success-outline.disabled.focus,#bookly-tbs .btn-success-outline.disabled:focus,#bookly-tbs .btn-success-outline.disabled:hover,#bookly-tbs .btn-success-outline[disabled].focus,#bookly-tbs .btn-success-outline[disabled]:focus,#bookly-tbs .btn-success-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-success-outline.focus,fieldset[disabled] #bookly-tbs .btn-success-outline:focus,fieldset[disabled] #bookly-tbs .btn-success-outline:hover{background-color:transparent;border-color:#5cb85c}#bookly-tbs .btn-success-outline .badge{color:transparent;background-color:#5cb85c}#bookly-tbs .btn-info-outline{color:#5bc0de;background-color:transparent;border-color:#5bc0de}#bookly-tbs .btn-info-outline.focus,#bookly-tbs .btn-info-outline:focus{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#1f7e9a}#bookly-tbs .btn-info-outline:hover{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#2aabd2}#bookly-tbs .btn-info-outline.active,#bookly-tbs .btn-info-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-info-outline{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#2aabd2}#bookly-tbs .btn-info-outline.active.focus,#bookly-tbs .btn-info-outline.active:focus,#bookly-tbs .btn-info-outline.active:hover,#bookly-tbs .btn-info-outline:active.focus,#bookly-tbs .btn-info-outline:active:focus,#bookly-tbs .btn-info-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-info-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-info-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-info-outline:hover{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#1f7e9a}#bookly-tbs .btn-info-outline.active,#bookly-tbs .btn-info-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-info-outline{background-image:none}#bookly-tbs .btn-info-outline.disabled.focus,#bookly-tbs .btn-info-outline.disabled:focus,#bookly-tbs .btn-info-outline.disabled:hover,#bookly-tbs .btn-info-outline[disabled].focus,#bookly-tbs .btn-info-outline[disabled]:focus,#bookly-tbs .btn-info-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-info-outline.focus,fieldset[disabled] #bookly-tbs .btn-info-outline:focus,fieldset[disabled] #bookly-tbs .btn-info-outline:hover{background-color:transparent;border-color:#5bc0de}#bookly-tbs .btn-info-outline .badge{color:transparent;background-color:#5bc0de}#bookly-tbs .btn-warning-outline{color:#f0ad4e;background-color:transparent;border-color:#f0ad4e}#bookly-tbs .btn-warning-outline.focus,#bookly-tbs .btn-warning-outline:focus{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#b06d0f}#bookly-tbs .btn-warning-outline:hover{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#eb9316}#bookly-tbs .btn-warning-outline.active,#bookly-tbs .btn-warning-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#eb9316}#bookly-tbs .btn-warning-outline.active.focus,#bookly-tbs .btn-warning-outline.active:focus,#bookly-tbs .btn-warning-outline.active:hover,#bookly-tbs .btn-warning-outline:active.focus,#bookly-tbs .btn-warning-outline:active:focus,#bookly-tbs .btn-warning-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline:hover{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#b06d0f}#bookly-tbs .btn-warning-outline.active,#bookly-tbs .btn-warning-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline{background-image:none}#bookly-tbs .btn-warning-outline.disabled.focus,#bookly-tbs .btn-warning-outline.disabled:focus,#bookly-tbs .btn-warning-outline.disabled:hover,#bookly-tbs .btn-warning-outline[disabled].focus,#bookly-tbs .btn-warning-outline[disabled]:focus,#bookly-tbs .btn-warning-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-warning-outline.focus,fieldset[disabled] #bookly-tbs .btn-warning-outline:focus,fieldset[disabled] #bookly-tbs .btn-warning-outline:hover{background-color:transparent;border-color:#f0ad4e}#bookly-tbs .btn-warning-outline .badge{color:transparent;background-color:#f0ad4e}#bookly-tbs .btn-danger-outline{color:#d9534f;background-color:transparent;border-color:#d9534f}#bookly-tbs .btn-danger-outline.focus,#bookly-tbs .btn-danger-outline:focus{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#8b211e}#bookly-tbs .btn-danger-outline:hover{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#c12e2a}#bookly-tbs .btn-danger-outline.active,#bookly-tbs .btn-danger-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#c12e2a}#bookly-tbs .btn-danger-outline.active.focus,#bookly-tbs .btn-danger-outline.active:focus,#bookly-tbs .btn-danger-outline.active:hover,#bookly-tbs .btn-danger-outline:active.focus,#bookly-tbs .btn-danger-outline:active:focus,#bookly-tbs .btn-danger-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline:hover{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#8b211e}#bookly-tbs .btn-danger-outline.active,#bookly-tbs .btn-danger-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline{background-image:none}#bookly-tbs .btn-danger-outline.disabled.focus,#bookly-tbs .btn-danger-outline.disabled:focus,#bookly-tbs .btn-danger-outline.disabled:hover,#bookly-tbs .btn-danger-outline[disabled].focus,#bookly-tbs .btn-danger-outline[disabled]:focus,#bookly-tbs .btn-danger-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-danger-outline.focus,fieldset[disabled] #bookly-tbs .btn-danger-outline:focus,fieldset[disabled] #bookly-tbs .btn-danger-outline:hover{background-color:transparent;border-color:#d9534f}#bookly-tbs .btn-danger-outline .badge{color:transparent;background-color:#d9534f}#bookly-tbs .btn-xlg{padding:11px 22px;font-size:15px;line-height:1.9;border-radius:4px}#bookly-tbs .callout{padding:10px;margin:21px 0;border:1px solid #e8ebf0;border-left-width:4px;border-radius:4px}#bookly-tbs .callout .callout-heading{margin-top:0;margin-bottom:5px}#bookly-tbs .callout p:last-child{margin-bottom:0}#bookly-tbs .callout+#bookly-tbs .callout{margin-top:-5px}#bookly-tbs .callout.callout-danger{border-left-color:#d9534f}#bookly-tbs .callout.callout-danger .callout-heading{color:#a94442}#bookly-tbs .callout.callout-warning{border-left-color:#f0ad4e}#bookly-tbs .callout.callout-warning .callout-heading{color:#8a6d3b}#bookly-tbs .callout.callout-info{border-left-color:#5bc0de}#bookly-tbs .callout.callout-info .callout-heading{color:#31708f}#bookly-tbs .close{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}#bookly-tbs .caret{margin-bottom:2px}#bookly-tbs .checkbox,#bookly-tbs .radio{line-height:1.4}#bookly-tbs input[type=checkbox],#bookly-tbs input[type=radio]{width:16px;height:16px}#bookly-tbs input[type=checkbox]:checked:before{margin:-3px 0 0 -4px;font:400 21px/1 dashicons}#bookly-tbs input[type=radio]:checked:before{width:8px;height:8px;margin:3px}#bookly-tbs input[type=checkbox]:not(:checked)+.bookly-toggle-label,#bookly-tbs input[type=radio]:not(:checked)+.bookly-toggle-label{color:#8a929e}#bookly-tbs select.form-control{z-index:5;height:36px;-webkit-appearance:none;padding-right:22px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDQ4IDQ4IiB3aWR0aD0iNDgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDIwbDEwIDEwIDEwLTEweiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==);background-repeat:no-repeat;background-position:-webkit-calc(100% - 4px) 50%;background-position:calc(100% - 4px) 50%;-webkit-background-size:24px 24px;background-size:24px 24px;-moz-appearance:none;appearance:none}@media screen and (min-width:0\0){#bookly-tbs select.form-control{padding:5px}}#bookly-tbs select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}#bookly-tbs .form-horizontal .form-inline .checkbox-inline,#bookly-tbs .form-horizontal .form-inline .radio-inline{padding-top:0}#bookly-tbs .form-horizontal .form-group .help-block{margin-bottom:0}#bookly-tbs button:active,#bookly-tbs button:focus,#bookly-tbs button:hover,#bookly-tbs input:active,#bookly-tbs input:focus,#bookly-tbs input:hover,#bookly-tbs textarea:active,#bookly-tbs textarea:focus,#bookly-tbs textarea:hover{outline:0}#bookly-tbs .help-block{margin-top:0;font-size:13px;line-height:1.3}#bookly-tbs .bookly-pretty input[type=file]{position:absolute;top:0;left:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;opacity:0}#bookly-tbs .bookly-pretty input[type=file]~.bookly-pretty-indicator{display:inline-block;font-weight:400}#bookly-tbs .input-group-btn:first-child>.btn,#bookly-tbs .input-group-btn:first-child>.btn-group{border-right:0}#bookly-tbs .input-group-btn:first-child>.btn:last-child{margin-right:-1px}#bookly-tbs .input-group-btn:last-child>.btn,#bookly-tbs .input-group-btn:last-child>.btn-group{border-left:0}#bookly-tbs .list-group-item .badge{margin-top:2px}#bookly-tbs .navbar-nav>li>.dropdown-menu{border-top-width:0}#bookly-tbs .navbar-text{line-height:21px}#bookly-tbs .nav-tabs>li{margin-bottom:0}#bookly-tbs .nav-tabs>li>a{margin-right:0;color:#8a929e;border:0}#bookly-tbs .nav-tabs>li>a:after{position:absolute;right:0;bottom:0;left:0;width:100%;height:0;content:" ";border-bottom:3px solid transparent}#bookly-tbs .nav-tabs>li>a:focus,#bookly-tbs .nav-tabs>li>a:hover{background-color:transparent;outline:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .nav-tabs>li>a:focus:after,#bookly-tbs .nav-tabs>li>a:hover:after{border-bottom-color:#d9dee4}#bookly-tbs .nav-tabs.nav-justified>li.active>a,#bookly-tbs .nav-tabs.nav-justified>li.active>a:focus,#bookly-tbs .nav-tabs.nav-justified>li.active>a:hover,#bookly-tbs .nav-tabs>li.active>a,#bookly-tbs .nav-tabs>li.active>a:focus,#bookly-tbs .nav-tabs>li.active>a:hover{color:#08c;border-width:0 0 1px 0}#bookly-tbs .nav-tabs.nav-justified>li.active>a:after,#bookly-tbs .nav-tabs>li.active>a:after{border-bottom-color:#08c}#bookly-tbs .nav-tabs .dropdown-menu{margin-top:0}#bookly-tbs .pager li>a,#bookly-tbs .pager li>span{line-height:1.4;color:#5b6470}#bookly-tbs .pager li>a:focus,#bookly-tbs .pager li>a:hover{color:#8a929e}#bookly-tbs .panel{-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .panel>.panel-collapse>.table td,#bookly-tbs .panel>.panel-collapse>.table th,#bookly-tbs .panel>.table td,#bookly-tbs .panel>.table th,#bookly-tbs .panel>.table-responsive>.table td,#bookly-tbs .panel>.table-responsive>.table th{border-color:#d9dee4}#bookly-tbs .panel-title{font-weight:700;line-height:1.5}#bookly-tbs .btn.btn-pill{border-radius:24px}#bookly-tbs .btn.btn-pill-left{border-top-left-radius:24px;border-bottom-left-radius:24px}#bookly-tbs .btn.btn-pill-right{border-top-right-radius:24px;border-bottom-right-radius:24px}#bookly-tbs .form-control.input-pill{border-radius:24px}#bookly-tbs .form-control.input-pill-left{border-top-left-radius:24px;border-bottom-left-radius:24px}#bookly-tbs .form-control.input-pill-right{border-top-right-radius:24px;border-bottom-right-radius:24px}#bookly-tbs .label.label-pill{border-radius:.9em}#bookly-tbs .label.label-pill-left{border-top-left-radius:.9em;border-bottom-left-radius:.9em}#bookly-tbs .label.label-pill-right{border-top-right-radius:.9em;border-bottom-right-radius:.9em}#bookly-tbs .progress-lg{height:42px;border-radius:6px}#bookly-tbs .progress-lg .progress-bar{line-height:42px}#bookly-tbs .progress-sm{height:10.5px;border-radius:3px}#bookly-tbs .progress-sm .progress-bar{line-height:10.5px}#bookly-tbs .progress-xs{height:5.25px;border-radius:3px}#bookly-tbs .progress-xs .progress-bar{line-height:5.25px}#bookly-tbs a:focus,#bookly-tbs a:hover{-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .social-behance{color:#1769ff!important}#bookly-tbs .social-fivehundredpix{color:#0a0100!important}#bookly-tbs .social-dribbble{color:#ea4c89!important}#bookly-tbs .social-dropbox{color:#1f8ce6!important}#bookly-tbs .social-email{color:#7f7f7f!important}#bookly-tbs .social-facebook{color:#3b5998!important}#bookly-tbs .social-flickr{color:#ff0084!important}#bookly-tbs .social-foursquare{color:#0072b1!important}#bookly-tbs .social-github{color:#4183c4!important}#bookly-tbs .social-google{color:#dd4b39!important}#bookly-tbs .social-instagram{color:#517fa4!important}#bookly-tbs .social-linkedin{color:#007bb6!important}#bookly-tbs .social-pinterest{color:#cb2027!important}#bookly-tbs .social-skype{color:#00aff0!important}#bookly-tbs .social-smugmug{color:#8cca1e!important}#bookly-tbs .social-tumblr{color:#32506d!important}#bookly-tbs .social-twitter{color:#00aced!important}#bookly-tbs .social-vimeo{color:#1ab7ea!important}#bookly-tbs .social-vk{color:#45668e!important}#bookly-tbs .social-youtube{color:#f33!important}#bookly-tbs .social-behance:hover{color:#4a8aff!important}#bookly-tbs .social-fivehundredpix:hover{color:#3d0600!important}#bookly-tbs .social-dribbble:hover{color:#ef7aa7!important}#bookly-tbs .social-dropbox:hover{color:#4da4eb!important}#bookly-tbs .social-email:hover{color:#999!important}#bookly-tbs .social-facebook:hover{color:#4c70ba!important}#bookly-tbs .social-flickr:hover{color:#ff339d!important}#bookly-tbs .social-foursquare:hover{color:#0093e4!important}#bookly-tbs .social-github:hover{color:#689cd0!important}#bookly-tbs .social-google:hover{color:#e47365!important}#bookly-tbs .social-instagram:hover{color:#7098b8!important}#bookly-tbs .social-linkedin:hover{color:#009de9!important}#bookly-tbs .social-pinterest:hover{color:#e03e44!important}#bookly-tbs .social-skype:hover{color:#24c4ff!important}#bookly-tbs .social-smugmug:hover{color:#a5e239!important}#bookly-tbs .social-tumblr:hover{color:#426a90!important}#bookly-tbs .social-twitter:hover{color:#21c2ff!important}#bookly-tbs .social-vimeo:hover{color:#49c6ee!important}#bookly-tbs .social-vk:hover{color:#587fae!important}#bookly-tbs .social-youtube:hover{color:#f66!important}#bookly-tbs .thumbnail{overflow:auto;-webkit-box-shadow:inset 0 0 0 2px #e8ebf0;box-shadow:inset 0 0 0 2px #e8ebf0}#bookly-tbs .thumbnail .caption p:last-child{margin-bottom:0}#bookly-tbs .thumbnail .caption .heading{margin:0 0 5px}#bookly-tbs blockquote p{font-family:georgia,"times new roman",times,serif;font-size:18px}#bookly-tbs p{font-size:15px}#bookly-tbs .bookly-letter-spacing-sm{letter-spacing:.05em}#bookly-tbs .bookly-letter-spacing-md{letter-spacing:.1em}#bookly-tbs .bookly-letter-spacing-lg{letter-spacing:.2em}#bookly-tbs .bookly-line-height-sm{line-height:1.53846154}#bookly-tbs .bookly-line-height-base{line-height:1.4}#bookly-tbs .bookly-line-height-lg{line-height:1.3333333}#bookly-tbs .bookly-line-height-computed{line-height:21px}#bookly-tbs .bookly-font-xs{font-size:12px}#bookly-tbs .bookly-font-sm{font-size:14px}#bookly-tbs .bookly-font-md{font-size:15px}#bookly-tbs .bookly-font-lg{font-size:20px}#bookly-tbs .bookly-font-smaller{font-size:13px;text-transform:uppercase}#bookly-tbs .bookly-font-lighter{font-weight:lighter}#bookly-tbs .bookly-font-normal{font-weight:400}#bookly-tbs .bookly-font-bold{font-weight:700}#bookly-tbs .bookly-font-serif{font-family:georgia,"times new roman",times,serif}#bookly-tbs .bookly-font-italic{font-style:italic}#bookly-tbs .bookly-text-wrap{word-wrap:break-word;white-space:normal}#bookly-tbs .bookly-inline{display:inline}#bookly-tbs .bookly-bl-ock{display:block}#bookly-tbs .bookly-inline-block{display:inline-block}#bookly-tbs .bookly-nowrap{white-space:nowrap}#bookly-tbs .bookly-break-word{word-wrap:break-word}#bookly-tbs .bookly-truncate{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .bookly-bottom-left,#bookly-tbs .bookly-bottom-right,#bookly-tbs .bookly-top-left,#bookly-tbs .bookly-top-right{position:absolute}#bookly-tbs .bookly-top-left,#bookly-tbs .bookly-top-right{top:0}#bookly-tbs .bookly-bottom-left,#bookly-tbs .bookly-bottom-right{bottom:0}#bookly-tbs .bookly-bottom-left,#bookly-tbs .bookly-top-left{left:0}#bookly-tbs .bookly-bottom-right,#bookly-tbs .bookly-top-right{right:0}#bookly-tbs .bookly-relative{position:relative}#bookly-tbs .bookly-fixed{position:fixed}#bookly-tbs .bookly-vertical-top{vertical-align:top}#bookly-tbs .bookly-vertical-middle{vertical-align:middle}#bookly-tbs .bookly-vertical-bottom{vertical-align:bottom}#bookly-tbs .bookly-margin-horizontal-remove,#bookly-tbs .bookly-margin-left-remove,#bookly-tbs .bookly-margin-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-remove,#bookly-tbs .bookly-margin-remove,#bookly-tbs .bookly-margin-right-remove{margin-right:0!important}#bookly-tbs .bookly-margin-remove,#bookly-tbs .bookly-margin-top-remove,#bookly-tbs .bookly-margin-vertical-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-remove,#bookly-tbs .bookly-margin-remove,#bookly-tbs .bookly-margin-vertical-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-xs,#bookly-tbs .bookly-margin-left-xs,#bookly-tbs .bookly-margin-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-xs,#bookly-tbs .bookly-margin-right-xs,#bookly-tbs .bookly-margin-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-top-xs,#bookly-tbs .bookly-margin-vertical-xs,#bookly-tbs .bookly-margin-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-xs,#bookly-tbs .bookly-margin-vertical-xs,#bookly-tbs .bookly-margin-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-sm,#bookly-tbs .bookly-margin-left-sm,#bookly-tbs .bookly-margin-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-sm,#bookly-tbs .bookly-margin-right-sm,#bookly-tbs .bookly-margin-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-sm,#bookly-tbs .bookly-margin-top-sm,#bookly-tbs .bookly-margin-vertical-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-sm,#bookly-tbs .bookly-margin-sm,#bookly-tbs .bookly-margin-vertical-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-md,#bookly-tbs .bookly-margin-left-md,#bookly-tbs .bookly-margin-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-md,#bookly-tbs .bookly-margin-md,#bookly-tbs .bookly-margin-right-md{margin-right:12px!important}#bookly-tbs .bookly-margin-md,#bookly-tbs .bookly-margin-top-md,#bookly-tbs .bookly-margin-vertical-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-md,#bookly-tbs .bookly-margin-md,#bookly-tbs .bookly-margin-vertical-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-lg,#bookly-tbs .bookly-margin-left-lg,#bookly-tbs .bookly-margin-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-lg,#bookly-tbs .bookly-margin-lg,#bookly-tbs .bookly-margin-right-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-lg,#bookly-tbs .bookly-margin-top-lg,#bookly-tbs .bookly-margin-vertical-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-lg,#bookly-tbs .bookly-margin-lg,#bookly-tbs .bookly-margin-vertical-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-xlg,#bookly-tbs .bookly-margin-left-xlg,#bookly-tbs .bookly-margin-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-xlg,#bookly-tbs .bookly-margin-right-xlg,#bookly-tbs .bookly-margin-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-top-xlg,#bookly-tbs .bookly-margin-vertical-xlg,#bookly-tbs .bookly-margin-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-xlg,#bookly-tbs .bookly-margin-vertical-xlg,#bookly-tbs .bookly-margin-xlg{margin-bottom:32px!important}@media (max-width:767px){#bookly-tbs .bookly-margin-horizontal-screenxs-remove,#bookly-tbs .bookly-margin-left-screenxs-remove,#bookly-tbs .bookly-margin-screenxs-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-screenxs-remove,#bookly-tbs .bookly-margin-right-screenxs-remove,#bookly-tbs .bookly-margin-screenxs-remove{margin-right:0!important}#bookly-tbs .bookly-margin-screenxs-remove,#bookly-tbs .bookly-margin-top-screenxs-remove,#bookly-tbs .bookly-margin-vertical-screenxs-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-screenxs-remove,#bookly-tbs .bookly-margin-screenxs-remove,#bookly-tbs .bookly-margin-vertical-screenxs-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xs,#bookly-tbs .bookly-margin-left-screenxs-xs,#bookly-tbs .bookly-margin-screenxs-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xs,#bookly-tbs .bookly-margin-right-screenxs-xs,#bookly-tbs .bookly-margin-screenxs-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-screenxs-xs,#bookly-tbs .bookly-margin-top-screenxs-xs,#bookly-tbs .bookly-margin-vertical-screenxs-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-screenxs-xs,#bookly-tbs .bookly-margin-screenxs-xs,#bookly-tbs .bookly-margin-vertical-screenxs-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-sm,#bookly-tbs .bookly-margin-left-screenxs-sm,#bookly-tbs .bookly-margin-screenxs-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-sm,#bookly-tbs .bookly-margin-right-screenxs-sm,#bookly-tbs .bookly-margin-screenxs-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-screenxs-sm,#bookly-tbs .bookly-margin-top-screenxs-sm,#bookly-tbs .bookly-margin-vertical-screenxs-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-screenxs-sm,#bookly-tbs .bookly-margin-screenxs-sm,#bookly-tbs .bookly-margin-vertical-screenxs-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-md,#bookly-tbs .bookly-margin-left-screenxs-md,#bookly-tbs .bookly-margin-screenxs-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-md,#bookly-tbs .bookly-margin-right-screenxs-md,#bookly-tbs .bookly-margin-screenxs-md{margin-right:12px!important}#bookly-tbs .bookly-margin-screenxs-md,#bookly-tbs .bookly-margin-top-screenxs-md,#bookly-tbs .bookly-margin-vertical-screenxs-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-screenxs-md,#bookly-tbs .bookly-margin-screenxs-md,#bookly-tbs .bookly-margin-vertical-screenxs-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-lg,#bookly-tbs .bookly-margin-left-screenxs-lg,#bookly-tbs .bookly-margin-screenxs-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-lg,#bookly-tbs .bookly-margin-right-screenxs-lg,#bookly-tbs .bookly-margin-screenxs-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-screenxs-lg,#bookly-tbs .bookly-margin-top-screenxs-lg,#bookly-tbs .bookly-margin-vertical-screenxs-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-screenxs-lg,#bookly-tbs .bookly-margin-screenxs-lg,#bookly-tbs .bookly-margin-vertical-screenxs-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xlg,#bookly-tbs .bookly-margin-left-screenxs-xlg,#bookly-tbs .bookly-margin-screenxs-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xlg,#bookly-tbs .bookly-margin-right-screenxs-xlg,#bookly-tbs .bookly-margin-screenxs-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-screenxs-xlg,#bookly-tbs .bookly-margin-top-screenxs-xlg,#bookly-tbs .bookly-margin-vertical-screenxs-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-screenxs-xlg,#bookly-tbs .bookly-margin-screenxs-xlg,#bookly-tbs .bookly-margin-vertical-screenxs-xlg{margin-bottom:32px!important}}@media (min-width:768px){#bookly-tbs .bookly-margin-horizontal-screensm-remove,#bookly-tbs .bookly-margin-left-screensm-remove,#bookly-tbs .bookly-margin-screensm-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-screensm-remove,#bookly-tbs .bookly-margin-right-screensm-remove,#bookly-tbs .bookly-margin-screensm-remove{margin-right:0!important}#bookly-tbs .bookly-margin-screensm-remove,#bookly-tbs .bookly-margin-top-screensm-remove,#bookly-tbs .bookly-margin-vertical-screensm-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-screensm-remove,#bookly-tbs .bookly-margin-screensm-remove,#bookly-tbs .bookly-margin-vertical-screensm-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-screensm-xs,#bookly-tbs .bookly-margin-left-screensm-xs,#bookly-tbs .bookly-margin-screensm-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-screensm-xs,#bookly-tbs .bookly-margin-right-screensm-xs,#bookly-tbs .bookly-margin-screensm-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-screensm-xs,#bookly-tbs .bookly-margin-top-screensm-xs,#bookly-tbs .bookly-margin-vertical-screensm-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-screensm-xs,#bookly-tbs .bookly-margin-screensm-xs,#bookly-tbs .bookly-margin-vertical-screensm-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-screensm-sm,#bookly-tbs .bookly-margin-left-screensm-sm,#bookly-tbs .bookly-margin-screensm-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-screensm-sm,#bookly-tbs .bookly-margin-right-screensm-sm,#bookly-tbs .bookly-margin-screensm-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-screensm-sm,#bookly-tbs .bookly-margin-top-screensm-sm,#bookly-tbs .bookly-margin-vertical-screensm-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-screensm-sm,#bookly-tbs .bookly-margin-screensm-sm,#bookly-tbs .bookly-margin-vertical-screensm-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-screensm-md,#bookly-tbs .bookly-margin-left-screensm-md,#bookly-tbs .bookly-margin-screensm-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-screensm-md,#bookly-tbs .bookly-margin-right-screensm-md,#bookly-tbs .bookly-margin-screensm-md{margin-right:12px!important}#bookly-tbs .bookly-margin-screensm-md,#bookly-tbs .bookly-margin-top-screensm-md,#bookly-tbs .bookly-margin-vertical-screensm-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-screensm-md,#bookly-tbs .bookly-margin-screensm-md,#bookly-tbs .bookly-margin-vertical-screensm-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-screensm-lg,#bookly-tbs .bookly-margin-left-screensm-lg,#bookly-tbs .bookly-margin-screensm-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-screensm-lg,#bookly-tbs .bookly-margin-right-screensm-lg,#bookly-tbs .bookly-margin-screensm-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-screensm-lg,#bookly-tbs .bookly-margin-top-screensm-lg,#bookly-tbs .bookly-margin-vertical-screensm-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-screensm-lg,#bookly-tbs .bookly-margin-screensm-lg,#bookly-tbs .bookly-margin-vertical-screensm-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-screensm-xlg,#bookly-tbs .bookly-margin-left-screensm-xlg,#bookly-tbs .bookly-margin-screensm-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-screensm-xlg,#bookly-tbs .bookly-margin-right-screensm-xlg,#bookly-tbs .bookly-margin-screensm-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-screensm-xlg,#bookly-tbs .bookly-margin-top-screensm-xlg,#bookly-tbs .bookly-margin-vertical-screensm-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-screensm-xlg,#bookly-tbs .bookly-margin-screensm-xlg,#bookly-tbs .bookly-margin-vertical-screensm-xlg{margin-bottom:32px!important}}@media (min-width:992px){#bookly-tbs .bookly-margin-horizontal-screenmd-remove,#bookly-tbs .bookly-margin-left-screenmd-remove,#bookly-tbs .bookly-margin-screenmd-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-screenmd-remove,#bookly-tbs .bookly-margin-right-screenmd-remove,#bookly-tbs .bookly-margin-screenmd-remove{margin-right:0!important}#bookly-tbs .bookly-margin-screenmd-remove,#bookly-tbs .bookly-margin-top-screenmd-remove,#bookly-tbs .bookly-margin-vertical-screenmd-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-screenmd-remove,#bookly-tbs .bookly-margin-screenmd-remove,#bookly-tbs .bookly-margin-vertical-screenmd-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xs,#bookly-tbs .bookly-margin-left-screenmd-xs,#bookly-tbs .bookly-margin-screenmd-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xs,#bookly-tbs .bookly-margin-right-screenmd-xs,#bookly-tbs .bookly-margin-screenmd-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-screenmd-xs,#bookly-tbs .bookly-margin-top-screenmd-xs,#bookly-tbs .bookly-margin-vertical-screenmd-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-screenmd-xs,#bookly-tbs .bookly-margin-screenmd-xs,#bookly-tbs .bookly-margin-vertical-screenmd-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-sm,#bookly-tbs .bookly-margin-left-screenmd-sm,#bookly-tbs .bookly-margin-screenmd-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-sm,#bookly-tbs .bookly-margin-right-screenmd-sm,#bookly-tbs .bookly-margin-screenmd-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-screenmd-sm,#bookly-tbs .bookly-margin-top-screenmd-sm,#bookly-tbs .bookly-margin-vertical-screenmd-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-screenmd-sm,#bookly-tbs .bookly-margin-screenmd-sm,#bookly-tbs .bookly-margin-vertical-screenmd-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-md,#bookly-tbs .bookly-margin-left-screenmd-md,#bookly-tbs .bookly-margin-screenmd-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-md,#bookly-tbs .bookly-margin-right-screenmd-md,#bookly-tbs .bookly-margin-screenmd-md{margin-right:12px!important}#bookly-tbs .bookly-margin-screenmd-md,#bookly-tbs .bookly-margin-top-screenmd-md,#bookly-tbs .bookly-margin-vertical-screenmd-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-screenmd-md,#bookly-tbs .bookly-margin-screenmd-md,#bookly-tbs .bookly-margin-vertical-screenmd-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-lg,#bookly-tbs .bookly-margin-left-screenmd-lg,#bookly-tbs .bookly-margin-screenmd-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-lg,#bookly-tbs .bookly-margin-right-screenmd-lg,#bookly-tbs .bookly-margin-screenmd-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-screenmd-lg,#bookly-tbs .bookly-margin-top-screenmd-lg,#bookly-tbs .bookly-margin-vertical-screenmd-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-screenmd-lg,#bookly-tbs .bookly-margin-screenmd-lg,#bookly-tbs .bookly-margin-vertical-screenmd-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xlg,#bookly-tbs .bookly-margin-left-screenmd-xlg,#bookly-tbs .bookly-margin-screenmd-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xlg,#bookly-tbs .bookly-margin-right-screenmd-xlg,#bookly-tbs .bookly-margin-screenmd-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-screenmd-xlg,#bookly-tbs .bookly-margin-top-screenmd-xlg,#bookly-tbs .bookly-margin-vertical-screenmd-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-screenmd-xlg,#bookly-tbs .bookly-margin-screenmd-xlg,#bookly-tbs .bookly-margin-vertical-screenmd-xlg{margin-bottom:32px!important}}#bookly-tbs .bookly-padding-horizontal-remove,#bookly-tbs .bookly-padding-left-remove,#bookly-tbs .bookly-padding-remove{padding-left:0!important}#bookly-tbs .bookly-padding-horizontal-remove,#bookly-tbs .bookly-padding-remove,#bookly-tbs .bookly-padding-right-remove{padding-right:0!important}#bookly-tbs .bookly-padding-remove,#bookly-tbs .bookly-padding-top-remove,#bookly-tbs .bookly-padding-vertical-remove{padding-top:0!important}#bookly-tbs .bookly-padding-bottom-remove,#bookly-tbs .bookly-padding-remove,#bookly-tbs .bookly-padding-vertical-remove{padding-bottom:0!important}#bookly-tbs .bookly-padding-horizontal-xs,#bookly-tbs .bookly-padding-left-xs,#bookly-tbs .bookly-padding-xs{padding-left:5px!important}#bookly-tbs .bookly-padding-horizontal-xs,#bookly-tbs .bookly-padding-right-xs,#bookly-tbs .bookly-padding-xs{padding-right:5px!important}#bookly-tbs .bookly-padding-top-xs,#bookly-tbs .bookly-padding-vertical-xs,#bookly-tbs .bookly-padding-xs{padding-top:5px!important}#bookly-tbs .bookly-padding-bottom-xs,#bookly-tbs .bookly-padding-vertical-xs,#bookly-tbs .bookly-padding-xs{padding-bottom:5px!important}#bookly-tbs .bookly-padding-horizontal-sm,#bookly-tbs .bookly-padding-left-sm,#bookly-tbs .bookly-padding-sm{padding-left:10px!important}#bookly-tbs .bookly-padding-horizontal-sm,#bookly-tbs .bookly-padding-right-sm,#bookly-tbs .bookly-padding-sm{padding-right:10px!important}#bookly-tbs .bookly-padding-sm,#bookly-tbs .bookly-padding-top-sm,#bookly-tbs .bookly-padding-vertical-sm{padding-top:10px!important}#bookly-tbs .bookly-padding-bottom-sm,#bookly-tbs .bookly-padding-sm,#bookly-tbs .bookly-padding-vertical-sm{padding-bottom:10px!important}#bookly-tbs .bookly-padding-horizontal-md,#bookly-tbs .bookly-padding-left-md,#bookly-tbs .bookly-padding-md{padding-left:12px!important}#bookly-tbs .bookly-padding-horizontal-md,#bookly-tbs .bookly-padding-md,#bookly-tbs .bookly-padding-right-md{padding-right:12px!important}#bookly-tbs .bookly-padding-md,#bookly-tbs .bookly-padding-top-md,#bookly-tbs .bookly-padding-vertical-md{padding-top:12px!important}#bookly-tbs .bookly-padding-bottom-md,#bookly-tbs .bookly-padding-md,#bookly-tbs .bookly-padding-vertical-md{padding-bottom:12px!important}#bookly-tbs .bookly-padding-horizontal-lg,#bookly-tbs .bookly-padding-left-lg,#bookly-tbs .bookly-padding-lg{padding-left:16px!important}#bookly-tbs .bookly-padding-horizontal-lg,#bookly-tbs .bookly-padding-lg,#bookly-tbs .bookly-padding-right-lg{padding-right:16px!important}#bookly-tbs .bookly-padding-lg,#bookly-tbs .bookly-padding-top-lg,#bookly-tbs .bookly-padding-vertical-lg{padding-top:16px!important}#bookly-tbs .bookly-padding-bottom-lg,#bookly-tbs .bookly-padding-lg,#bookly-tbs .bookly-padding-vertical-lg{padding-bottom:16px!important}#bookly-tbs .bookly-padding-horizontal-xlg,#bookly-tbs .bookly-padding-left-xlg,#bookly-tbs .bookly-padding-xlg{padding-left:32px!important}#bookly-tbs .bookly-padding-horizontal-xlg,#bookly-tbs .bookly-padding-right-xlg,#bookly-tbs .bookly-padding-xlg{padding-right:32px!important}#bookly-tbs .bookly-padding-top-xlg,#bookly-tbs .bookly-padding-vertical-xlg,#bookly-tbs .bookly-padding-xlg{padding-top:32px!important}#bookly-tbs .bookly-padding-bottom-xlg,#bookly-tbs .bookly-padding-vertical-xlg,#bookly-tbs .bookly-padding-xlg{padding-bottom:32px!important}#bookly-tbs .bookly-flexbox{display:table;width:100%;max-width:100%;height:100%}#bookly-tbs .bookly-flexbox .bookly-flex-row{display:table-row}#bookly-tbs .bookly-flexbox .bookly-flex-cell{display:table-cell;height:100%;word-wrap:break-word}@media (min-width:992px){#bookly-tbs .bookly-flexbox .bookly-flex-cell-sm{display:table-cell;height:100%;word-wrap:break-word}}#bookly-tbs .bookly-bg-transparent{background-color:transparent}#bookly-tbs .bookly-bg-white{background-color:#fff}#bookly-tbs .bookly-color-white{color:#fff}#bookly-tbs .bookly-bg-black{background-color:#000}#bookly-tbs .bookly-color-black{color:#000}#bookly-tbs .bookly-bg-gray{background-color:#8a929e}#bookly-tbs .bookly-color-gray{color:#8a929e}#bookly-tbs .bookly-bg-light{background-color:#d9dee4}#bookly-tbs .bookly-color-light{color:#d9dee4}#bookly-tbs .bookly-bg-brand-primary{background-color:#08c}#bookly-tbs .bookly-color-brand-primary{color:#08c}#bookly-tbs .bookly-bg-brand-success{background-color:#5cb85c}#bookly-tbs .bookly-color-brand-success{color:#5cb85c}#bookly-tbs .bookly-bg-brand-info{background-color:#5bc0de}#bookly-tbs .bookly-color-brand-info{color:#5bc0de}#bookly-tbs .bookly-bg-brand-warning{background-color:#f0ad4e}#bookly-tbs .bookly-color-brand-warning{color:#f0ad4e}#bookly-tbs .bookly-bg-brand-danger{background-color:#d9534f}#bookly-tbs .bookly-color-brand-danger{color:#d9534f}#bookly-tbs .bookly-cursor-pointer{cursor:pointer}#bookly-tbs .bookly-cursor-move{cursor:move}@media (max-width:767px){#bookly-tbs .bookly-text-xs-center{text-align:center!important}#bookly-tbs .bookly-text-xs-left{text-align:left!important}#bookly-tbs .bookly-text-xs-right{text-align:right!important}#bookly-tbs .bookly-btn-block-xs{display:block;width:100%}}#bookly-tbs table.dataTable{max-width:none!important;margin-top:6px!important;margin-bottom:6px!important;clear:both;border-collapse:separate!important}#bookly-tbs table.dataTable td,#bookly-tbs table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs table.dataTable td.dataTables_empty,#bookly-tbs table.dataTable th.dataTables_empty{text-align:center}#bookly-tbs table.dataTable.nowrap td,#bookly-tbs table.dataTable.nowrap th{white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_length label{font-weight:400;text-align:left;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_length select{display:inline-block;width:75px}#bookly-tbs div.dataTables_wrapper div.dataTables_filter{text-align:right}#bookly-tbs div.dataTables_wrapper div.dataTables_filter label{font-weight:400;text-align:left;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_filter input{display:inline-block;width:auto;margin-left:.5em}#bookly-tbs div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_paginate{margin:0;text-align:right;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;padding:1em 0;margin-top:-26px;margin-left:-100px;text-align:center}#bookly-tbs table.dataTable thead>tr>td.sorting,#bookly-tbs table.dataTable thead>tr>td.sorting_asc,#bookly-tbs table.dataTable thead>tr>td.sorting_desc,#bookly-tbs table.dataTable thead>tr>th.sorting,#bookly-tbs table.dataTable thead>tr>th.sorting_asc,#bookly-tbs table.dataTable thead>tr>th.sorting_desc{padding-right:30px}#bookly-tbs table.dataTable thead>tr>td:active,#bookly-tbs table.dataTable thead>tr>th:active{outline:0}#bookly-tbs table.dataTable thead .sorting,#bookly-tbs table.dataTable thead .sorting_asc,#bookly-tbs table.dataTable thead .sorting_asc_disabled,#bookly-tbs table.dataTable thead .sorting_desc,#bookly-tbs table.dataTable thead .sorting_desc_disabled{position:relative;cursor:pointer}#bookly-tbs table.dataTable thead .sorting:after,#bookly-tbs table.dataTable thead .sorting_asc:after,#bookly-tbs table.dataTable thead .sorting_asc_disabled:after,#bookly-tbs table.dataTable thead .sorting_desc:after,#bookly-tbs table.dataTable thead .sorting_desc_disabled:after{position:absolute;right:8px;bottom:-webkit-calc(50% - 9px);bottom:calc(50% - 9px);display:block;font-family:'Glyphicons Halflings';font-size:12px;opacity:.5}#bookly-tbs table.dataTable thead .sorting:after{content:"\e150";opacity:.2}#bookly-tbs table.dataTable thead .sorting_asc:after{content:"\e155"}#bookly-tbs table.dataTable thead .sorting_desc:after{content:"\e156"}#bookly-tbs table.dataTable thead .sorting_asc_disabled:after,#bookly-tbs table.dataTable thead .sorting_desc_disabled:after{color:#eee}#bookly-tbs div.dataTables_scrollHead table.dataTable{margin-bottom:0!important}#bookly-tbs div.dataTables_scrollBody table{margin-top:0!important;margin-bottom:0!important;border-top:none}#bookly-tbs div.dataTables_scrollBody table thead .sorting:after,#bookly-tbs div.dataTables_scrollBody table thead .sorting_asc:after,#bookly-tbs div.dataTables_scrollBody table thead .sorting_desc:after{display:none}#bookly-tbs div.dataTables_scrollBody table tbody tr:first-child td,#bookly-tbs div.dataTables_scrollBody table tbody tr:first-child th{border-top:none}#bookly-tbs div.dataTables_scrollFoot table{margin-top:0!important;border-top:none}@media screen and (max-width:767px){#bookly-tbs div.dataTables_wrapper div.dataTables_filter,#bookly-tbs div.dataTables_wrapper div.dataTables_info,#bookly-tbs div.dataTables_wrapper div.dataTables_length,#bookly-tbs div.dataTables_wrapper div.dataTables_paginate{text-align:center}}#bookly-tbs table.dataTable.table-condensed>thead>tr>th{padding-right:20px}#bookly-tbs table.dataTable.table-condensed .sorting:after,#bookly-tbs table.dataTable.table-condensed .sorting_asc:after,#bookly-tbs table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}#bookly-tbs table.table-bordered.dataTable td,#bookly-tbs table.table-bordered.dataTable th{border-left-width:0}#bookly-tbs table.table-bordered.dataTable td:last-child,#bookly-tbs table.table-bordered.dataTable th:last-child{border-right-width:0}#bookly-tbs table.table-bordered.dataTable tbody td,#bookly-tbs table.table-bordered.dataTable tbody th{border-bottom-width:0}#bookly-tbs div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}#bookly-tbs div.table-responsive>div.dataTables_wrapper>div.row{margin:0}#bookly-tbs div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}#bookly-tbs div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0}#bookly-tbs div.dt-button-info{position:fixed;top:50%;left:50%;z-index:21;width:400px;margin-top:-100px;margin-left:-200px;text-align:center;background-color:#fff;border:2px solid #111;border-radius:3px;-webkit-box-shadow:3px 3px 8px rgba(0,0,0,.3);box-shadow:3px 3px 8px rgba(0,0,0,.3)}#bookly-tbs div.dt-button-info h2{padding:.5em;margin:0;font-weight:400;background-color:#f3f3f3;border-bottom:1px solid #ddd}#bookly-tbs div.dt-button-info>div{padding:1em}#bookly-tbs ul.dt-button-collection.dropdown-menu{z-index:2002;display:block;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}#bookly-tbs ul.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid}#bookly-tbs ul.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}#bookly-tbs ul.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}#bookly-tbs ul.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}#bookly-tbs div.dt-button-background{position:fixed;top:0;left:0;z-index:2001;width:100%;height:100%}@media screen and (max-width:767px){#bookly-tbs div.dt-buttons{float:none;width:100%;margin-bottom:.5em;text-align:center}#bookly-tbs div.dt-buttons a.btn{float:none}}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th.child{cursor:default!important}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before{display:none!important}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child{position:relative;padding-left:30px;cursor:pointer}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child:before{position:absolute;top:9px;left:4px;display:block;width:18px;height:18px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;font-family:'Courier New',Courier,monospace;font-size:18px;font-weight:700;line-height:18px;color:#5b6470;text-align:center;content:'+';background-color:transparent;border:0;border-radius:18px;-webkit-box-shadow:0 0 2px #5b6470;box-shadow:0 0 2px #5b6470}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:transparent}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr.child td:before{display:none}#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;width:14px;height:14px;line-height:14px;text-indent:3px;border-radius:14px}#bookly-tbs table.dataTable.dtr-column>tbody>tr>td.control,#bookly-tbs table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}#bookly-tbs table.dataTable.dtr-column>tbody>tr>td.control:before,#bookly-tbs table.dataTable.dtr-column>tbody>tr>th.control:before{position:absolute;top:50%;left:50%;display:block;width:16px;height:16px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;margin-top:-10px;margin-left:-10px;font-family:'Courier New',Courier,monospace;line-height:14px;color:#fff;text-align:center;content:'+';background-color:#337ab7;border:2px solid #fff;border-radius:14px;-webkit-box-shadow:0 0 3px #444;box-shadow:0 0 3px #444}#bookly-tbs table.dataTable.dtr-column>tbody>tr.parent td.control:before,#bookly-tbs table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}#bookly-tbs table.dataTable>tbody>tr.child{padding:.5em 1em}#bookly-tbs table.dataTable>tbody>tr.child:hover{background:0 0!important}#bookly-tbs table.dataTable>tbody>tr.child ul{display:inline-block;width:100%;padding:0;margin:0;list-style-type:none}#bookly-tbs table.dataTable>tbody>tr.child ul li{padding:.3em 0;margin-bottom:.3em;border-bottom:1px solid #efefef}#bookly-tbs table.dataTable>tbody>tr.child ul li:first-child{padding-top:0}#bookly-tbs table.dataTable>tbody>tr.child ul li:last-child{border-bottom:none}#bookly-tbs table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:700}#bookly-tbs div.dtr-modal{position:fixed;top:0;left:0;z-index:100;width:100%;height:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:10em 1em}#bookly-tbs div.dtr-modal div.dtr-modal-display{position:absolute;top:0;right:0;bottom:0;left:0;z-index:102;width:50%;height:50%;margin:auto;overflow:auto;background-color:#f5f5f7;border:1px solid #000;border-radius:.5em;-webkit-box-shadow:0 12px 30px rgba(0,0,0,.6);box-shadow:0 12px 30px rgba(0,0,0,.6)}#bookly-tbs div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}#bookly-tbs div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;z-index:12;width:22px;height:22px;text-align:center;cursor:pointer;background-color:#f9f9f9;border:1px solid #eaeaea;border-radius:3px}#bookly-tbs div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}#bookly-tbs div.dtr-modal div.dtr-modal-background{position:fixed;top:0;right:0;bottom:0;left:0;z-index:101;background:rgba(0,0,0,.6)}@media screen and (max-width:767px){#bookly-tbs div.dtr-modal div.dtr-modal-display{width:95%}}#bookly-tbs div.dtr-bs-modal table.table tr:first-child td{border-top:none}#bookly-tbs table.dt-rowReorder-float{position:absolute!important;z-index:2001;table-layout:fixed;outline:2px solid #337ab7;outline-offset:-2px;opacity:.8}#bookly-tbs tr.dt-rowReorder-moving{outline:2px solid #888;outline-offset:-2px}#bookly-tbs body.dt-rowReorder-noOverflow{overflow-x:hidden}#bookly-tbs table.dataTable td.reorder{text-align:center;cursor:move}#bookly-tbs .jCal-wrap{margin-right:-10px;margin-left:-10px}#bookly-tbs .jCal{position:relative;width:100%}#bookly-tbs .jCalMo{position:relative;display:block;padding:0 15px;margin-bottom:15px;white-space:nowrap}@media (min-width:768px){#bookly-tbs .jCalMo{height:257px}}#bookly-tbs .jCal .month,#bookly-tbs .jCal .monthName,#bookly-tbs .jCal .monthSelect,#bookly-tbs .jCal .monthYear{float:left}#bookly-tbs .jCal .monthName{width:100%;padding:10px 0;font-weight:700;text-align:center}#bookly-tbs .jCal .monthYear{float:right;text-align:left}#bookly-tbs .jCal .month{width:100%}#bookly-tbs .jCal .monthSelect{background:#e8ebf0}#bookly-tbs .jCal .monthSelector{position:absolute}#bookly-tbs .jCal .monthSelectorShadow{position:absolute;padding:0;background:#8a929e}#bookly-tbs .jCal .monthNameHover,#bookly-tbs .jCal .monthYearHover{color:#8a929e;background:#e8ebf0}#bookly-tbs .jCal .monthSelectHover{color:#fff;background:#08c}#bookly-tbs .jCalMo .aday,#bookly-tbs .jCalMo .day,#bookly-tbs .jCalMo .dow,#bookly-tbs .jCalMo .invday,#bookly-tbs .jCalMo .overDay,#bookly-tbs .jCalMo .pday,#bookly-tbs .jCalMo .selectedDay{position:relative;float:left;width:-webkit-calc(14.2857% + 1px);width:calc(14.2857% + 1px);margin-right:-1px;text-align:center;cursor:default;border:1px solid #e8ebf0;border-width:0 1px 1px 1px}#bookly-tbs .jCalMo .dow{font-size:12px;line-height:30px;background:#e8ebf0;border-bottom:0}#bookly-tbs .jCalMo .day{font-size:13px;line-height:30px;cursor:pointer;background:#fff}#bookly-tbs .jCalMo .invday{color:#8a929e;text-decoration:line-through;background:#e8ebf0}#bookly-tbs .jCalMo .aday,#bookly-tbs .jCalMo .pday{font-size:13px;line-height:30px;color:#d9dee4;background:rgba(232,235,240,.3)}#bookly-tbs .jCalMo .overDay{color:#3e424a;background:rgba(0,136,204,.2)}#bookly-tbs .jCalMo .holidayDay{color:#fff;background:#f0ad4e}#bookly-tbs .jCalMo .holidayDay.repeatDay{color:#fff;background:#d9534f}#bookly-tbs .jCalMo .selectedDay,#bookly-tbs .jCalMo .selectedDay.repeatDay{color:#fff;background:#08c}#bookly-tbs .jCal .left,#bookly-tbs .jCal .right{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bookly-tbs .jCalMask,#bookly-tbs .jCalMove{position:absolute;width:700px;height:930px;overflow:hidden}@media (min-width:768px){#bookly-tbs .jCalMo{float:left;width:50%}}@media (min-width:1200px){#bookly-tbs .jCalMo{float:left;width:33.33333333%}}#bookly-tbs .bookly-loading{position:relative;height:100px}#bookly-tbs .bookly-loading:before{position:absolute;top:-webkit-calc(50% - 16px);top:calc(50% - 16px);left:-webkit-calc(50% - 16px);left:calc(50% - 16px);width:32px;height:32px;content:'';background:url(../../images/ajax_loader_32x32.gif) no-repeat;-webkit-background-size:contain;background-size:contain}#bookly-tbs .bookly-loading-16{position:relative;display:inline-block;min-width:16px;min-height:16px}#bookly-tbs .bookly-loading-16:before{position:absolute;top:-webkit-calc(50% - 8px);top:calc(50% - 8px);left:-webkit-calc(50% - 8px);left:calc(50% - 8px);width:16px;height:16px;content:'';background:url(../../images/loading.gif) no-repeat;-webkit-background-size:contain;background-size:contain}#bookly-tbs .select2 .select2-selection{height:35px!important;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .select2 .select2-selection__choice{display:none}#bookly-tbs .select2 .select2-selection ul{padding:0 16px;margin-bottom:0}#bookly-tbs .select2 .select2-search{float:none;margin:6px 0}#bookly-tbs .select2 .select2-search__field{width:100%!important;padding:0;margin:0;border:0;-webkit-box-shadow:none!important;box-shadow:none!important}#bookly-tbs .select2 .select2-selection__clear{top:-2px}#bookly-tbs .select2 .select2-selection__arrow{top:-4px}#bookly-tbs .bookly-no-borders,#bookly-tbs .bookly-no-borders td{border:0!important}#bookly-tbs .panel.bookly-main{border-color:#d9dee4;border-width:1px}@media (min-width:992px){#bookly-tbs .panel.bookly-main>.panel-body{padding:25px}}#bookly-tbs .panel.bookly-main .panel-body+.panel-footer{margin:0 15px 15px}@media (min-width:992px){#bookly-tbs .panel.bookly-main .panel-body+.panel-footer{margin:0 25px 25px}}#bookly-tbs .panel.bookly-panel-unborder,#bookly-tbs .panel.bookly-panel-unborder .panel-heading,#bookly-tbs .panel.bookly-panel-unborder>.list-group .list-group-item,#bookly-tbs .panel.bookly-panel-unborder>.panel-collapse>.list-group .list-group-item{border-width:0}#bookly-tbs .panel.bookly-panel-unborder .panel-heading{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel .panel-heading .bookly-font-smaller{padding-top:4px}#bookly-tbs .panel .panel-footer{padding:21px 0 0 0;background-color:transparent}@media (min-width:768px){#bookly-tbs .panel .panel-footer{text-align:right}}@media (max-width:767px){#bookly-tbs .panel .panel-footer .btn{float:none!important}}#bookly-tbs .panel .panel-body .bookly-codes input{width:242px;border:none}#bookly-tbs .panel .panel-body #bookly-prices tr td:nth-child(4),#bookly-tbs .panel .panel-body #bookly-prices tr td:nth-child(5){text-align:right}#bookly-tbs .panel .padding-lr-none{padding-right:0;padding-left:0}#bookly-tbs .panel .panel-group .panel-footer{border-top:1px solid #e8ebf0}#bookly-tbs .bookly-collapse{margin-bottom:16px!important}#bookly-tbs .bookly-collapse a[data-toggle=collapse]{padding-right:25px;vertical-align:middle;background:url(../../../resources/images/notifications-arrow-up.png) 100% 50% no-repeat;-webkit-background-size:17px 17px!important;background-size:17px 17px!important;outline:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .bookly-collapse a[data-toggle=collapse].collapsed{background:url(../../../resources/images/notifications-arrow-down.png) 100% 50% no-repeat}#bookly-tbs .help-block{margin-top:-5px;margin-bottom:7px}@media (min-width:768px){#bookly-tbs .form-inline .form-group+.form-group,#bookly-tbs .modal-footer .btn+.btn,#bookly-tbs .page-header .bookly-support-panel>*+*,#bookly-tbs .page-header .popover+.btn,#bookly-tbs .panel-footer .btn+.btn:not(.bookly-btn-unborder){margin-left:12px}}#bookly-tbs .bookly-block-head{margin-bottom:20px}#bookly-tbs .intl-tel-input{display:block}#bookly-tbs .intl-tel-input .flag-container{right:0;left:0}#bookly-tbs .intl-tel-input .selected-flag{width:42px;padding:0 0 0 8px}#bookly-tbs .intl-tel-input .selected-flag .arrow{right:4px;left:auto;border-top:4px solid #000;border-right:3px solid transparent;border-left:3px solid transparent}#bookly-tbs .intl-tel-input .iti-flag{background-image:url(../../../../frontend/resources/images/flags.png)}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (min-resolution:2dppx){#bookly-tbs .intl-tel-input .iti-flag{background-image:url(../../../../frontend/resources/images/flags@2x.png)}}#bookly-tbs .intl-tel-input .form-control{padding-left:45px}#bookly-tbs .intl-tel-input .country-list{max-width:100%}#bookly-tbs .form-inline label{margin-bottom:0}#bookly-tbs .form-inline .intl-tel-input{display:inline-block}#bookly-tbs .form-inline .bookly-checkbox-text{font-weight:400;vertical-align:middle}#bookly-tbs .page-header{margin-top:0}#bookly-tbs .page-header .bookly-support-panel #bookly-bell+.badge{position:absolute;top:-17px;right:7px;background-color:red}#bookly-tbs .page-header .bookly-support-panel .dropdown-menu-right{margin-top:10px;margin-right:3px}#bookly-tbs .bookly-nav-justified.nav-justified{display:table;margin-bottom:30px;table-layout:fixed}#bookly-tbs .bookly-nav-justified.nav-justified>li{display:table-cell;width:100%}#bookly-tbs .bookly-nav-justified.nav-justified>li>a{padding:15px 5px;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #d9dee4;border-radius:0}#bookly-tbs .bookly-nav-justified.nav-justified>li>.active>a,#bookly-tbs .bookly-nav-justified.nav-justified>li>.active>a:focus,#bookly-tbs .bookly-nav-justified.nav-justified>li>.active>a:hover{border-bottom:1px solid #08c}#bookly-tbs .bookly-nav-justified.nav-justified>li .bookly-icon{margin:0 3px;vertical-align:bottom}#bookly-tbs .bookly-nav-tabs-title{font-size:17px}@media (max-width:991px){#bookly-tbs .bookly-nav-tabs-title{display:none}}#bookly-tbs .bookly-thumb{position:relative;display:block;width:76px;height:76px;overflow:hidden;background-color:#e8ebf0;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat;background-position:-106px 0;border:1px solid #d9dee4;border-radius:4px}#bookly-tbs .bookly-thumb.bookly-thumb-sm{width:36px;height:36px;background-position:-182px 0}@media (min-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg{width:106px;height:106px;background-position:0 0}}@media (max-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg{background-position:0 0}}#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{background-color:rgba(0,0,0,.05);background-image:none}@media (min-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{width:106px;height:106px;background-position:0 0}}@media (max-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{background-position:0 0}}@media (min-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{width:100%}}#bookly-tbs .bookly-thumb .bookly-thumb-delete{position:absolute;top:5px;right:5px}#bookly-tbs .bookly-thumb .bookly-thumb-edit{position:absolute;right:0;bottom:0;left:0;background-color:rgba(0,0,0,.4)}#bookly-tbs .bookly-thumb .bookly-thumb-edit .bookly-thumb-edit-btn{width:100%;padding:0 3px;margin:0;overflow:hidden;font-size:13px;line-height:25px;color:#fff;text-align:center;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .bookly-staff-archived{background:rgba(232,235,240,.7)!important}#bookly-tbs .bookly-staff-archived .bookly-flex-cell{color:#d9dee4}#bookly-tbs .bookly-staff-archived .bookly-rating-right{color:#d9dee4}#bookly-tbs .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .btn.btn-lg{padding-right:32px;padding-left:32px}#bookly-tbs .btn.btn-xlg .dashicons,#bookly-tbs .btn.btn-xlg .dashicons-before:before{width:30px;height:30px;font-size:30px}#bookly-tbs .btn.bookly-btn-unborder{padding-right:0;padding-left:0;border-color:transparent}#bookly-tbs .bookly-nav{margin-bottom:20px;font-size:0}#bookly-tbs .bookly-nav.bookly-nav-pills .bookly-nav-item{display:inline-block;margin:6px 10px 6px 0}#bookly-tbs .bookly-nav.bookly-nav-tabs{z-index:10;border-bottom:1px solid #e8ebf0}@media (min-width:768px){#bookly-tbs .bookly-nav.bookly-nav-tabs{margin-bottom:0}}@media (min-width:768px){#bookly-tbs .bookly-nav.bookly-nav-tabs .bookly-nav-item{position:relative;display:inline-block;padding:12px 16px;margin:6px 10px -1px 0;border-bottom-right-radius:0;border-bottom-left-radius:0}}#bookly-tbs .bookly-nav .bookly-nav-item{position:relative;display:block;padding:10px 10px;margin-bottom:6px;font-size:15px;background:#fff;border:1px solid #e8ebf0;border-radius:4px}#bookly-tbs .bookly-nav .bookly-nav-item.active{color:#fff;background:#08c;border-color:#08c}#bookly-tbs .bookly-nav .bookly-nav-item.active a{color:#fff}#bookly-tbs .bookly-nav .bookly-nav-item.active a:focus,#bookly-tbs .bookly-nav .bookly-nav-item.active a:hover{color:#d9d9d9}#bookly-tbs .bookly-nav .bookly-nav-item:not(.active):focus,#bookly-tbs .bookly-nav .bookly-nav-item:not(.active):hover{cursor:pointer;background-color:#e8ebf0;border-color:#8a929e;-webkit-box-shadow:0 0 5px rgba(0,0,0,.2);box-shadow:0 0 5px rgba(0,0,0,.2)}#bookly-tbs .board-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.5)}#bookly-tbs .board-backdrop .bookly-board{width:50%;padding:20px;margin:10% 25%;background-color:#fefefe;border:1px solid rgba(0,0,0,.2)}@media (max-width:991px){#bookly-tbs .board-backdrop .bookly-board{width:90%;margin:10% 5%}}#bookly-tbs .board-backdrop .bookly-board .btn-group-vertical.align-left .btn{padding-left:6px;text-align:left}#bookly-tbs .board-backdrop .bookly-board ul{margin-left:15px!important;list-style:inside!important}#bookly-tbs .bookly-dropdown-menu>li:first-child{margin-left:0}#bookly-tbs .bookly-dropdown-menu li{margin-left:20px}#bookly-tbs .bookly-dropdown-menu ul>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4;color:#5b6470;white-space:nowrap}#bookly-tbs .bookly-dropdown-menu ul>li>a:focus,#bookly-tbs .bookly-dropdown-menu ul>li>a:hover{color:#505762;text-decoration:none;background-color:#f5f5f5}#bookly-tbs .bookly-dropdown-block{display:block;width:100%;height:36px;line-height:1.4}#bookly-tbs .bookly-dropdown-block .bookly-flex-cell:last-child{position:absolute;top:7px;left:-webkit-calc(100% - 32px);left:calc(100% - 32px)}#bookly-tbs .bookly-service-color{display:inline-block;width:21px;height:21px;margin-left:-25px;border:2px solid #fff;border-radius:50%}#bookly-tbs .bookly-vertical-colors .bookly-service-color{position:absolute}#bookly-tbs .bookly-vertical-colors .bookly-service-color:nth-child(1){margin-top:-15px}#bookly-tbs .bookly-vertical-colors .bookly-service-color:nth-child(2){margin-top:-5px}#bookly-tbs .bookly-max-height-xs{max-height:200px!important;overflow:auto}#bookly-tbs .bookly-max-height-sm{max-height:300px!important;overflow:auto}#bookly-tbs .bookly-max-height-md{max-height:400px!important;overflow:auto}#bookly-tbs .bookly-max-height-lg{max-height:500px!important;overflow:auto}#bookly-tbs .bookly-holidays-nav{display:block;width:200px;margin:0 auto}#bookly-tbs .bookly-holidays-nav .btn-default,#bookly-tbs .bookly-holidays-nav .form-control{background-color:#eff1f4;border-color:transparent}#bookly-tbs .modal-body textarea.wp-editor-area{width:-webkit-calc(100% - 20px);width:calc(100% - 20px)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-day{cursor:pointer}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-day.bookly-fc-day-active{background-color:#eafcff}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group{position:relative;display:inline-block;vertical-align:middle}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group .fc-button+.fc-button{margin-left:-1px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:not(.fc-corner-left):not(.fc-corner-right){border-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:first-child{margin-left:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:first-child:not(.fc-corner-right){border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:not(.fc-corner-left){border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group:not(:last-child){margin-right:16px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button{display:inline-block;height:auto;padding:6px 12px;margin-bottom:0;overflow:hidden;font-size:15px;font-weight:400;line-height:1.4;text-align:center;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-pill{border-radius:24px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-pill-left{border-top-left-radius:24px;border-bottom-left-radius:24px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-pill-right{border-top-right-radius:24px;border-bottom-right-radius:24px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-lg{padding-right:32px;padding-left:32px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-xlg .dashicons,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-xlg .dashicons-before:before{width:30px;height:30px;font-size:30px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.bookly-btn-unborder{padding-right:0;padding-left:0;border-color:transparent}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default{color:#3e424a;text-shadow:none;background-color:#fff;background-image:none;border-color:#d9dee4;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:focus{color:#3e424a;background-color:#e6e6e6;border-color:#8e9daf}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:hover{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active:hover,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active:hover,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.focus,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:focus,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:hover{color:#3e424a;background-color:#d4d4d4;border-color:#8e9daf}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default{background-image:none}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.disabled.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.disabled:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.disabled:hover,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default[disabled].focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default[disabled]:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default[disabled]:hover,fieldset[disabled] #bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.focus,fieldset[disabled] #bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:focus,fieldset[disabled] #bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:hover{background-color:#fff;border-color:#d9dee4}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default .badge{color:#fff;background-color:#3e424a}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active{z-index:1;color:#3e424a;background-color:#e6e6e6;background-image:none;border-color:#b5bfcb;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active:hover{color:#3e424a;background-color:#d4d4d4;border-color:#8e9daf}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2{position:relative;margin:0;font-size:20px;line-height:32px;cursor:pointer}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2:hover{color:#005580}@media (min-width:768px){#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2{font-size:24px}}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2:after{display:inline-block;width:0;height:0;margin-left:12px;vertical-align:middle;content:" ";border-top:5px dashed;border-top:5px solid\9;border-right:5px solid transparent;border-left:5px solid transparent}@media (max-width:767px){#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-left,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-right{display:inline-block;float:none;margin:0 12px 6px 12px}}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-head{background-color:#e8ebf0}#bookly-tbs .bookly-fc-inner .bookly-calendar th.fc-widget-header{padding:10px 0}#bookly-tbs .bookly-fc-inner .bookly-calendar th.fc-day-header{text-align:center}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc .fc-axis{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;padding:0 4px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-view{min-height:.01%;overflow-x:auto}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-view>table{min-width:768px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-event{padding:3px 2px 3px 5px;margin-right:0;margin-left:0;color:#3e424a;cursor:pointer;border-width:0;border-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-event:after{position:absolute;top:0;right:0;width:-webkit-calc(100% - 2px);width:calc(100% - 2px);height:100%;content:'';background-color:rgba(255,255,255,.6);border-bottom:1px solid rgba(255,255,255,.4)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-event:hover:after{background-color:rgba(255,255,255,.7)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-time{font-size:inherit;font-weight:700}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-time .bookly-fc-icon{float:right;color:#3e424a;opacity:.8}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-time .bookly-fc-icon:hover{cursor:pointer;opacity:1}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-title{display:block;margin-top:3px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-ltr .fc-time-grid .fc-event-container,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-rtl .fc-time-grid .fc-event-container{margin:0}#bookly-tbs .bookly-fc-inner .fc-loading-inner{position:absolute;top:50px;right:0;bottom:0;left:0;z-index:9;background-color:rgba(255,255,255,.7)}#bookly-tbs .bookly-fc-inner .fc-loading-inner .fc-loading{position:absolute;top:50%;left:50%;width:auto;height:32px;padding-left:64px;background:rgba(255,0,0,0) url(../../images/ajax_loader_32x32.gif) no-repeat scroll 50% center}#bookly-tbs .bookly-fc-inner .bookly-margin-top-xlg{position:relative;min-height:.01%;overflow:visible}@media (min-width:768px){#bookly-tbs .daterangepicker.dropdown-menu.show-calendar{min-width:718px}}#bookly-tbs .daterangepicker .daterangepicker_input{margin-bottom:6px}#bookly-tbs .daterangepicker .daterangepicker_input .glyphicon{position:absolute;top:8px}#bookly-tbs .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs .wp-switch-editor+.wp-switch-editor{margin-left:5px}#bookly-tbs .editable-container.popover{z-index:9999}#bookly-tbs .editable-input,#bookly-tbs .editable-input .form-control{width:100%}#bookly-tbs .editable-input textarea{resize:both}#bookly-tbs .editable-buttons{display:block;margin:6px 0;text-align:right}#bookly-tbs .editable-clear-x,#bookly-tbs .editable-click{cursor:pointer}#bookly-tbs .table>thead>tr>th{padding:16px 8px;background-color:#e8ebf0}#bookly-tbs .bookly-table-sortable.table>thead>tr>th{position:relative;padding-left:16px!important}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class],#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by]{cursor:pointer}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class]:after,#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by]:after{position:absolute;bottom:22px;left:-4px;width:24px;height:15px;content:"";background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDQ4IDQ4IiB3aWR0aD0iNDgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDIwbDEwIDEwIDEwLTEweiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==);background-repeat:no-repeat;background-position:0 -webkit-calc(50% + 2px);background-position:0 calc(50% + 2px);-webkit-background-size:24px 24px;background-size:24px 24px;opacity:.1}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class].desc:after,#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by].desc:after{opacity:1;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class].asc:after,#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by].asc:after{opacity:1}#bookly-tbs .table thead>tr>th{vertical-align:middle}#bookly-tbs .table thead>tr>th:not(:first-child){border-left:1px solid #d9dee4}#bookly-tbs .table td>input[type=checkbox],#bookly-tbs .table th>input[type=checkbox]{margin:0}#bookly-tbs .table td ul.bookly-list,#bookly-tbs .table th ul.bookly-list{padding-left:13px;margin:0}#bookly-tbs .table td ul.bookly-list.list-dots,#bookly-tbs .table th ul.bookly-list.list-dots{list-style:disc outside!important}#bookly-tbs .table td ul.bookly-list li,#bookly-tbs .table th ul.bookly-list li{margin:0}#bookly-tbs .bookly-color-picker-wrapper{position:relative;min-height:35px}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container{position:absolute;z-index:10;padding:6px;margin-left:-6px;background-color:#fff}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container,#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container.wp-picker-active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container .wp-color-result{height:auto}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container .button{margin-left:6px}#bookly-tbs .page-header .bookly-page-title{float:left;font-size:24px;line-height:38px}@media (max-width:767px){#bookly-tbs .page-header .bookly-page-title{font-size:22px}#bookly-tbs h3{font-size:18px}}#bookly-tbs .modal{top:46px!important}#bookly-tbs .modal .bookly-codes input{width:242px;border:none}#bookly-tbs .modal-header .close{margin-top:4px}@media (max-width:767px){#bookly-tbs .bookly-form .bookly-progress-tracker{display:none!important}}#bookly-tbs .bookly-form .picker__nav--next,#bookly-tbs .bookly-form .picker__nav--prev{width:26px;height:26px}@media (max-width:991px){#bookly-tbs .bookly-form .bookly-user-coupon{width:135px}}#bookly-tbs .bookly-form .bookly-box{padding-bottom:1px}#bookly-tbs .bookly-form input[type=checkbox],#bookly-tbs .bookly-form input[type=radio]{width:16px!important;height:16px!important}#bookly-tbs .bookly-icon{display:inline-block;width:24px;height:24px;vertical-align:middle;background-color:transparent;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat}#bookly-tbs .bookly-icon.bookly-icon-draghandle{background-position:-154px -82px}#bookly-tbs .has-feedback .alert-icon{display:inline-block;width:24px;height:24px;margin:4px 6px 0 0;vertical-align:middle;background-color:transparent;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat}#bookly-tbs .has-feedback.has-success .alert-icon{background-position:-24px -113px}#bookly-tbs .has-feedback.has-error .alert-icon{background-position:-48px -113px}#bookly-tbs .has-feedback.has-warning .alert-icon{background-position:-72px -113px}#bookly-tbs .has-feedback.has-ajax .alert-icon{background-position:-72px -113px;-webkit-animation:spin 3s infinite;-o-animation:spin 3s infinite;animation:spin 3s infinite}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spin{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}#bookly-tbs .alert{margin-top:30px}#bookly-tbs .alert .alert-icon,#bookly-tbs .alert .close{display:inline-block;width:24px;height:24px;vertical-align:top;background-color:transparent;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat}#bookly-tbs .alert .close{margin-top:-2px}#bookly-tbs .alert.alert-info .alert-icon{background-position:0 -113px}#bookly-tbs .alert.alert-success .alert-icon{background-position:-24px -113px}#bookly-tbs .alert.alert-danger .alert-icon{background-position:-48px -113px}#bookly-tbs .alert.alert-warning .alert-icon{background-position:-72px -113px}#bookly-tbs .bookly-alert{position:fixed;top:55px;right:13px;z-index:10000;text-align:left}@media (min-width:783px){#bookly-tbs .bookly-alert{right:21px}}#bookly-tbs .bookly-alert button{margin-left:10px}#bookly-tbs .pagination .next,#bookly-tbs .pagination .prev{position:inherit;width:inherit;height:inherit;padding:inherit}#bookly-tbs .pagination .next:before,#bookly-tbs .pagination .prev:before{position:inherit;width:inherit;height:inherit;padding:inherit;content:""}#bookly-tbs #bookly-appointments-list .popover .arrow{display:none}#bookly-tbs .bookly-rating-right{float:right}#bookly-tbs .bookly-rating-left{margin-left:10px}#bookly-tbs .bookly-rating-left i{margin-top:3px}#bookly-tbs .table.table-striped{border:1px solid #f4f4f4}#bookly-tbs .table.table-striped thead>tr>th{background-color:transparent;border-top:1px solid #f4f4f4}#bookly-tbs .table.table-striped thead>tr>th:not(:first-child){border-left:1px solid #f4f4f4}#bookly-tbs .table.table-striped thead>tr>th{border-bottom:none}#bookly-tbs .table.table-striped tbody>tr>td{border-top:1px solid #f4f4f4}#bookly-tbs .modal.fade.show{opacity:1}#bookly-tbs .modal .modal-header{display:block}#bookly-tbs .modal.show .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bookly-tbs h2:before{content:none}body.mobile.modal-open #wpwrap{position:inherit!important}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-backdrop+.modal-backdrop{display:none!important}.modal-open{overflow:hidden!important}.modal-open .modal{overflow-x:hidden!important;overflow-y:auto!important}.select2-container--bootstrap{display:block}.select2-container--bootstrap .select2-selection{font-size:15px;color:#3e424a;background-color:#fff;border:1px solid #d9dee4;border-radius:4px;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.select2-container--bootstrap .select2-selection.form-control{border-radius:4px}.select2-container--bootstrap .select2-search--dropdown .select2-search__field{font-size:15px;color:#3e424a;background-color:#fff;border:1px solid #d9dee4;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.select2-container--bootstrap .select2-search__field{outline:0}.select2-container--bootstrap .select2-search__field::-webkit-input-placeholder{color:#8a929e}.select2-container--bootstrap .select2-search__field:-moz-placeholder{color:#8a929e}.select2-container--bootstrap .select2-search__field::-moz-placeholder{color:#8a929e;opacity:1}.select2-container--bootstrap .select2-search__field:-ms-input-placeholder{color:#8a929e}.select2-container--bootstrap .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option[role=group]{padding:0}.select2-container--bootstrap .select2-results__option[aria-disabled=true]{color:#d9dee4;cursor:not-allowed}.select2-container--bootstrap .select2-results__option[aria-selected=true]{color:#505762;background-color:#f5f5f5}.select2-container--bootstrap .select2-results__option--highlighted[aria-selected]{color:#fff;background-color:#08c}.select2-container--bootstrap .select2-results__option .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*2;margin-left:-12px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*3;margin-left:-12px*2}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*4;margin-left:-12px*3}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*5;margin-left:-12px*4}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*6;margin-left:-12px*5}.select2-container--bootstrap .select2-results__group{display:block;padding:6px 12px;font-size:13px;line-height:1.4;color:#d9dee4;white-space:nowrap}.select2-container--bootstrap.select2-container--focus .select2-selection,.select2-container--bootstrap.select2-container--open .select2-selection{border-color:#08c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,136,204,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,136,204,.6);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.select2-container--bootstrap.select2-container--open .select2-selection .select2-selection__arrow b{border-color:transparent transparent #8a929e transparent;border-width:0 5px 5px 5px}.select2-container--bootstrap.select2-container--open.select2-container--below .select2-selection{border-bottom-color:transparent;border-bottom-right-radius:0;border-bottom-left-radius:0}.select2-container--bootstrap.select2-container--open.select2-container--above .select2-selection{border-top-color:transparent;border-top-left-radius:0;border-top-right-radius:0}.select2-container--bootstrap .select2-selection__clear{float:right;margin-right:10px;font-weight:700;color:#8a929e;cursor:pointer}.select2-container--bootstrap .select2-selection__clear:hover{color:#3e424a}.select2-container--bootstrap.select2-container--disabled .select2-selection{border-color:#d9dee4;-webkit-box-shadow:none;box-shadow:none}.select2-container--bootstrap.select2-container--disabled .select2-search__field,.select2-container--bootstrap.select2-container--disabled .select2-selection{cursor:not-allowed}.select2-container--bootstrap.select2-container--disabled .select2-selection,.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice{background-color:rgba(232,235,240,.7)}.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice__remove,.select2-container--bootstrap.select2-container--disabled .select2-selection__clear{display:none}.select2-container--bootstrap .select2-dropdown{margin-top:-1px;overflow-x:hidden;border-color:#08c;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.select2-container--bootstrap .select2-dropdown--above{margin-top:1px;-webkit-box-shadow:0 -6px 12px rgba(0,0,0,.175);box-shadow:0 -6px 12px rgba(0,0,0,.175)}.select2-container--bootstrap .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--bootstrap .select2-selection--single{height:35px;padding:6px 27px 6px 12px;line-height:1.4}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow{position:absolute;top:0;right:12px;bottom:0;width:5px}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow b{position:absolute;top:50%;left:0;width:0;height:0;margin-top:-5px/2;margin-left:-5px;border-color:#8a929e transparent transparent transparent;border-style:solid;border-width:5px 5px 0 5px}.select2-container--bootstrap .select2-selection--single .select2-selection__rendered{padding:0;color:#3e424a}.select2-container--bootstrap .select2-selection--single .select2-selection__placeholder{color:#8a929e}.select2-container--bootstrap .select2-selection--multiple{height:auto;min-height:35px;padding:0}.select2-container--bootstrap .select2-selection--multiple .select2-selection__rendered{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0;overflow:hidden;line-height:1.4;text-overflow:ellipsis;white-space:nowrap;list-style:none}.select2-container--bootstrap .select2-selection--multiple .select2-selection__placeholder{float:left;margin-top:5px;color:#8a929e}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice{float:left;padding:0 6px;margin:5px 0 0 12px/2;color:#3e424a;cursor:default;background:#fff;border:1px solid #d9dee4;border-radius:4px}.select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field{min-width:5em;height:35px - 2;padding:0 12px;margin-top:0;line-height:1.4;background:0 0}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove{display:inline-block;margin-right:6px/2;font-weight:700;color:#8a929e;cursor:pointer}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove:hover{color:#3e424a}.select2-container--bootstrap .select2-selection--multiple .select2-selection__clear{margin-top:6px}.form-group-sm .select2-container--bootstrap .select2-selection--single,.input-group-sm .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-sm{height:32px;padding:5px 10px + 5px*3 5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}.form-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-sm .select2-selection__arrow b{margin-left:-5px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple,.input-group-sm .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-sm{min-height:32px;border-radius:3px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__choice{padding:0 5px;margin:4px 0 0 10px/2;font-size:13px;line-height:1.53846154}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-search--inline .select2-search__field{height:32px - 2;padding:0 10px;font-size:13px;line-height:1.53846154}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__clear{margin-top:5px}.form-group-lg .select2-container--bootstrap .select2-selection--single,.input-group-lg .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-lg{height:46px;padding:10px 16px + 6px*3 10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow{width:6px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow b{margin-top:-6px/2;margin-left:-6px;margin-left:-10px;border-width:6px 6px 0 6px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple,.input-group-lg .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-lg{min-height:46px;border-radius:6px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__choice{padding:0 10px;margin:9px 0 0 16px/2;font-size:18px;line-height:1.3333333;border-radius:4px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-search--inline .select2-search__field{height:46px - 2;padding:0 16px;font-size:18px;line-height:1.3333333}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__clear{margin-top:10px}.select2-container--bootstrap .select2-selection.input-lg.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #8a929e transparent;border-width:0 6px 6px 6px}.input-group-lg .select2-container--bootstrap .select2-selection.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #8a929e transparent;border-width:0 6px 6px 6px}.select2-container--bootstrap[dir=rtl] .select2-selection--single{padding-right:12px;padding-left:12px + 5px*3}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:0;padding-left:0;text-align:right}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow{right:auto;left:12px}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow b{margin-left:0}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-right:12px/2;margin-left:0}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-right:auto;margin-left:2px}.has-warning .select2-dropdown,.has-warning .select2-selection{border-color:#8a6d3b}.has-warning .select2-container--focus .select2-selection,.has-warning .select2-container--open .select2-selection{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning.select2-drop-active{border-color:#66512c}.has-warning.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#66512c}.has-error .select2-dropdown,.has-error .select2-selection{border-color:#a94442}.has-error .select2-container--focus .select2-selection,.has-error .select2-container--open .select2-selection{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error.select2-drop-active{border-color:#843534}.has-error.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#843534}.has-success .select2-dropdown,.has-success .select2-selection{border-color:#3c763d}.has-success .select2-container--focus .select2-selection,.has-success .select2-container--open .select2-selection{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success.select2-drop-active{border-color:#2b542c}.has-success.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#2b542c}.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection,.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection.form-control{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection.form-control{border-radius:0}.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection.form-control{border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.select2-container--bootstrap{position:relative;z-index:2;display:table;width:100%;margin-bottom:0;table-layout:fixed}.input-group>.select2-container--bootstrap>.selection>.select2-selection.form-control{float:none}.input-group>.select2-container--bootstrap.select2-container--focus,.input-group>.select2-container--bootstrap.select2-container--open{z-index:3}.input-group>.select2-container--bootstrap,.input-group>.select2-container--bootstrap .input-group-btn,.input-group>.select2-container--bootstrap .input-group-btn .btn{vertical-align:top}.form-control.select2-hidden-accessible{position:absolute!important;width:1px!important}@media (min-width:768px){.form-inline .select2-container--bootstrap{display:inline-block}}.select2-results__option{padding:7px 12px;margin-bottom:1px!important}.select2-results__option[aria-selected=true]{color:#8a929e!important;background-color:inherit!important}.select2-container--bootstrap .select2-results>.select2-results__options{max-height:400px}.select2-container--bootstrap .select2-results>.select2-results__options .select2-results__option{padding:2px 12px;margin-bottom:1px!important;font-size:15px;line-height:1.4em}.select2-container--bootstrap .select2-results>.select2-results__options .select2-results__option i{margin-right:5px}.select2-container--bootstrap .select2-results>.select2-results__options .select2-results__group{font-size:16px;color:#000}table.dt-rowReorder-float{position:absolute!important;outline:2px solid #888}
1
  #bookly-tbs{
2
+
3
+ }#bookly-tbs html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}#bookly-tbs body{margin:0}#bookly-tbs article,#bookly-tbs aside,#bookly-tbs details,#bookly-tbs figcaption,#bookly-tbs figure,#bookly-tbs footer,#bookly-tbs header,#bookly-tbs hgroup,#bookly-tbs main,#bookly-tbs menu,#bookly-tbs nav,#bookly-tbs section,#bookly-tbs summary{display:block}#bookly-tbs audio,#bookly-tbs canvas,#bookly-tbs progress,#bookly-tbs video{display:inline-block;vertical-align:baseline}#bookly-tbs audio:not([controls]){display:none;height:0}#bookly-tbs [hidden],#bookly-tbs template{display:none}#bookly-tbs a{background-color:transparent}#bookly-tbs a:active,#bookly-tbs a:hover{outline:0}#bookly-tbs abbr[title]{border-bottom:1px dotted}#bookly-tbs b,#bookly-tbs strong{font-weight:700}#bookly-tbs dfn{font-style:italic}#bookly-tbs h1{margin:.67em 0;font-size:2em}#bookly-tbs mark{color:#000;background:#ff0}#bookly-tbs small{font-size:80%}#bookly-tbs sub,#bookly-tbs sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}#bookly-tbs sup{top:-.5em}#bookly-tbs sub{bottom:-.25em}#bookly-tbs img{border:0}#bookly-tbs svg:not(:root){overflow:hidden}#bookly-tbs figure{margin:1em 40px}#bookly-tbs hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs pre{overflow:auto}#bookly-tbs code,#bookly-tbs kbd,#bookly-tbs pre,#bookly-tbs samp{font-family:monospace,monospace;font-size:1em}#bookly-tbs button,#bookly-tbs input,#bookly-tbs optgroup,#bookly-tbs select,#bookly-tbs textarea{margin:0;font:inherit;color:inherit}#bookly-tbs button{overflow:visible}#bookly-tbs button,#bookly-tbs select{text-transform:none}#bookly-tbs button,#bookly-tbs html input[type=button],#bookly-tbs input[type=reset],#bookly-tbs input[type=submit]{-webkit-appearance:button;cursor:pointer}#bookly-tbs button[disabled],#bookly-tbs html input[disabled]{cursor:default}#bookly-tbs button::-moz-focus-inner,#bookly-tbs input::-moz-focus-inner{padding:0;border:0}#bookly-tbs input{line-height:normal}#bookly-tbs input[type=checkbox],#bookly-tbs input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}#bookly-tbs input[type=number]::-webkit-inner-spin-button,#bookly-tbs input[type=number]::-webkit-outer-spin-button{height:auto}#bookly-tbs input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}#bookly-tbs input[type=search]::-webkit-search-cancel-button,#bookly-tbs input[type=search]::-webkit-search-decoration{-webkit-appearance:none}#bookly-tbs fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}#bookly-tbs legend{padding:0;border:0}#bookly-tbs textarea{overflow:auto}#bookly-tbs optgroup{font-weight:700}#bookly-tbs table{border-spacing:0;border-collapse:collapse}#bookly-tbs td,#bookly-tbs th{padding:0}@media print{#bookly-tbs *,#bookly-tbs :after,#bookly-tbs :before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}#bookly-tbs a,#bookly-tbs a:visited{text-decoration:underline}#bookly-tbs a[href]:after{content:" (" attr(href) ")"}#bookly-tbs abbr[title]:after{content:" (" attr(title) ")"}#bookly-tbs a[href^="javascript:"]:after,#bookly-tbs a[href^="#"]:after{content:""}#bookly-tbs blockquote,#bookly-tbs pre{border:1px solid #999;page-break-inside:avoid}#bookly-tbs thead{display:table-header-group}#bookly-tbs img,#bookly-tbs tr{page-break-inside:avoid}#bookly-tbs img{max-width:100%!important}#bookly-tbs h2,#bookly-tbs h3,#bookly-tbs p{orphans:3;widows:3}#bookly-tbs h2,#bookly-tbs h3{page-break-after:avoid}#bookly-tbs .navbar{display:none}#bookly-tbs .btn>.caret,#bookly-tbs .dropup>.btn>.caret{border-top-color:#000!important}#bookly-tbs .label{border:1px solid #000}#bookly-tbs .table{border-collapse:collapse!important}#bookly-tbs .table td,#bookly-tbs .table th{background-color:#fff!important}#bookly-tbs .table-bordered td,#bookly-tbs .table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}#bookly-tbs .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bookly-tbs .glyphicon-asterisk:before{content:"\002a"}#bookly-tbs .glyphicon-plus:before{content:"\002b"}#bookly-tbs .glyphicon-eur:before,#bookly-tbs .glyphicon-euro:before{content:"\20ac"}#bookly-tbs .glyphicon-minus:before{content:"\2212"}#bookly-tbs .glyphicon-cloud:before{content:"\2601"}#bookly-tbs .glyphicon-envelope:before{content:"\2709"}#bookly-tbs .glyphicon-pencil:before{content:"\270f"}#bookly-tbs .glyphicon-glass:before{content:"\e001"}#bookly-tbs .glyphicon-music:before{content:"\e002"}#bookly-tbs .glyphicon-search:before{content:"\e003"}#bookly-tbs .glyphicon-heart:before{content:"\e005"}#bookly-tbs .glyphicon-star:before{content:"\e006"}#bookly-tbs .glyphicon-star-empty:before{content:"\e007"}#bookly-tbs .glyphicon-user:before{content:"\e008"}#bookly-tbs .glyphicon-film:before{content:"\e009"}#bookly-tbs .glyphicon-th-large:before{content:"\e010"}#bookly-tbs .glyphicon-th:before{content:"\e011"}#bookly-tbs .glyphicon-th-list:before{content:"\e012"}#bookly-tbs .glyphicon-ok:before{content:"\e013"}#bookly-tbs .glyphicon-remove:before{content:"\e014"}#bookly-tbs .glyphicon-zoom-in:before{content:"\e015"}#bookly-tbs .glyphicon-zoom-out:before{content:"\e016"}#bookly-tbs .glyphicon-off:before{content:"\e017"}#bookly-tbs .glyphicon-signal:before{content:"\e018"}#bookly-tbs .glyphicon-cog:before{content:"\e019"}#bookly-tbs .glyphicon-trash:before{content:"\e020"}#bookly-tbs .glyphicon-home:before{content:"\e021"}#bookly-tbs .glyphicon-file:before{content:"\e022"}#bookly-tbs .glyphicon-time:before{content:"\e023"}#bookly-tbs .glyphicon-road:before{content:"\e024"}#bookly-tbs .glyphicon-download-alt:before{content:"\e025"}#bookly-tbs .glyphicon-download:before{content:"\e026"}#bookly-tbs .glyphicon-upload:before{content:"\e027"}#bookly-tbs .glyphicon-inbox:before{content:"\e028"}#bookly-tbs .glyphicon-play-circle:before{content:"\e029"}#bookly-tbs .glyphicon-repeat:before{content:"\e030"}#bookly-tbs .glyphicon-refresh:before{content:"\e031"}#bookly-tbs .glyphicon-list-alt:before{content:"\e032"}#bookly-tbs .glyphicon-lock:before{content:"\e033"}#bookly-tbs .glyphicon-flag:before{content:"\e034"}#bookly-tbs .glyphicon-headphones:before{content:"\e035"}#bookly-tbs .glyphicon-volume-off:before{content:"\e036"}#bookly-tbs .glyphicon-volume-down:before{content:"\e037"}#bookly-tbs .glyphicon-volume-up:before{content:"\e038"}#bookly-tbs .glyphicon-qrcode:before{content:"\e039"}#bookly-tbs .glyphicon-barcode:before{content:"\e040"}#bookly-tbs .glyphicon-tag:before{content:"\e041"}#bookly-tbs .glyphicon-tags:before{content:"\e042"}#bookly-tbs .glyphicon-book:before{content:"\e043"}#bookly-tbs .glyphicon-bookmark:before{content:"\e044"}#bookly-tbs .glyphicon-print:before{content:"\e045"}#bookly-tbs .glyphicon-camera:before{content:"\e046"}#bookly-tbs .glyphicon-font:before{content:"\e047"}#bookly-tbs .glyphicon-bold:before{content:"\e048"}#bookly-tbs .glyphicon-italic:before{content:"\e049"}#bookly-tbs .glyphicon-text-height:before{content:"\e050"}#bookly-tbs .glyphicon-text-width:before{content:"\e051"}#bookly-tbs .glyphicon-align-left:before{content:"\e052"}#bookly-tbs .glyphicon-align-center:before{content:"\e053"}#bookly-tbs .glyphicon-align-right:before{content:"\e054"}#bookly-tbs .glyphicon-align-justify:before{content:"\e055"}#bookly-tbs .glyphicon-list:before{content:"\e056"}#bookly-tbs .glyphicon-indent-left:before{content:"\e057"}#bookly-tbs .glyphicon-indent-right:before{content:"\e058"}#bookly-tbs .glyphicon-facetime-video:before{content:"\e059"}#bookly-tbs .glyphicon-picture:before{content:"\e060"}#bookly-tbs .glyphicon-map-marker:before{content:"\e062"}#bookly-tbs .glyphicon-adjust:before{content:"\e063"}#bookly-tbs .glyphicon-tint:before{content:"\e064"}#bookly-tbs .glyphicon-edit:before{content:"\e065"}#bookly-tbs .glyphicon-share:before{content:"\e066"}#bookly-tbs .glyphicon-check:before{content:"\e067"}#bookly-tbs .glyphicon-move:before{content:"\e068"}#bookly-tbs .glyphicon-step-backward:before{content:"\e069"}#bookly-tbs .glyphicon-fast-backward:before{content:"\e070"}#bookly-tbs .glyphicon-backward:before{content:"\e071"}#bookly-tbs .glyphicon-play:before{content:"\e072"}#bookly-tbs .glyphicon-pause:before{content:"\e073"}#bookly-tbs .glyphicon-stop:before{content:"\e074"}#bookly-tbs .glyphicon-forward:before{content:"\e075"}#bookly-tbs .glyphicon-fast-forward:before{content:"\e076"}#bookly-tbs .glyphicon-step-forward:before{content:"\e077"}#bookly-tbs .glyphicon-eject:before{content:"\e078"}#bookly-tbs .glyphicon-chevron-left:before{content:"\e079"}#bookly-tbs .glyphicon-chevron-right:before{content:"\e080"}#bookly-tbs .glyphicon-plus-sign:before{content:"\e081"}#bookly-tbs .glyphicon-minus-sign:before{content:"\e082"}#bookly-tbs .glyphicon-remove-sign:before{content:"\e083"}#bookly-tbs .glyphicon-ok-sign:before{content:"\e084"}#bookly-tbs .glyphicon-question-sign:before{content:"\e085"}#bookly-tbs .glyphicon-info-sign:before{content:"\e086"}#bookly-tbs .glyphicon-screenshot:before{content:"\e087"}#bookly-tbs .glyphicon-remove-circle:before{content:"\e088"}#bookly-tbs .glyphicon-ok-circle:before{content:"\e089"}#bookly-tbs .glyphicon-ban-circle:before{content:"\e090"}#bookly-tbs .glyphicon-arrow-left:before{content:"\e091"}#bookly-tbs .glyphicon-arrow-right:before{content:"\e092"}#bookly-tbs .glyphicon-arrow-up:before{content:"\e093"}#bookly-tbs .glyphicon-arrow-down:before{content:"\e094"}#bookly-tbs .glyphicon-share-alt:before{content:"\e095"}#bookly-tbs .glyphicon-resize-full:before{content:"\e096"}#bookly-tbs .glyphicon-resize-small:before{content:"\e097"}#bookly-tbs .glyphicon-exclamation-sign:before{content:"\e101"}#bookly-tbs .glyphicon-gift:before{content:"\e102"}#bookly-tbs .glyphicon-leaf:before{content:"\e103"}#bookly-tbs .glyphicon-fire:before{content:"\e104"}#bookly-tbs .glyphicon-eye-open:before{content:"\e105"}#bookly-tbs .glyphicon-eye-close:before{content:"\e106"}#bookly-tbs .glyphicon-warning-sign:before{content:"\e107"}#bookly-tbs .glyphicon-plane:before{content:"\e108"}#bookly-tbs .glyphicon-calendar:before{content:"\e109"}#bookly-tbs .glyphicon-random:before{content:"\e110"}#bookly-tbs .glyphicon-comment:before{content:"\e111"}#bookly-tbs .glyphicon-magnet:before{content:"\e112"}#bookly-tbs .glyphicon-chevron-up:before{content:"\e113"}#bookly-tbs .glyphicon-chevron-down:before{content:"\e114"}#bookly-tbs .glyphicon-retweet:before{content:"\e115"}#bookly-tbs .glyphicon-shopping-cart:before{content:"\e116"}#bookly-tbs .glyphicon-folder-close:before{content:"\e117"}#bookly-tbs .glyphicon-folder-open:before{content:"\e118"}#bookly-tbs .glyphicon-resize-vertical:before{content:"\e119"}#bookly-tbs .glyphicon-resize-horizontal:before{content:"\e120"}#bookly-tbs .glyphicon-hdd:before{content:"\e121"}#bookly-tbs .glyphicon-bullhorn:before{content:"\e122"}#bookly-tbs .glyphicon-bell:before{content:"\e123"}#bookly-tbs .glyphicon-certificate:before{content:"\e124"}#bookly-tbs .glyphicon-thumbs-up:before{content:"\e125"}#bookly-tbs .glyphicon-thumbs-down:before{content:"\e126"}#bookly-tbs .glyphicon-hand-right:before{content:"\e127"}#bookly-tbs .glyphicon-hand-left:before{content:"\e128"}#bookly-tbs .glyphicon-hand-up:before{content:"\e129"}#bookly-tbs .glyphicon-hand-down:before{content:"\e130"}#bookly-tbs .glyphicon-circle-arrow-right:before{content:"\e131"}#bookly-tbs .glyphicon-circle-arrow-left:before{content:"\e132"}#bookly-tbs .glyphicon-circle-arrow-up:before{content:"\e133"}#bookly-tbs .glyphicon-circle-arrow-down:before{content:"\e134"}#bookly-tbs .glyphicon-globe:before{content:"\e135"}#bookly-tbs .glyphicon-wrench:before{content:"\e136"}#bookly-tbs .glyphicon-tasks:before{content:"\e137"}#bookly-tbs .glyphicon-filter:before{content:"\e138"}#bookly-tbs .glyphicon-briefcase:before{content:"\e139"}#bookly-tbs .glyphicon-fullscreen:before{content:"\e140"}#bookly-tbs .glyphicon-dashboard:before{content:"\e141"}#bookly-tbs .glyphicon-paperclip:before{content:"\e142"}#bookly-tbs .glyphicon-heart-empty:before{content:"\e143"}#bookly-tbs .glyphicon-link:before{content:"\e144"}#bookly-tbs .glyphicon-phone:before{content:"\e145"}#bookly-tbs .glyphicon-pushpin:before{content:"\e146"}#bookly-tbs .glyphicon-usd:before{content:"\e148"}#bookly-tbs .glyphicon-gbp:before{content:"\e149"}#bookly-tbs .glyphicon-sort:before{content:"\e150"}#bookly-tbs .glyphicon-sort-by-alphabet:before{content:"\e151"}#bookly-tbs .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}#bookly-tbs .glyphicon-sort-by-order:before{content:"\e153"}#bookly-tbs .glyphicon-sort-by-order-alt:before{content:"\e154"}#bookly-tbs .glyphicon-sort-by-attributes:before{content:"\e155"}#bookly-tbs .glyphicon-sort-by-attributes-alt:before{content:"\e156"}#bookly-tbs .glyphicon-unchecked:before{content:"\e157"}#bookly-tbs .glyphicon-expand:before{content:"\e158"}#bookly-tbs .glyphicon-collapse-down:before{content:"\e159"}#bookly-tbs .glyphicon-collapse-up:before{content:"\e160"}#bookly-tbs .glyphicon-log-in:before{content:"\e161"}#bookly-tbs .glyphicon-flash:before{content:"\e162"}#bookly-tbs .glyphicon-log-out:before{content:"\e163"}#bookly-tbs .glyphicon-new-window:before{content:"\e164"}#bookly-tbs .glyphicon-record:before{content:"\e165"}#bookly-tbs .glyphicon-save:before{content:"\e166"}#bookly-tbs .glyphicon-open:before{content:"\e167"}#bookly-tbs .glyphicon-saved:before{content:"\e168"}#bookly-tbs .glyphicon-import:before{content:"\e169"}#bookly-tbs .glyphicon-export:before{content:"\e170"}#bookly-tbs .glyphicon-send:before{content:"\e171"}#bookly-tbs .glyphicon-floppy-disk:before{content:"\e172"}#bookly-tbs .glyphicon-floppy-saved:before{content:"\e173"}#bookly-tbs .glyphicon-floppy-remove:before{content:"\e174"}#bookly-tbs .glyphicon-floppy-save:before{content:"\e175"}#bookly-tbs .glyphicon-floppy-open:before{content:"\e176"}#bookly-tbs .glyphicon-credit-card:before{content:"\e177"}#bookly-tbs .glyphicon-transfer:before{content:"\e178"}#bookly-tbs .glyphicon-cutlery:before{content:"\e179"}#bookly-tbs .glyphicon-header:before{content:"\e180"}#bookly-tbs .glyphicon-compressed:before{content:"\e181"}#bookly-tbs .glyphicon-earphone:before{content:"\e182"}#bookly-tbs .glyphicon-phone-alt:before{content:"\e183"}#bookly-tbs .glyphicon-tower:before{content:"\e184"}#bookly-tbs .glyphicon-stats:before{content:"\e185"}#bookly-tbs .glyphicon-sd-video:before{content:"\e186"}#bookly-tbs .glyphicon-hd-video:before{content:"\e187"}#bookly-tbs .glyphicon-subtitles:before{content:"\e188"}#bookly-tbs .glyphicon-sound-stereo:before{content:"\e189"}#bookly-tbs .glyphicon-sound-dolby:before{content:"\e190"}#bookly-tbs .glyphicon-sound-5-1:before{content:"\e191"}#bookly-tbs .glyphicon-sound-6-1:before{content:"\e192"}#bookly-tbs .glyphicon-sound-7-1:before{content:"\e193"}#bookly-tbs .glyphicon-copyright-mark:before{content:"\e194"}#bookly-tbs .glyphicon-registration-mark:before{content:"\e195"}#bookly-tbs .glyphicon-cloud-download:before{content:"\e197"}#bookly-tbs .glyphicon-cloud-upload:before{content:"\e198"}#bookly-tbs .glyphicon-tree-conifer:before{content:"\e199"}#bookly-tbs .glyphicon-tree-deciduous:before{content:"\e200"}#bookly-tbs .glyphicon-cd:before{content:"\e201"}#bookly-tbs .glyphicon-save-file:before{content:"\e202"}#bookly-tbs .glyphicon-open-file:before{content:"\e203"}#bookly-tbs .glyphicon-level-up:before{content:"\e204"}#bookly-tbs .glyphicon-copy:before{content:"\e205"}#bookly-tbs .glyphicon-paste:before{content:"\e206"}#bookly-tbs .glyphicon-alert:before{content:"\e209"}#bookly-tbs .glyphicon-equalizer:before{content:"\e210"}#bookly-tbs .glyphicon-king:before{content:"\e211"}#bookly-tbs .glyphicon-queen:before{content:"\e212"}#bookly-tbs .glyphicon-pawn:before{content:"\e213"}#bookly-tbs .glyphicon-bishop:before{content:"\e214"}#bookly-tbs .glyphicon-knight:before{content:"\e215"}#bookly-tbs .glyphicon-baby-formula:before{content:"\e216"}#bookly-tbs .glyphicon-tent:before{content:"\26fa"}#bookly-tbs .glyphicon-blackboard:before{content:"\e218"}#bookly-tbs .glyphicon-bed:before{content:"\e219"}#bookly-tbs .glyphicon-apple:before{content:"\f8ff"}#bookly-tbs .glyphicon-erase:before{content:"\e221"}#bookly-tbs .glyphicon-hourglass:before{content:"\231b"}#bookly-tbs .glyphicon-lamp:before{content:"\e223"}#bookly-tbs .glyphicon-duplicate:before{content:"\e224"}#bookly-tbs .glyphicon-piggy-bank:before{content:"\e225"}#bookly-tbs .glyphicon-scissors:before{content:"\e226"}#bookly-tbs .glyphicon-bitcoin:before{content:"\e227"}#bookly-tbs .glyphicon-btc:before{content:"\e227"}#bookly-tbs .glyphicon-xbt:before{content:"\e227"}#bookly-tbs .glyphicon-yen:before{content:"\00a5"}#bookly-tbs .glyphicon-jpy:before{content:"\00a5"}#bookly-tbs .glyphicon-ruble:before{content:"\20bd"}#bookly-tbs .glyphicon-rub:before{content:"\20bd"}#bookly-tbs .glyphicon-scale:before{content:"\e230"}#bookly-tbs .glyphicon-ice-lolly:before{content:"\e231"}#bookly-tbs .glyphicon-ice-lolly-tasted:before{content:"\e232"}#bookly-tbs .glyphicon-education:before{content:"\e233"}#bookly-tbs .glyphicon-option-horizontal:before{content:"\e234"}#bookly-tbs .glyphicon-option-vertical:before{content:"\e235"}#bookly-tbs .glyphicon-menu-hamburger:before{content:"\e236"}#bookly-tbs .glyphicon-modal-window:before{content:"\e237"}#bookly-tbs .glyphicon-oil:before{content:"\e238"}#bookly-tbs .glyphicon-grain:before{content:"\e239"}#bookly-tbs .glyphicon-sunglasses:before{content:"\e240"}#bookly-tbs .glyphicon-text-size:before{content:"\e241"}#bookly-tbs .glyphicon-text-color:before{content:"\e242"}#bookly-tbs .glyphicon-text-background:before{content:"\e243"}#bookly-tbs .glyphicon-object-align-top:before{content:"\e244"}#bookly-tbs .glyphicon-object-align-bottom:before{content:"\e245"}#bookly-tbs .glyphicon-object-align-horizontal:before{content:"\e246"}#bookly-tbs .glyphicon-object-align-left:before{content:"\e247"}#bookly-tbs .glyphicon-object-align-vertical:before{content:"\e248"}#bookly-tbs .glyphicon-object-align-right:before{content:"\e249"}#bookly-tbs .glyphicon-triangle-right:before{content:"\e250"}#bookly-tbs .glyphicon-triangle-left:before{content:"\e251"}#bookly-tbs .glyphicon-triangle-bottom:before{content:"\e252"}#bookly-tbs .glyphicon-triangle-top:before{content:"\e253"}#bookly-tbs .glyphicon-console:before{content:"\e254"}#bookly-tbs .glyphicon-superscript:before{content:"\e255"}#bookly-tbs .glyphicon-subscript:before{content:"\e256"}#bookly-tbs .glyphicon-menu-left:before{content:"\e257"}#bookly-tbs .glyphicon-menu-right:before{content:"\e258"}#bookly-tbs .glyphicon-menu-down:before{content:"\e259"}#bookly-tbs .glyphicon-menu-up:before{content:"\e260"}#bookly-tbs *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bookly-tbs :after,#bookly-tbs :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bookly-tbs .bookly-tbs-body{font-family:"open sans","helvetica neue",helvetica,arial,sans-serif;font-size:15px;line-height:1.4;color:#3e424a;background-color:transparent;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bookly-tbs button,#bookly-tbs input,#bookly-tbs select,#bookly-tbs textarea{font-family:inherit;font-size:inherit;line-height:inherit}#bookly-tbs a{color:#08c;text-decoration:none}#bookly-tbs a:focus,#bookly-tbs a:hover{color:#005580;text-decoration:none}#bookly-tbs a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bookly-tbs figure{margin:0}#bookly-tbs img{vertical-align:middle}#bookly-tbs .carousel-inner>.item>a>img,#bookly-tbs .carousel-inner>.item>img,#bookly-tbs .img-responsive,#bookly-tbs .thumbnail a>img,#bookly-tbs .thumbnail>img{display:block;max-width:100%;height:auto}#bookly-tbs .img-rounded{border-radius:6px}#bookly-tbs .img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.4;background-color:transparent;border:1px solid #e8ebf0;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#bookly-tbs .img-circle{border-radius:50%}#bookly-tbs hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #d9dee4}#bookly-tbs .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}#bookly-tbs .sr-only-focusable:active,#bookly-tbs .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}#bookly-tbs [role=button]{cursor:pointer}#bookly-tbs .h1,#bookly-tbs .h2,#bookly-tbs .h3,#bookly-tbs .h4,#bookly-tbs .h5,#bookly-tbs .h6,#bookly-tbs h1,#bookly-tbs h2,#bookly-tbs h3,#bookly-tbs h4,#bookly-tbs h5,#bookly-tbs h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit}#bookly-tbs .h1 .small,#bookly-tbs .h1 small,#bookly-tbs .h2 .small,#bookly-tbs .h2 small,#bookly-tbs .h3 .small,#bookly-tbs .h3 small,#bookly-tbs .h4 .small,#bookly-tbs .h4 small,#bookly-tbs .h5 .small,#bookly-tbs .h5 small,#bookly-tbs .h6 .small,#bookly-tbs .h6 small,#bookly-tbs h1 .small,#bookly-tbs h1 small,#bookly-tbs h2 .small,#bookly-tbs h2 small,#bookly-tbs h3 .small,#bookly-tbs h3 small,#bookly-tbs h4 .small,#bookly-tbs h4 small,#bookly-tbs h5 .small,#bookly-tbs h5 small,#bookly-tbs h6 .small,#bookly-tbs h6 small{font-weight:400;line-height:1;color:#d9dee4}#bookly-tbs .h1,#bookly-tbs .h2,#bookly-tbs .h3,#bookly-tbs h1,#bookly-tbs h2,#bookly-tbs h3{margin-top:21px;margin-bottom:10.5px}#bookly-tbs .h1 .small,#bookly-tbs .h1 small,#bookly-tbs .h2 .small,#bookly-tbs .h2 small,#bookly-tbs .h3 .small,#bookly-tbs .h3 small,#bookly-tbs h1 .small,#bookly-tbs h1 small,#bookly-tbs h2 .small,#bookly-tbs h2 small,#bookly-tbs h3 .small,#bookly-tbs h3 small{font-size:65%}#bookly-tbs .h4,#bookly-tbs .h5,#bookly-tbs .h6,#bookly-tbs h4,#bookly-tbs h5,#bookly-tbs h6{margin-top:10.5px;margin-bottom:10.5px}#bookly-tbs .h4 .small,#bookly-tbs .h4 small,#bookly-tbs .h5 .small,#bookly-tbs .h5 small,#bookly-tbs .h6 .small,#bookly-tbs .h6 small,#bookly-tbs h4 .small,#bookly-tbs h4 small,#bookly-tbs h5 .small,#bookly-tbs h5 small,#bookly-tbs h6 .small,#bookly-tbs h6 small{font-size:75%}#bookly-tbs .h1,#bookly-tbs h1{font-size:27px}#bookly-tbs .h2,#bookly-tbs h2{font-size:24px}#bookly-tbs .h3,#bookly-tbs h3{font-size:21px}#bookly-tbs .h4,#bookly-tbs h4{font-size:18px}#bookly-tbs .h5,#bookly-tbs h5{font-size:15px}#bookly-tbs .h6,#bookly-tbs h6{font-size:13px}#bookly-tbs p{margin:0 0 10.5px}#bookly-tbs .lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){#bookly-tbs .lead{font-size:22.5px}}#bookly-tbs .small,#bookly-tbs small{font-size:86%}#bookly-tbs .mark,#bookly-tbs mark{padding:.2em;background-color:#fcf8e3}#bookly-tbs .text-left{text-align:left}#bookly-tbs .text-right{text-align:right}#bookly-tbs .text-center{text-align:center}#bookly-tbs .text-justify{text-align:justify}#bookly-tbs .text-nowrap{white-space:nowrap}#bookly-tbs .text-lowercase{text-transform:lowercase}#bookly-tbs .text-uppercase{text-transform:uppercase}#bookly-tbs .text-capitalize{text-transform:capitalize}#bookly-tbs .text-muted{color:#d9dee4}#bookly-tbs .text-primary{color:#08c}#bookly-tbs a.text-primary:focus,#bookly-tbs a.text-primary:hover{color:#069}#bookly-tbs .text-success{color:#3c763d}#bookly-tbs a.text-success:focus,#bookly-tbs a.text-success:hover{color:#2b542c}#bookly-tbs .text-info{color:#31708f}#bookly-tbs a.text-info:focus,#bookly-tbs a.text-info:hover{color:#245269}#bookly-tbs .text-warning{color:#8a6d3b}#bookly-tbs a.text-warning:focus,#bookly-tbs a.text-warning:hover{color:#66512c}#bookly-tbs .text-danger{color:#a94442}#bookly-tbs a.text-danger:focus,#bookly-tbs a.text-danger:hover{color:#843534}#bookly-tbs .bg-primary{color:#fff;background-color:#08c}#bookly-tbs a.bg-primary:focus,#bookly-tbs a.bg-primary:hover{background-color:#069}#bookly-tbs .bg-success{background-color:#dff0d8}#bookly-tbs a.bg-success:focus,#bookly-tbs a.bg-success:hover{background-color:#c1e2b3}#bookly-tbs .bg-info{background-color:#d9edf7}#bookly-tbs a.bg-info:focus,#bookly-tbs a.bg-info:hover{background-color:#afd9ee}#bookly-tbs .bg-warning{background-color:#fcf8e3}#bookly-tbs a.bg-warning:focus,#bookly-tbs a.bg-warning:hover{background-color:#f7ecb5}#bookly-tbs .bg-danger{background-color:#f2dede}#bookly-tbs a.bg-danger:focus,#bookly-tbs a.bg-danger:hover{background-color:#e4b9b9}#bookly-tbs .page-header{padding-bottom:9.5px;margin:42px 0 10.5px;border-bottom:1px solid transparent}#bookly-tbs ol,#bookly-tbs ul{margin-top:0;margin-bottom:10.5px}#bookly-tbs ol ol,#bookly-tbs ol ul,#bookly-tbs ul ol,#bookly-tbs ul ul{margin-bottom:0}#bookly-tbs .list-unstyled{padding-left:0;list-style:none}#bookly-tbs .list-inline{padding-left:0;margin-left:-5px;list-style:none}#bookly-tbs .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}#bookly-tbs dl{margin-top:0;margin-bottom:21px}#bookly-tbs dd,#bookly-tbs dt{line-height:1.4}#bookly-tbs dt{font-weight:700}#bookly-tbs dd{margin-left:0}@media (min-width:768px){#bookly-tbs .dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .dl-horizontal dd{margin-left:180px}}#bookly-tbs abbr[data-original-title],#bookly-tbs abbr[title]{cursor:help;border-bottom:1px dotted #d9dee4}#bookly-tbs .initialism{font-size:90%;text-transform:uppercase}#bookly-tbs blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #e8ebf0}#bookly-tbs blockquote ol:last-child,#bookly-tbs blockquote p:last-child,#bookly-tbs blockquote ul:last-child{margin-bottom:0}#bookly-tbs blockquote .small,#bookly-tbs blockquote footer,#bookly-tbs blockquote small{display:block;font-size:80%;line-height:1.4;color:#d9dee4}#bookly-tbs blockquote .small:before,#bookly-tbs blockquote footer:before,#bookly-tbs blockquote small:before{content:'\2014 \00A0'}#bookly-tbs .blockquote-reverse,#bookly-tbs blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #e8ebf0;border-left:0}#bookly-tbs .blockquote-reverse .small:before,#bookly-tbs .blockquote-reverse footer:before,#bookly-tbs .blockquote-reverse small:before,#bookly-tbs blockquote.pull-right .small:before,#bookly-tbs blockquote.pull-right footer:before,#bookly-tbs blockquote.pull-right small:before{content:''}#bookly-tbs .blockquote-reverse .small:after,#bookly-tbs .blockquote-reverse footer:after,#bookly-tbs .blockquote-reverse small:after,#bookly-tbs blockquote.pull-right .small:after,#bookly-tbs blockquote.pull-right footer:after,#bookly-tbs blockquote.pull-right small:after{content:'\00A0 \2014'}#bookly-tbs address{margin-bottom:21px;font-style:normal;line-height:1.4}#bookly-tbs code,#bookly-tbs kbd,#bookly-tbs pre,#bookly-tbs samp{font-family:menlo,monaco,consolas,"courier new",monospace}#bookly-tbs code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}#bookly-tbs kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}#bookly-tbs kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.4;color:#5b6470;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}#bookly-tbs pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}#bookly-tbs .pre-scrollable{max-height:340px;overflow-y:scroll}#bookly-tbs .container{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}@media (min-width:768px){#bookly-tbs .container{width:740px}}@media (min-width:992px){#bookly-tbs .container{width:960px}}@media (min-width:1200px){#bookly-tbs .container{width:1160px}}#bookly-tbs .container-fluid{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}#bookly-tbs .row{margin-right:-10px;margin-left:-10px}#bookly-tbs .col-lg-1,#bookly-tbs .col-lg-10,#bookly-tbs .col-lg-11,#bookly-tbs .col-lg-12,#bookly-tbs .col-lg-2,#bookly-tbs .col-lg-3,#bookly-tbs .col-lg-4,#bookly-tbs .col-lg-5,#bookly-tbs .col-lg-6,#bookly-tbs .col-lg-7,#bookly-tbs .col-lg-8,#bookly-tbs .col-lg-9,#bookly-tbs .col-md-1,#bookly-tbs .col-md-10,#bookly-tbs .col-md-11,#bookly-tbs .col-md-12,#bookly-tbs .col-md-2,#bookly-tbs .col-md-3,#bookly-tbs .col-md-4,#bookly-tbs .col-md-5,#bookly-tbs .col-md-6,#bookly-tbs .col-md-7,#bookly-tbs .col-md-8,#bookly-tbs .col-md-9,#bookly-tbs .col-sm-1,#bookly-tbs .col-sm-10,#bookly-tbs .col-sm-11,#bookly-tbs .col-sm-12,#bookly-tbs .col-sm-2,#bookly-tbs .col-sm-3,#bookly-tbs .col-sm-4,#bookly-tbs .col-sm-5,#bookly-tbs .col-sm-6,#bookly-tbs .col-sm-7,#bookly-tbs .col-sm-8,#bookly-tbs .col-sm-9,#bookly-tbs .col-xs-1,#bookly-tbs .col-xs-10,#bookly-tbs .col-xs-11,#bookly-tbs .col-xs-12,#bookly-tbs .col-xs-2,#bookly-tbs .col-xs-3,#bookly-tbs .col-xs-4,#bookly-tbs .col-xs-5,#bookly-tbs .col-xs-6,#bookly-tbs .col-xs-7,#bookly-tbs .col-xs-8,#bookly-tbs .col-xs-9{position:relative;min-height:1px;padding-right:10px;padding-left:10px}#bookly-tbs .col-xs-1,#bookly-tbs .col-xs-10,#bookly-tbs .col-xs-11,#bookly-tbs .col-xs-12,#bookly-tbs .col-xs-2,#bookly-tbs .col-xs-3,#bookly-tbs .col-xs-4,#bookly-tbs .col-xs-5,#bookly-tbs .col-xs-6,#bookly-tbs .col-xs-7,#bookly-tbs .col-xs-8,#bookly-tbs .col-xs-9{float:left}#bookly-tbs .col-xs-12{width:100%}#bookly-tbs .col-xs-11{width:91.66666667%}#bookly-tbs .col-xs-10{width:83.33333333%}#bookly-tbs .col-xs-9{width:75%}#bookly-tbs .col-xs-8{width:66.66666667%}#bookly-tbs .col-xs-7{width:58.33333333%}#bookly-tbs .col-xs-6{width:50%}#bookly-tbs .col-xs-5{width:41.66666667%}#bookly-tbs .col-xs-4{width:33.33333333%}#bookly-tbs .col-xs-3{width:25%}#bookly-tbs .col-xs-2{width:16.66666667%}#bookly-tbs .col-xs-1{width:8.33333333%}#bookly-tbs .col-xs-pull-12{right:100%}#bookly-tbs .col-xs-pull-11{right:91.66666667%}#bookly-tbs .col-xs-pull-10{right:83.33333333%}#bookly-tbs .col-xs-pull-9{right:75%}#bookly-tbs .col-xs-pull-8{right:66.66666667%}#bookly-tbs .col-xs-pull-7{right:58.33333333%}#bookly-tbs .col-xs-pull-6{right:50%}#bookly-tbs .col-xs-pull-5{right:41.66666667%}#bookly-tbs .col-xs-pull-4{right:33.33333333%}#bookly-tbs .col-xs-pull-3{right:25%}#bookly-tbs .col-xs-pull-2{right:16.66666667%}#bookly-tbs .col-xs-pull-1{right:8.33333333%}#bookly-tbs .col-xs-pull-0{right:auto}#bookly-tbs .col-xs-push-12{left:100%}#bookly-tbs .col-xs-push-11{left:91.66666667%}#bookly-tbs .col-xs-push-10{left:83.33333333%}#bookly-tbs .col-xs-push-9{left:75%}#bookly-tbs .col-xs-push-8{left:66.66666667%}#bookly-tbs .col-xs-push-7{left:58.33333333%}#bookly-tbs .col-xs-push-6{left:50%}#bookly-tbs .col-xs-push-5{left:41.66666667%}#bookly-tbs .col-xs-push-4{left:33.33333333%}#bookly-tbs .col-xs-push-3{left:25%}#bookly-tbs .col-xs-push-2{left:16.66666667%}#bookly-tbs .col-xs-push-1{left:8.33333333%}#bookly-tbs .col-xs-push-0{left:auto}#bookly-tbs .col-xs-offset-12{margin-left:100%}#bookly-tbs .col-xs-offset-11{margin-left:91.66666667%}#bookly-tbs .col-xs-offset-10{margin-left:83.33333333%}#bookly-tbs .col-xs-offset-9{margin-left:75%}#bookly-tbs .col-xs-offset-8{margin-left:66.66666667%}#bookly-tbs .col-xs-offset-7{margin-left:58.33333333%}#bookly-tbs .col-xs-offset-6{margin-left:50%}#bookly-tbs .col-xs-offset-5{margin-left:41.66666667%}#bookly-tbs .col-xs-offset-4{margin-left:33.33333333%}#bookly-tbs .col-xs-offset-3{margin-left:25%}#bookly-tbs .col-xs-offset-2{margin-left:16.66666667%}#bookly-tbs .col-xs-offset-1{margin-left:8.33333333%}#bookly-tbs .col-xs-offset-0{margin-left:0}@media (min-width:768px){#bookly-tbs .col-sm-1,#bookly-tbs .col-sm-10,#bookly-tbs .col-sm-11,#bookly-tbs .col-sm-12,#bookly-tbs .col-sm-2,#bookly-tbs .col-sm-3,#bookly-tbs .col-sm-4,#bookly-tbs .col-sm-5,#bookly-tbs .col-sm-6,#bookly-tbs .col-sm-7,#bookly-tbs .col-sm-8,#bookly-tbs .col-sm-9{float:left}#bookly-tbs .col-sm-12{width:100%}#bookly-tbs .col-sm-11{width:91.66666667%}#bookly-tbs .col-sm-10{width:83.33333333%}#bookly-tbs .col-sm-9{width:75%}#bookly-tbs .col-sm-8{width:66.66666667%}#bookly-tbs .col-sm-7{width:58.33333333%}#bookly-tbs .col-sm-6{width:50%}#bookly-tbs .col-sm-5{width:41.66666667%}#bookly-tbs .col-sm-4{width:33.33333333%}#bookly-tbs .col-sm-3{width:25%}#bookly-tbs .col-sm-2{width:16.66666667%}#bookly-tbs .col-sm-1{width:8.33333333%}#bookly-tbs .col-sm-pull-12{right:100%}#bookly-tbs .col-sm-pull-11{right:91.66666667%}#bookly-tbs .col-sm-pull-10{right:83.33333333%}#bookly-tbs .col-sm-pull-9{right:75%}#bookly-tbs .col-sm-pull-8{right:66.66666667%}#bookly-tbs .col-sm-pull-7{right:58.33333333%}#bookly-tbs .col-sm-pull-6{right:50%}#bookly-tbs .col-sm-pull-5{right:41.66666667%}#bookly-tbs .col-sm-pull-4{right:33.33333333%}#bookly-tbs .col-sm-pull-3{right:25%}#bookly-tbs .col-sm-pull-2{right:16.66666667%}#bookly-tbs .col-sm-pull-1{right:8.33333333%}#bookly-tbs .col-sm-pull-0{right:auto}#bookly-tbs .col-sm-push-12{left:100%}#bookly-tbs .col-sm-push-11{left:91.66666667%}#bookly-tbs .col-sm-push-10{left:83.33333333%}#bookly-tbs .col-sm-push-9{left:75%}#bookly-tbs .col-sm-push-8{left:66.66666667%}#bookly-tbs .col-sm-push-7{left:58.33333333%}#bookly-tbs .col-sm-push-6{left:50%}#bookly-tbs .col-sm-push-5{left:41.66666667%}#bookly-tbs .col-sm-push-4{left:33.33333333%}#bookly-tbs .col-sm-push-3{left:25%}#bookly-tbs .col-sm-push-2{left:16.66666667%}#bookly-tbs .col-sm-push-1{left:8.33333333%}#bookly-tbs .col-sm-push-0{left:auto}#bookly-tbs .col-sm-offset-12{margin-left:100%}#bookly-tbs .col-sm-offset-11{margin-left:91.66666667%}#bookly-tbs .col-sm-offset-10{margin-left:83.33333333%}#bookly-tbs .col-sm-offset-9{margin-left:75%}#bookly-tbs .col-sm-offset-8{margin-left:66.66666667%}#bookly-tbs .col-sm-offset-7{margin-left:58.33333333%}#bookly-tbs .col-sm-offset-6{margin-left:50%}#bookly-tbs .col-sm-offset-5{margin-left:41.66666667%}#bookly-tbs .col-sm-offset-4{margin-left:33.33333333%}#bookly-tbs .col-sm-offset-3{margin-left:25%}#bookly-tbs .col-sm-offset-2{margin-left:16.66666667%}#bookly-tbs .col-sm-offset-1{margin-left:8.33333333%}#bookly-tbs .col-sm-offset-0{margin-left:0}}@media (min-width:992px){#bookly-tbs .col-md-1,#bookly-tbs .col-md-10,#bookly-tbs .col-md-11,#bookly-tbs .col-md-12,#bookly-tbs .col-md-2,#bookly-tbs .col-md-3,#bookly-tbs .col-md-4,#bookly-tbs .col-md-5,#bookly-tbs .col-md-6,#bookly-tbs .col-md-7,#bookly-tbs .col-md-8,#bookly-tbs .col-md-9{float:left}#bookly-tbs .col-md-12{width:100%}#bookly-tbs .col-md-11{width:91.66666667%}#bookly-tbs .col-md-10{width:83.33333333%}#bookly-tbs .col-md-9{width:75%}#bookly-tbs .col-md-8{width:66.66666667%}#bookly-tbs .col-md-7{width:58.33333333%}#bookly-tbs .col-md-6{width:50%}#bookly-tbs .col-md-5{width:41.66666667%}#bookly-tbs .col-md-4{width:33.33333333%}#bookly-tbs .col-md-3{width:25%}#bookly-tbs .col-md-2{width:16.66666667%}#bookly-tbs .col-md-1{width:8.33333333%}#bookly-tbs .col-md-pull-12{right:100%}#bookly-tbs .col-md-pull-11{right:91.66666667%}#bookly-tbs .col-md-pull-10{right:83.33333333%}#bookly-tbs .col-md-pull-9{right:75%}#bookly-tbs .col-md-pull-8{right:66.66666667%}#bookly-tbs .col-md-pull-7{right:58.33333333%}#bookly-tbs .col-md-pull-6{right:50%}#bookly-tbs .col-md-pull-5{right:41.66666667%}#bookly-tbs .col-md-pull-4{right:33.33333333%}#bookly-tbs .col-md-pull-3{right:25%}#bookly-tbs .col-md-pull-2{right:16.66666667%}#bookly-tbs .col-md-pull-1{right:8.33333333%}#bookly-tbs .col-md-pull-0{right:auto}#bookly-tbs .col-md-push-12{left:100%}#bookly-tbs .col-md-push-11{left:91.66666667%}#bookly-tbs .col-md-push-10{left:83.33333333%}#bookly-tbs .col-md-push-9{left:75%}#bookly-tbs .col-md-push-8{left:66.66666667%}#bookly-tbs .col-md-push-7{left:58.33333333%}#bookly-tbs .col-md-push-6{left:50%}#bookly-tbs .col-md-push-5{left:41.66666667%}#bookly-tbs .col-md-push-4{left:33.33333333%}#bookly-tbs .col-md-push-3{left:25%}#bookly-tbs .col-md-push-2{left:16.66666667%}#bookly-tbs .col-md-push-1{left:8.33333333%}#bookly-tbs .col-md-push-0{left:auto}#bookly-tbs .col-md-offset-12{margin-left:100%}#bookly-tbs .col-md-offset-11{margin-left:91.66666667%}#bookly-tbs .col-md-offset-10{margin-left:83.33333333%}#bookly-tbs .col-md-offset-9{margin-left:75%}#bookly-tbs .col-md-offset-8{margin-left:66.66666667%}#bookly-tbs .col-md-offset-7{margin-left:58.33333333%}#bookly-tbs .col-md-offset-6{margin-left:50%}#bookly-tbs .col-md-offset-5{margin-left:41.66666667%}#bookly-tbs .col-md-offset-4{margin-left:33.33333333%}#bookly-tbs .col-md-offset-3{margin-left:25%}#bookly-tbs .col-md-offset-2{margin-left:16.66666667%}#bookly-tbs .col-md-offset-1{margin-left:8.33333333%}#bookly-tbs .col-md-offset-0{margin-left:0}}@media (min-width:1200px){#bookly-tbs .col-lg-1,#bookly-tbs .col-lg-10,#bookly-tbs .col-lg-11,#bookly-tbs .col-lg-12,#bookly-tbs .col-lg-2,#bookly-tbs .col-lg-3,#bookly-tbs .col-lg-4,#bookly-tbs .col-lg-5,#bookly-tbs .col-lg-6,#bookly-tbs .col-lg-7,#bookly-tbs .col-lg-8,#bookly-tbs .col-lg-9{float:left}#bookly-tbs .col-lg-12{width:100%}#bookly-tbs .col-lg-11{width:91.66666667%}#bookly-tbs .col-lg-10{width:83.33333333%}#bookly-tbs .col-lg-9{width:75%}#bookly-tbs .col-lg-8{width:66.66666667%}#bookly-tbs .col-lg-7{width:58.33333333%}#bookly-tbs .col-lg-6{width:50%}#bookly-tbs .col-lg-5{width:41.66666667%}#bookly-tbs .col-lg-4{width:33.33333333%}#bookly-tbs .col-lg-3{width:25%}#bookly-tbs .col-lg-2{width:16.66666667%}#bookly-tbs .col-lg-1{width:8.33333333%}#bookly-tbs .col-lg-pull-12{right:100%}#bookly-tbs .col-lg-pull-11{right:91.66666667%}#bookly-tbs .col-lg-pull-10{right:83.33333333%}#bookly-tbs .col-lg-pull-9{right:75%}#bookly-tbs .col-lg-pull-8{right:66.66666667%}#bookly-tbs .col-lg-pull-7{right:58.33333333%}#bookly-tbs .col-lg-pull-6{right:50%}#bookly-tbs .col-lg-pull-5{right:41.66666667%}#bookly-tbs .col-lg-pull-4{right:33.33333333%}#bookly-tbs .col-lg-pull-3{right:25%}#bookly-tbs .col-lg-pull-2{right:16.66666667%}#bookly-tbs .col-lg-pull-1{right:8.33333333%}#bookly-tbs .col-lg-pull-0{right:auto}#bookly-tbs .col-lg-push-12{left:100%}#bookly-tbs .col-lg-push-11{left:91.66666667%}#bookly-tbs .col-lg-push-10{left:83.33333333%}#bookly-tbs .col-lg-push-9{left:75%}#bookly-tbs .col-lg-push-8{left:66.66666667%}#bookly-tbs .col-lg-push-7{left:58.33333333%}#bookly-tbs .col-lg-push-6{left:50%}#bookly-tbs .col-lg-push-5{left:41.66666667%}#bookly-tbs .col-lg-push-4{left:33.33333333%}#bookly-tbs .col-lg-push-3{left:25%}#bookly-tbs .col-lg-push-2{left:16.66666667%}#bookly-tbs .col-lg-push-1{left:8.33333333%}#bookly-tbs .col-lg-push-0{left:auto}#bookly-tbs .col-lg-offset-12{margin-left:100%}#bookly-tbs .col-lg-offset-11{margin-left:91.66666667%}#bookly-tbs .col-lg-offset-10{margin-left:83.33333333%}#bookly-tbs .col-lg-offset-9{margin-left:75%}#bookly-tbs .col-lg-offset-8{margin-left:66.66666667%}#bookly-tbs .col-lg-offset-7{margin-left:58.33333333%}#bookly-tbs .col-lg-offset-6{margin-left:50%}#bookly-tbs .col-lg-offset-5{margin-left:41.66666667%}#bookly-tbs .col-lg-offset-4{margin-left:33.33333333%}#bookly-tbs .col-lg-offset-3{margin-left:25%}#bookly-tbs .col-lg-offset-2{margin-left:16.66666667%}#bookly-tbs .col-lg-offset-1{margin-left:8.33333333%}#bookly-tbs .col-lg-offset-0{margin-left:0}}#bookly-tbs table{background-color:transparent}#bookly-tbs caption{padding-top:8px;padding-bottom:8px;color:#d9dee4;text-align:left}#bookly-tbs th{text-align:left}#bookly-tbs .table{width:100%;max-width:100%;margin-bottom:21px}#bookly-tbs .table>tbody>tr>td,#bookly-tbs .table>tbody>tr>th,#bookly-tbs .table>tfoot>tr>td,#bookly-tbs .table>tfoot>tr>th,#bookly-tbs .table>thead>tr>td,#bookly-tbs .table>thead>tr>th{padding:8px;line-height:1.4;vertical-align:top;border-top:1px solid #d9dee4}#bookly-tbs .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #d9dee4}#bookly-tbs .table>caption+thead>tr:first-child>td,#bookly-tbs .table>caption+thead>tr:first-child>th,#bookly-tbs .table>colgroup+thead>tr:first-child>td,#bookly-tbs .table>colgroup+thead>tr:first-child>th,#bookly-tbs .table>thead:first-child>tr:first-child>td,#bookly-tbs .table>thead:first-child>tr:first-child>th{border-top:0}#bookly-tbs .table>tbody+tbody{border-top:2px solid #d9dee4}#bookly-tbs .table .table{background-color:transparent}#bookly-tbs .table-condensed>tbody>tr>td,#bookly-tbs .table-condensed>tbody>tr>th,#bookly-tbs .table-condensed>tfoot>tr>td,#bookly-tbs .table-condensed>tfoot>tr>th,#bookly-tbs .table-condensed>thead>tr>td,#bookly-tbs .table-condensed>thead>tr>th{padding:5px}#bookly-tbs .table-bordered{border:1px solid #d9dee4}#bookly-tbs .table-bordered>tbody>tr>td,#bookly-tbs .table-bordered>tbody>tr>th,#bookly-tbs .table-bordered>tfoot>tr>td,#bookly-tbs .table-bordered>tfoot>tr>th,#bookly-tbs .table-bordered>thead>tr>td,#bookly-tbs .table-bordered>thead>tr>th{border:1px solid #d9dee4}#bookly-tbs .table-bordered>thead>tr>td,#bookly-tbs .table-bordered>thead>tr>th{border-bottom-width:2px}#bookly-tbs .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}#bookly-tbs .table-hover>tbody>tr:hover{background-color:#f5f5f5}#bookly-tbs table col[class*=col-]{position:static;display:table-column;float:none}#bookly-tbs table td[class*=col-],#bookly-tbs table th[class*=col-]{position:static;display:table-cell;float:none}#bookly-tbs .table>tbody>tr.active>td,#bookly-tbs .table>tbody>tr.active>th,#bookly-tbs .table>tbody>tr>td.active,#bookly-tbs .table>tbody>tr>th.active,#bookly-tbs .table>tfoot>tr.active>td,#bookly-tbs .table>tfoot>tr.active>th,#bookly-tbs .table>tfoot>tr>td.active,#bookly-tbs .table>tfoot>tr>th.active,#bookly-tbs .table>thead>tr.active>td,#bookly-tbs .table>thead>tr.active>th,#bookly-tbs .table>thead>tr>td.active,#bookly-tbs .table>thead>tr>th.active{background-color:#f5f5f5}#bookly-tbs .table-hover>tbody>tr.active:hover>td,#bookly-tbs .table-hover>tbody>tr.active:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.active,#bookly-tbs .table-hover>tbody>tr>td.active:hover,#bookly-tbs .table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}#bookly-tbs .table>tbody>tr.success>td,#bookly-tbs .table>tbody>tr.success>th,#bookly-tbs .table>tbody>tr>td.success,#bookly-tbs .table>tbody>tr>th.success,#bookly-tbs .table>tfoot>tr.success>td,#bookly-tbs .table>tfoot>tr.success>th,#bookly-tbs .table>tfoot>tr>td.success,#bookly-tbs .table>tfoot>tr>th.success,#bookly-tbs .table>thead>tr.success>td,#bookly-tbs .table>thead>tr.success>th,#bookly-tbs .table>thead>tr>td.success,#bookly-tbs .table>thead>tr>th.success{background-color:#dff0d8}#bookly-tbs .table-hover>tbody>tr.success:hover>td,#bookly-tbs .table-hover>tbody>tr.success:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.success,#bookly-tbs .table-hover>tbody>tr>td.success:hover,#bookly-tbs .table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}#bookly-tbs .table>tbody>tr.info>td,#bookly-tbs .table>tbody>tr.info>th,#bookly-tbs .table>tbody>tr>td.info,#bookly-tbs .table>tbody>tr>th.info,#bookly-tbs .table>tfoot>tr.info>td,#bookly-tbs .table>tfoot>tr.info>th,#bookly-tbs .table>tfoot>tr>td.info,#bookly-tbs .table>tfoot>tr>th.info,#bookly-tbs .table>thead>tr.info>td,#bookly-tbs .table>thead>tr.info>th,#bookly-tbs .table>thead>tr>td.info,#bookly-tbs .table>thead>tr>th.info{background-color:#d9edf7}#bookly-tbs .table-hover>tbody>tr.info:hover>td,#bookly-tbs .table-hover>tbody>tr.info:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.info,#bookly-tbs .table-hover>tbody>tr>td.info:hover,#bookly-tbs .table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}#bookly-tbs .table>tbody>tr.warning>td,#bookly-tbs .table>tbody>tr.warning>th,#bookly-tbs .table>tbody>tr>td.warning,#bookly-tbs .table>tbody>tr>th.warning,#bookly-tbs .table>tfoot>tr.warning>td,#bookly-tbs .table>tfoot>tr.warning>th,#bookly-tbs .table>tfoot>tr>td.warning,#bookly-tbs .table>tfoot>tr>th.warning,#bookly-tbs .table>thead>tr.warning>td,#bookly-tbs .table>thead>tr.warning>th,#bookly-tbs .table>thead>tr>td.warning,#bookly-tbs .table>thead>tr>th.warning{background-color:#fcf8e3}#bookly-tbs .table-hover>tbody>tr.warning:hover>td,#bookly-tbs .table-hover>tbody>tr.warning:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.warning,#bookly-tbs .table-hover>tbody>tr>td.warning:hover,#bookly-tbs .table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}#bookly-tbs .table>tbody>tr.danger>td,#bookly-tbs .table>tbody>tr.danger>th,#bookly-tbs .table>tbody>tr>td.danger,#bookly-tbs .table>tbody>tr>th.danger,#bookly-tbs .table>tfoot>tr.danger>td,#bookly-tbs .table>tfoot>tr.danger>th,#bookly-tbs .table>tfoot>tr>td.danger,#bookly-tbs .table>tfoot>tr>th.danger,#bookly-tbs .table>thead>tr.danger>td,#bookly-tbs .table>thead>tr.danger>th,#bookly-tbs .table>thead>tr>td.danger,#bookly-tbs .table>thead>tr>th.danger{background-color:#f2dede}#bookly-tbs .table-hover>tbody>tr.danger:hover>td,#bookly-tbs .table-hover>tbody>tr.danger:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.danger,#bookly-tbs .table-hover>tbody>tr>td.danger:hover,#bookly-tbs .table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}#bookly-tbs .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){#bookly-tbs .table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #d9dee4}#bookly-tbs .table-responsive>.table{margin-bottom:0}#bookly-tbs .table-responsive>.table>tbody>tr>td,#bookly-tbs .table-responsive>.table>tbody>tr>th,#bookly-tbs .table-responsive>.table>tfoot>tr>td,#bookly-tbs .table-responsive>.table>tfoot>tr>th,#bookly-tbs .table-responsive>.table>thead>tr>td,#bookly-tbs .table-responsive>.table>thead>tr>th{white-space:nowrap}#bookly-tbs .table-responsive>.table-bordered{border:0}#bookly-tbs .table-responsive>.table-bordered>tbody>tr>td:first-child,#bookly-tbs .table-responsive>.table-bordered>tbody>tr>th:first-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>td:first-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>th:first-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>td:first-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}#bookly-tbs .table-responsive>.table-bordered>tbody>tr>td:last-child,#bookly-tbs .table-responsive>.table-bordered>tbody>tr>th:last-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>td:last-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>th:last-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>td:last-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}#bookly-tbs .table-responsive>.table-bordered>tbody>tr:last-child>td,#bookly-tbs .table-responsive>.table-bordered>tbody>tr:last-child>th,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr:last-child>td,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}#bookly-tbs fieldset{min-width:0;padding:0;margin:0;border:0}#bookly-tbs legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#5b6470;border:0;border-bottom:1px solid #e8ebf0}#bookly-tbs label{display:inline-block;max-width:100%;margin-bottom:7px;font-weight:700}#bookly-tbs input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bookly-tbs input[type=checkbox],#bookly-tbs input[type=radio]{margin:3px 0 0;margin-top:1px\9;line-height:normal}#bookly-tbs input[type=file]{display:block}#bookly-tbs input[type=range]{display:block;width:100%}#bookly-tbs select[multiple],#bookly-tbs select[size]{height:auto}#bookly-tbs input[type=file]:focus,#bookly-tbs input[type=checkbox]:focus,#bookly-tbs input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bookly-tbs output{display:block;padding-top:7px;font-size:15px;line-height:1.4;color:#3e424a}#bookly-tbs .form-control{display:block;width:100%;height:35px;padding:6px 12px;font-size:15px;line-height:1.4;color:#3e424a;background-color:#fff;background-image:none;border:1px solid #d9dee4;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0);box-shadow:inset 0 1px 1px rgba(0,0,0,0);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}#bookly-tbs .form-control:focus{border-color:#08c;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0),0 0 8px rgba(0,136,204,0);box-shadow:inset 0 1px 1px rgba(0,0,0,0),0 0 8px rgba(0,136,204,0)}#bookly-tbs .form-control::-moz-placeholder{color:#8a929e;opacity:1}#bookly-tbs .form-control:-ms-input-placeholder{color:#8a929e}#bookly-tbs .form-control::-webkit-input-placeholder{color:#8a929e}#bookly-tbs .form-control::-ms-expand{background-color:transparent;border:0}#bookly-tbs .form-control[disabled],#bookly-tbs .form-control[readonly],#bookly-tbs fieldset[disabled] .form-control{background-color:rgba(232,235,240,.7);opacity:1}#bookly-tbs .form-control[disabled],#bookly-tbs fieldset[disabled] .form-control{cursor:not-allowed}#bookly-tbs textarea.form-control{height:auto}#bookly-tbs input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){#bookly-tbs input[type=date].form-control,#bookly-tbs input[type=time].form-control,#bookly-tbs input[type=datetime-local].form-control,#bookly-tbs input[type=month].form-control{line-height:35px}#bookly-tbs .input-group-sm input[type=date],#bookly-tbs .input-group-sm input[type=time],#bookly-tbs .input-group-sm input[type=datetime-local],#bookly-tbs .input-group-sm input[type=month],#bookly-tbs input[type=date].input-sm,#bookly-tbs input[type=time].input-sm,#bookly-tbs input[type=datetime-local].input-sm,#bookly-tbs input[type=month].input-sm{line-height:32px}#bookly-tbs .input-group-lg input[type=date],#bookly-tbs .input-group-lg input[type=time],#bookly-tbs .input-group-lg input[type=datetime-local],#bookly-tbs .input-group-lg input[type=month],#bookly-tbs input[type=date].input-lg,#bookly-tbs input[type=time].input-lg,#bookly-tbs input[type=datetime-local].input-lg,#bookly-tbs input[type=month].input-lg{line-height:46px}}#bookly-tbs .form-group{margin-bottom:20px}#bookly-tbs .checkbox,#bookly-tbs .radio{position:relative;display:block;margin-top:6px;margin-bottom:7px}#bookly-tbs .checkbox label,#bookly-tbs .radio label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}#bookly-tbs .checkbox input[type=checkbox],#bookly-tbs .checkbox-inline input[type=checkbox],#bookly-tbs .radio input[type=radio],#bookly-tbs .radio-inline input[type=radio]{position:absolute;margin-top:3px\9;margin-left:-20px}#bookly-tbs .checkbox+.checkbox,#bookly-tbs .radio+.radio{margin-top:-5px}#bookly-tbs .checkbox-inline,#bookly-tbs .radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}#bookly-tbs .checkbox-inline+.checkbox-inline,#bookly-tbs .radio-inline+.radio-inline{margin-top:0;margin-left:10px}#bookly-tbs fieldset[disabled] input[type=checkbox],#bookly-tbs fieldset[disabled] input[type=radio],#bookly-tbs input[type=checkbox].disabled,#bookly-tbs input[type=checkbox][disabled],#bookly-tbs input[type=radio].disabled,#bookly-tbs input[type=radio][disabled]{cursor:not-allowed}#bookly-tbs .checkbox-inline.disabled,#bookly-tbs .radio-inline.disabled,#bookly-tbs fieldset[disabled] .checkbox-inline,#bookly-tbs fieldset[disabled] .radio-inline{cursor:not-allowed}#bookly-tbs .checkbox.disabled label,#bookly-tbs .radio.disabled label,#bookly-tbs fieldset[disabled] .checkbox label,#bookly-tbs fieldset[disabled] .radio label{cursor:not-allowed}#bookly-tbs .form-control-static{min-height:36px;padding-top:7px;padding-bottom:7px;margin-bottom:0}#bookly-tbs .form-control-static.input-lg,#bookly-tbs .form-control-static.input-sm{padding-right:0;padding-left:0}#bookly-tbs .input-sm{height:32px;padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs select.input-sm{height:32px;line-height:32px}#bookly-tbs select[multiple].input-sm,#bookly-tbs textarea.input-sm{height:auto}#bookly-tbs .form-group-sm .form-control{height:32px;padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs .form-group-sm select.form-control{height:32px;line-height:32px}#bookly-tbs .form-group-sm select[multiple].form-control,#bookly-tbs .form-group-sm textarea.form-control{height:auto}#bookly-tbs .form-group-sm .form-control-static{height:32px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.53846154}#bookly-tbs .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bookly-tbs select.input-lg{height:46px;line-height:46px}#bookly-tbs select[multiple].input-lg,#bookly-tbs textarea.input-lg{height:auto}#bookly-tbs .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bookly-tbs .form-group-lg select.form-control{height:46px;line-height:46px}#bookly-tbs .form-group-lg select[multiple].form-control,#bookly-tbs .form-group-lg textarea.form-control{height:auto}#bookly-tbs .form-group-lg .form-control-static{height:46px;min-height:39px;padding:11px 16px;font-size:18px;line-height:1.3333333}#bookly-tbs .has-feedback{position:relative}#bookly-tbs .has-feedback .form-control{padding-right:43.75px}#bookly-tbs .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:35px;height:35px;line-height:35px;text-align:center;pointer-events:none}#bookly-tbs .form-group-lg .form-control+.form-control-feedback,#bookly-tbs .input-group-lg+.form-control-feedback,#bookly-tbs .input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}#bookly-tbs .form-group-sm .form-control+.form-control-feedback,#bookly-tbs .input-group-sm+.form-control-feedback,#bookly-tbs .input-sm+.form-control-feedback{width:32px;height:32px;line-height:32px}#bookly-tbs .has-success .checkbox,#bookly-tbs .has-success .checkbox-inline,#bookly-tbs .has-success .control-label,#bookly-tbs .has-success .help-block,#bookly-tbs .has-success .radio,#bookly-tbs .has-success .radio-inline,#bookly-tbs .has-success.checkbox label,#bookly-tbs .has-success.checkbox-inline label,#bookly-tbs .has-success.radio label,#bookly-tbs .has-success.radio-inline label{color:#3c763d}#bookly-tbs .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bookly-tbs .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}#bookly-tbs .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}#bookly-tbs .has-success .form-control-feedback{color:#3c763d}#bookly-tbs .has-warning .checkbox,#bookly-tbs .has-warning .checkbox-inline,#bookly-tbs .has-warning .control-label,#bookly-tbs .has-warning .help-block,#bookly-tbs .has-warning .radio,#bookly-tbs .has-warning .radio-inline,#bookly-tbs .has-warning.checkbox label,#bookly-tbs .has-warning.checkbox-inline label,#bookly-tbs .has-warning.radio label,#bookly-tbs .has-warning.radio-inline label{color:#8a6d3b}#bookly-tbs .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bookly-tbs .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}#bookly-tbs .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}#bookly-tbs .has-warning .form-control-feedback{color:#8a6d3b}#bookly-tbs .has-error .checkbox,#bookly-tbs .has-error .checkbox-inline,#bookly-tbs .has-error .control-label,#bookly-tbs .has-error .help-block,#bookly-tbs .has-error .radio,#bookly-tbs .has-error .radio-inline,#bookly-tbs .has-error.checkbox label,#bookly-tbs .has-error.checkbox-inline label,#bookly-tbs .has-error.radio label,#bookly-tbs .has-error.radio-inline label{color:#a94442}#bookly-tbs .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bookly-tbs .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}#bookly-tbs .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}#bookly-tbs .has-error .form-control-feedback{color:#a94442}#bookly-tbs .has-feedback label~.form-control-feedback{top:26px}#bookly-tbs .has-feedback label.sr-only~.form-control-feedback{top:0}#bookly-tbs .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#8a929e}@media (min-width:768px){#bookly-tbs .form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bookly-tbs .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}#bookly-tbs .form-inline .form-control-static{display:inline-block}#bookly-tbs .form-inline .input-group{display:inline-table;vertical-align:middle}#bookly-tbs .form-inline .input-group .form-control,#bookly-tbs .form-inline .input-group .input-group-addon,#bookly-tbs .form-inline .input-group .input-group-btn{width:auto}#bookly-tbs .form-inline .input-group>.form-control{width:100%}#bookly-tbs .form-inline .control-label{margin-bottom:0;vertical-align:middle}#bookly-tbs .form-inline .checkbox,#bookly-tbs .form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bookly-tbs .form-inline .has-feedback .form-control-feedback{top:0}}#bookly-tbs .form-horizontal .checkbox,#bookly-tbs .form-horizontal .checkbox-inline,#bookly-tbs .form-horizontal .radio,#bookly-tbs .form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}#bookly-tbs .form-horizontal .checkbox,#bookly-tbs .form-horizontal .radio{min-height:28px}#bookly-tbs .form-horizontal .form-group{margin-right:-10px;margin-left:-10px}@media (min-width:768px){#bookly-tbs .form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}#bookly-tbs .form-horizontal .has-feedback .form-control-feedback{right:10px}@media (min-width:768px){#bookly-tbs .form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){#bookly-tbs .form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}#bookly-tbs .btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:15px;font-weight:400;line-height:1.4;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}#bookly-tbs .btn.active.focus,#bookly-tbs .btn.active:focus,#bookly-tbs .btn.focus,#bookly-tbs .btn:active.focus,#bookly-tbs .btn:active:focus,#bookly-tbs .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bookly-tbs .btn.focus,#bookly-tbs .btn:focus,#bookly-tbs .btn:hover{color:#3e424a;text-decoration:none}#bookly-tbs .btn.active,#bookly-tbs .btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bookly-tbs .btn.disabled,#bookly-tbs .btn[disabled],#bookly-tbs fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}#bookly-tbs a.btn.disabled,#bookly-tbs fieldset[disabled] a.btn{pointer-events:none}#bookly-tbs .btn-default{color:#3e424a;background-color:#fff;border-color:#d9dee4}#bookly-tbs .btn-default.focus,#bookly-tbs .btn-default:focus{color:#3e424a;background-color:#e6e6e6;border-color:#8e9daf}#bookly-tbs .btn-default:hover{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .btn-default.active,#bookly-tbs .btn-default:active,#bookly-tbs .open>.dropdown-toggle.btn-default{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .btn-default.active.focus,#bookly-tbs .btn-default.active:focus,#bookly-tbs .btn-default.active:hover,#bookly-tbs .btn-default:active.focus,#bookly-tbs .btn-default:active:focus,#bookly-tbs .btn-default:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-default.focus,#bookly-tbs .open>.dropdown-toggle.btn-default:focus,#bookly-tbs .open>.dropdown-toggle.btn-default:hover{color:#3e424a;background-color:#d4d4d4;border-color:#8e9daf}#bookly-tbs .btn-default.active,#bookly-tbs .btn-default:active,#bookly-tbs .open>.dropdown-toggle.btn-default{background-image:none}#bookly-tbs .btn-default.disabled.focus,#bookly-tbs .btn-default.disabled:focus,#bookly-tbs .btn-default.disabled:hover,#bookly-tbs .btn-default[disabled].focus,#bookly-tbs .btn-default[disabled]:focus,#bookly-tbs .btn-default[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-default.focus,#bookly-tbs fieldset[disabled] .btn-default:focus,#bookly-tbs fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#d9dee4}#bookly-tbs .btn-default .badge{color:#fff;background-color:#3e424a}#bookly-tbs .btn-primary{color:#fff;background-color:#08c;border-color:#08c}#bookly-tbs .btn-primary.focus,#bookly-tbs .btn-primary:focus{color:#fff;background-color:#069;border-color:#00334d}#bookly-tbs .btn-primary:hover{color:#fff;background-color:#069;border-color:#005f8f}#bookly-tbs .btn-primary.active,#bookly-tbs .btn-primary:active,#bookly-tbs .open>.dropdown-toggle.btn-primary{color:#fff;background-color:#069;border-color:#005f8f}#bookly-tbs .btn-primary.active.focus,#bookly-tbs .btn-primary.active:focus,#bookly-tbs .btn-primary.active:hover,#bookly-tbs .btn-primary:active.focus,#bookly-tbs .btn-primary:active:focus,#bookly-tbs .btn-primary:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-primary.focus,#bookly-tbs .open>.dropdown-toggle.btn-primary:focus,#bookly-tbs .open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#004e75;border-color:#00334d}#bookly-tbs .btn-primary.active,#bookly-tbs .btn-primary:active,#bookly-tbs .open>.dropdown-toggle.btn-primary{background-image:none}#bookly-tbs .btn-primary.disabled.focus,#bookly-tbs .btn-primary.disabled:focus,#bookly-tbs .btn-primary.disabled:hover,#bookly-tbs .btn-primary[disabled].focus,#bookly-tbs .btn-primary[disabled]:focus,#bookly-tbs .btn-primary[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-primary.focus,#bookly-tbs fieldset[disabled] .btn-primary:focus,#bookly-tbs fieldset[disabled] .btn-primary:hover{background-color:#08c;border-color:#08c}#bookly-tbs .btn-primary .badge{color:#08c;background-color:#fff}#bookly-tbs .btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}#bookly-tbs .btn-success.focus,#bookly-tbs .btn-success:focus{color:#fff;background-color:#449d44;border-color:#2d672d}#bookly-tbs .btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}#bookly-tbs .btn-success.active,#bookly-tbs .btn-success:active,#bookly-tbs .open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#419641}#bookly-tbs .btn-success.active.focus,#bookly-tbs .btn-success.active:focus,#bookly-tbs .btn-success.active:hover,#bookly-tbs .btn-success:active.focus,#bookly-tbs .btn-success:active:focus,#bookly-tbs .btn-success:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-success.focus,#bookly-tbs .open>.dropdown-toggle.btn-success:focus,#bookly-tbs .open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#2d672d}#bookly-tbs .btn-success.active,#bookly-tbs .btn-success:active,#bookly-tbs .open>.dropdown-toggle.btn-success{background-image:none}#bookly-tbs .btn-success.disabled.focus,#bookly-tbs .btn-success.disabled:focus,#bookly-tbs .btn-success.disabled:hover,#bookly-tbs .btn-success[disabled].focus,#bookly-tbs .btn-success[disabled]:focus,#bookly-tbs .btn-success[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-success.focus,#bookly-tbs fieldset[disabled] .btn-success:focus,#bookly-tbs fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#5cb85c}#bookly-tbs .btn-success .badge{color:#5cb85c;background-color:#fff}#bookly-tbs .btn-info{color:#fff;background-color:#5bc0de;border-color:#31b0d5}#bookly-tbs .btn-info.focus,#bookly-tbs .btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#175b70}#bookly-tbs .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2289a7}#bookly-tbs .btn-info.active,#bookly-tbs .btn-info:active,#bookly-tbs .open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#2289a7}#bookly-tbs .btn-info.active.focus,#bookly-tbs .btn-info.active:focus,#bookly-tbs .btn-info.active:hover,#bookly-tbs .btn-info:active.focus,#bookly-tbs .btn-info:active:focus,#bookly-tbs .btn-info:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-info.focus,#bookly-tbs .open>.dropdown-toggle.btn-info:focus,#bookly-tbs .open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#175b70}#bookly-tbs .btn-info.active,#bookly-tbs .btn-info:active,#bookly-tbs .open>.dropdown-toggle.btn-info{background-image:none}#bookly-tbs .btn-info.disabled.focus,#bookly-tbs .btn-info.disabled:focus,#bookly-tbs .btn-info.disabled:hover,#bookly-tbs .btn-info[disabled].focus,#bookly-tbs .btn-info[disabled]:focus,#bookly-tbs .btn-info[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-info.focus,#bookly-tbs fieldset[disabled] .btn-info:focus,#bookly-tbs fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#31b0d5}#bookly-tbs .btn-info .badge{color:#5bc0de;background-color:#fff}#bookly-tbs .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}#bookly-tbs .btn-warning.focus,#bookly-tbs .btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#b06d0f}#bookly-tbs .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}#bookly-tbs .btn-warning.active,#bookly-tbs .btn-warning:active,#bookly-tbs .open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#eb9316}#bookly-tbs .btn-warning.active.focus,#bookly-tbs .btn-warning.active:focus,#bookly-tbs .btn-warning.active:hover,#bookly-tbs .btn-warning:active.focus,#bookly-tbs .btn-warning:active:focus,#bookly-tbs .btn-warning:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-warning.focus,#bookly-tbs .open>.dropdown-toggle.btn-warning:focus,#bookly-tbs .open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#b06d0f}#bookly-tbs .btn-warning.active,#bookly-tbs .btn-warning:active,#bookly-tbs .open>.dropdown-toggle.btn-warning{background-image:none}#bookly-tbs .btn-warning.disabled.focus,#bookly-tbs .btn-warning.disabled:focus,#bookly-tbs .btn-warning.disabled:hover,#bookly-tbs .btn-warning[disabled].focus,#bookly-tbs .btn-warning[disabled]:focus,#bookly-tbs .btn-warning[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-warning.focus,#bookly-tbs fieldset[disabled] .btn-warning:focus,#bookly-tbs fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#f0ad4e}#bookly-tbs .btn-warning .badge{color:#f0ad4e;background-color:#fff}#bookly-tbs .btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}#bookly-tbs .btn-danger.focus,#bookly-tbs .btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#8b211e}#bookly-tbs .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}#bookly-tbs .btn-danger.active,#bookly-tbs .btn-danger:active,#bookly-tbs .open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#c12e2a}#bookly-tbs .btn-danger.active.focus,#bookly-tbs .btn-danger.active:focus,#bookly-tbs .btn-danger.active:hover,#bookly-tbs .btn-danger:active.focus,#bookly-tbs .btn-danger:active:focus,#bookly-tbs .btn-danger:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-danger.focus,#bookly-tbs .open>.dropdown-toggle.btn-danger:focus,#bookly-tbs .open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#8b211e}#bookly-tbs .btn-danger.active,#bookly-tbs .btn-danger:active,#bookly-tbs .open>.dropdown-toggle.btn-danger{background-image:none}#bookly-tbs .btn-danger.disabled.focus,#bookly-tbs .btn-danger.disabled:focus,#bookly-tbs .btn-danger.disabled:hover,#bookly-tbs .btn-danger[disabled].focus,#bookly-tbs .btn-danger[disabled]:focus,#bookly-tbs .btn-danger[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-danger.focus,#bookly-tbs fieldset[disabled] .btn-danger:focus,#bookly-tbs fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d9534f}#bookly-tbs .btn-danger .badge{color:#d9534f;background-color:#fff}#bookly-tbs .btn-link{font-weight:400;color:#08c;border-radius:0}#bookly-tbs .btn-link,#bookly-tbs .btn-link.active,#bookly-tbs .btn-link:active,#bookly-tbs .btn-link[disabled],#bookly-tbs fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .btn-link,#bookly-tbs .btn-link:active,#bookly-tbs .btn-link:focus,#bookly-tbs .btn-link:hover{border-color:transparent}#bookly-tbs .btn-link:focus,#bookly-tbs .btn-link:hover{color:#005580;text-decoration:none;background-color:transparent}#bookly-tbs .btn-link[disabled]:focus,#bookly-tbs .btn-link[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-link:focus,#bookly-tbs fieldset[disabled] .btn-link:hover{color:#8a929e;text-decoration:none}#bookly-tbs .btn-group-lg>.btn,#bookly-tbs .btn-lg{padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:4px}#bookly-tbs .btn-group-sm>.btn,#bookly-tbs .btn-sm{padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs .btn-group-xs>.btn,#bookly-tbs .btn-xs{padding:1px 5px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs .btn-block{display:block;width:100%}#bookly-tbs .btn-block+.btn-block{margin-top:5px}#bookly-tbs input[type=button].btn-block,#bookly-tbs input[type=reset].btn-block,#bookly-tbs input[type=submit].btn-block{width:100%}#bookly-tbs .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}#bookly-tbs .fade.in{opacity:1}#bookly-tbs .collapse{display:none}#bookly-tbs .collapse.in{display:block}#bookly-tbs tr.collapse.in{display:table-row}#bookly-tbs tbody.collapse.in{display:table-row-group}#bookly-tbs .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}#bookly-tbs .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:5px dashed;border-top:5px solid\9;border-right:5px solid transparent;border-left:5px solid transparent}#bookly-tbs .dropdown,#bookly-tbs .dropup{position:relative}#bookly-tbs .dropdown-toggle:focus{outline:0}#bookly-tbs .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:15px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}#bookly-tbs .dropdown-menu.pull-right{right:0;left:auto}#bookly-tbs .dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}#bookly-tbs .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4;color:#5b6470;white-space:nowrap}#bookly-tbs .dropdown-menu>li>a:focus,#bookly-tbs .dropdown-menu>li>a:hover{color:#505762;text-decoration:none;background-color:#f5f5f5}#bookly-tbs .dropdown-menu>.active>a,#bookly-tbs .dropdown-menu>.active>a:focus,#bookly-tbs .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#08c;outline:0}#bookly-tbs .dropdown-menu>.disabled>a,#bookly-tbs .dropdown-menu>.disabled>a:focus,#bookly-tbs .dropdown-menu>.disabled>a:hover{color:#d9dee4}#bookly-tbs .dropdown-menu>.disabled>a:focus,#bookly-tbs .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}#bookly-tbs .open>.dropdown-menu{display:block}#bookly-tbs .open>a{outline:0}#bookly-tbs .dropdown-menu-right{right:0;left:auto}#bookly-tbs .dropdown-menu-left{right:auto;left:0}#bookly-tbs .dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.4;color:#d9dee4;white-space:nowrap}#bookly-tbs .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}#bookly-tbs .pull-right>.dropdown-menu{right:0;left:auto}#bookly-tbs .dropup .caret,#bookly-tbs .navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:5px dashed;border-bottom:5px solid\9}#bookly-tbs .dropup .dropdown-menu,#bookly-tbs .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){#bookly-tbs .navbar-right .dropdown-menu{right:0;left:auto}#bookly-tbs .navbar-right .dropdown-menu-left{right:auto;left:0}}#bookly-tbs .btn-group,#bookly-tbs .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}#bookly-tbs .btn-group-vertical>.btn,#bookly-tbs .btn-group>.btn{position:relative;float:left}#bookly-tbs .btn-group-vertical>.btn.active,#bookly-tbs .btn-group-vertical>.btn:active,#bookly-tbs .btn-group-vertical>.btn:focus,#bookly-tbs .btn-group-vertical>.btn:hover,#bookly-tbs .btn-group>.btn.active,#bookly-tbs .btn-group>.btn:active,#bookly-tbs .btn-group>.btn:focus,#bookly-tbs .btn-group>.btn:hover{z-index:2}#bookly-tbs .btn-group .btn+.btn,#bookly-tbs .btn-group .btn+.btn-group,#bookly-tbs .btn-group .btn-group+.btn,#bookly-tbs .btn-group .btn-group+.btn-group{margin-left:-1px}#bookly-tbs .btn-toolbar{margin-left:-5px}#bookly-tbs .btn-toolbar .btn,#bookly-tbs .btn-toolbar .btn-group,#bookly-tbs .btn-toolbar .input-group{float:left}#bookly-tbs .btn-toolbar>.btn,#bookly-tbs .btn-toolbar>.btn-group,#bookly-tbs .btn-toolbar>.input-group{margin-left:5px}#bookly-tbs .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}#bookly-tbs .btn-group>.btn:first-child{margin-left:0}#bookly-tbs .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .btn-group>.btn:last-child:not(:first-child),#bookly-tbs .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group>.btn-group{float:left}#bookly-tbs .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bookly-tbs .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,#bookly-tbs .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group .dropdown-toggle:active,#bookly-tbs .btn-group.open .dropdown-toggle{outline:0}#bookly-tbs .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}#bookly-tbs .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}#bookly-tbs .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bookly-tbs .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .btn .caret{margin-left:0}#bookly-tbs .btn-lg .caret{border-width:6px 6px 0;border-bottom-width:0}#bookly-tbs .dropup .btn-lg .caret{border-width:0 6px 6px}#bookly-tbs .btn-group-vertical>.btn,#bookly-tbs .btn-group-vertical>.btn-group,#bookly-tbs .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}#bookly-tbs .btn-group-vertical>.btn-group>.btn{float:none}#bookly-tbs .btn-group-vertical>.btn+.btn,#bookly-tbs .btn-group-vertical>.btn+.btn-group,#bookly-tbs .btn-group-vertical>.btn-group+.btn,#bookly-tbs .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}#bookly-tbs .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}#bookly-tbs .btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bookly-tbs .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bookly-tbs .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,#bookly-tbs .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}#bookly-tbs .btn-group-justified>.btn,#bookly-tbs .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}#bookly-tbs .btn-group-justified>.btn-group .btn{width:100%}#bookly-tbs .btn-group-justified>.btn-group .dropdown-menu{left:auto}#bookly-tbs [data-toggle=buttons]>.btn input[type=checkbox],#bookly-tbs [data-toggle=buttons]>.btn input[type=radio],#bookly-tbs [data-toggle=buttons]>.btn-group>.btn input[type=checkbox],#bookly-tbs [data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}#bookly-tbs .input-group{position:relative;display:table;border-collapse:separate}#bookly-tbs .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}#bookly-tbs .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}#bookly-tbs .input-group .form-control:focus{z-index:3}#bookly-tbs .input-group-lg>.form-control,#bookly-tbs .input-group-lg>.input-group-addon,#bookly-tbs .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bookly-tbs select.input-group-lg>.form-control,#bookly-tbs select.input-group-lg>.input-group-addon,#bookly-tbs select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}#bookly-tbs select[multiple].input-group-lg>.form-control,#bookly-tbs select[multiple].input-group-lg>.input-group-addon,#bookly-tbs select[multiple].input-group-lg>.input-group-btn>.btn,#bookly-tbs textarea.input-group-lg>.form-control,#bookly-tbs textarea.input-group-lg>.input-group-addon,#bookly-tbs textarea.input-group-lg>.input-group-btn>.btn{height:auto}#bookly-tbs .input-group-sm>.form-control,#bookly-tbs .input-group-sm>.input-group-addon,#bookly-tbs .input-group-sm>.input-group-btn>.btn{height:32px;padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs select.input-group-sm>.form-control,#bookly-tbs select.input-group-sm>.input-group-addon,#bookly-tbs select.input-group-sm>.input-group-btn>.btn{height:32px;line-height:32px}#bookly-tbs select[multiple].input-group-sm>.form-control,#bookly-tbs select[multiple].input-group-sm>.input-group-addon,#bookly-tbs select[multiple].input-group-sm>.input-group-btn>.btn,#bookly-tbs textarea.input-group-sm>.form-control,#bookly-tbs textarea.input-group-sm>.input-group-addon,#bookly-tbs textarea.input-group-sm>.input-group-btn>.btn{height:auto}#bookly-tbs .input-group .form-control,#bookly-tbs .input-group-addon,#bookly-tbs .input-group-btn{display:table-cell}#bookly-tbs .input-group .form-control:not(:first-child):not(:last-child),#bookly-tbs .input-group-addon:not(:first-child):not(:last-child),#bookly-tbs .input-group-btn:not(:first-child):not(:last-child){border-radius:0}#bookly-tbs .input-group-addon,#bookly-tbs .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}#bookly-tbs .input-group-addon{padding:6px 12px;font-size:15px;font-weight:400;line-height:1;color:#3e424a;text-align:center;background-color:#e8ebf0;border:1px solid #d9dee4;border-radius:4px}#bookly-tbs .input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:3px}#bookly-tbs .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}#bookly-tbs .input-group-addon input[type=checkbox],#bookly-tbs .input-group-addon input[type=radio]{margin-top:0}#bookly-tbs .input-group .form-control:first-child,#bookly-tbs .input-group-addon:first-child,#bookly-tbs .input-group-btn:first-child>.btn,#bookly-tbs .input-group-btn:first-child>.btn-group>.btn,#bookly-tbs .input-group-btn:first-child>.dropdown-toggle,#bookly-tbs .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,#bookly-tbs .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .input-group-addon:first-child{border-right:0}#bookly-tbs .input-group .form-control:last-child,#bookly-tbs .input-group-addon:last-child,#bookly-tbs .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,#bookly-tbs .input-group-btn:first-child>.btn:not(:first-child),#bookly-tbs .input-group-btn:last-child>.btn,#bookly-tbs .input-group-btn:last-child>.btn-group>.btn,#bookly-tbs .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .input-group-addon:last-child{border-left:0}#bookly-tbs .input-group-btn{position:relative;font-size:0;white-space:nowrap}#bookly-tbs .input-group-btn>.btn{position:relative}#bookly-tbs .input-group-btn>.btn+.btn{margin-left:-1px}#bookly-tbs .input-group-btn>.btn:active,#bookly-tbs .input-group-btn>.btn:focus,#bookly-tbs .input-group-btn>.btn:hover{z-index:2}#bookly-tbs .input-group-btn:first-child>.btn,#bookly-tbs .input-group-btn:first-child>.btn-group{margin-right:-1px}#bookly-tbs .input-group-btn:last-child>.btn,#bookly-tbs .input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}#bookly-tbs .nav{padding-left:0;margin-bottom:0;list-style:none}#bookly-tbs .nav>li{position:relative;display:block}#bookly-tbs .nav>li>a{position:relative;display:block;padding:10px 15px}#bookly-tbs .nav>li>a:focus,#bookly-tbs .nav>li>a:hover{text-decoration:none;background-color:#e8ebf0}#bookly-tbs .nav>li.disabled>a{color:#d9dee4}#bookly-tbs .nav>li.disabled>a:focus,#bookly-tbs .nav>li.disabled>a:hover{color:#d9dee4;text-decoration:none;cursor:not-allowed;background-color:transparent}#bookly-tbs .nav .open>a,#bookly-tbs .nav .open>a:focus,#bookly-tbs .nav .open>a:hover{background-color:#e8ebf0;border-color:#08c}#bookly-tbs .nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}#bookly-tbs .nav>li>a>img{max-width:none}#bookly-tbs .nav-tabs{border-bottom:1px solid #d9dee4}#bookly-tbs .nav-tabs>li{float:left;margin-bottom:-1px}#bookly-tbs .nav-tabs>li>a{margin-right:2px;line-height:1.4;border:1px solid transparent;border-radius:4px 4px 0 0}#bookly-tbs .nav-tabs>li>a:hover{border-color:#e8ebf0 #e8ebf0 #d9dee4}#bookly-tbs .nav-tabs>li.active>a,#bookly-tbs .nav-tabs>li.active>a:focus,#bookly-tbs .nav-tabs>li.active>a:hover{color:#8a929e;cursor:default;background-color:transparent;border:1px solid transparent;border-bottom-color:transparent}#bookly-tbs .nav-tabs.nav-justified{width:100%;border-bottom:0}#bookly-tbs .nav-tabs.nav-justified>li{float:none}#bookly-tbs .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}#bookly-tbs .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:1px){#bookly-tbs .nav-tabs.nav-justified>li{display:table-cell;width:1%}#bookly-tbs .nav-tabs.nav-justified>li>a{margin-bottom:0}}#bookly-tbs .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}#bookly-tbs .nav-tabs.nav-justified>.active>a,#bookly-tbs .nav-tabs.nav-justified>.active>a:focus,#bookly-tbs .nav-tabs.nav-justified>.active>a:hover{border:1px solid #08c}@media (min-width:768px){#bookly-tbs .nav-tabs.nav-justified>li>a{border-bottom:1px solid #d9dee4;border-radius:4px 4px 0 0}#bookly-tbs .nav-tabs.nav-justified>.active>a,#bookly-tbs .nav-tabs.nav-justified>.active>a:focus,#bookly-tbs .nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#08c}}#bookly-tbs .nav-pills>li{float:left}#bookly-tbs .nav-pills>li>a{border-radius:4px}#bookly-tbs .nav-pills>li+li{margin-left:2px}#bookly-tbs .nav-pills>li.active>a,#bookly-tbs .nav-pills>li.active>a:focus,#bookly-tbs .nav-pills>li.active>a:hover{color:#fff;background-color:#08c}#bookly-tbs .nav-stacked>li{float:none}#bookly-tbs .nav-stacked>li+li{margin-top:2px;margin-left:0}#bookly-tbs .nav-justified{width:100%}#bookly-tbs .nav-justified>li{float:none}#bookly-tbs .nav-justified>li>a{margin-bottom:5px;text-align:center}#bookly-tbs .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:1px){#bookly-tbs .nav-justified>li{display:table-cell;width:1%}#bookly-tbs .nav-justified>li>a{margin-bottom:0}}#bookly-tbs .nav-tabs-justified{border-bottom:0}#bookly-tbs .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}#bookly-tbs .nav-tabs-justified>.active>a,#bookly-tbs .nav-tabs-justified>.active>a:focus,#bookly-tbs .nav-tabs-justified>.active>a:hover{border:1px solid #08c}@media (min-width:768px){#bookly-tbs .nav-tabs-justified>li>a{border-bottom:1px solid #d9dee4;border-radius:4px 4px 0 0}#bookly-tbs .nav-tabs-justified>.active>a,#bookly-tbs .nav-tabs-justified>.active>a:focus,#bookly-tbs .nav-tabs-justified>.active>a:hover{border-bottom-color:#08c}}#bookly-tbs .tab-content>.tab-pane{display:none}#bookly-tbs .tab-content>.active{display:block}#bookly-tbs .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .navbar{position:relative;min-height:50px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){#bookly-tbs .navbar{border-radius:4px}}@media (min-width:768px){#bookly-tbs .navbar-header{float:left}}#bookly-tbs .navbar-collapse{padding-right:10px;padding-left:10px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}#bookly-tbs .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){#bookly-tbs .navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}#bookly-tbs .navbar-collapse.in{overflow-y:visible}#bookly-tbs .navbar-fixed-bottom .navbar-collapse,#bookly-tbs .navbar-fixed-top .navbar-collapse,#bookly-tbs .navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}#bookly-tbs .navbar-fixed-bottom .navbar-collapse,#bookly-tbs .navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){#bookly-tbs .navbar-fixed-bottom .navbar-collapse,#bookly-tbs .navbar-fixed-top .navbar-collapse{max-height:200px}}#bookly-tbs .container-fluid>.navbar-collapse,#bookly-tbs .container-fluid>.navbar-header,#bookly-tbs .container>.navbar-collapse,#bookly-tbs .container>.navbar-header{margin-right:-10px;margin-left:-10px}@media (min-width:768px){#bookly-tbs .container-fluid>.navbar-collapse,#bookly-tbs .container-fluid>.navbar-header,#bookly-tbs .container>.navbar-collapse,#bookly-tbs .container>.navbar-header{margin-right:0;margin-left:0}}#bookly-tbs .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){#bookly-tbs .navbar-static-top{border-radius:0}}#bookly-tbs .navbar-fixed-bottom,#bookly-tbs .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){#bookly-tbs .navbar-fixed-bottom,#bookly-tbs .navbar-fixed-top{border-radius:0}}#bookly-tbs .navbar-fixed-top{top:0;border-width:0 0 1px}#bookly-tbs .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}#bookly-tbs .navbar-brand{float:left;height:50px;padding:14.5px 10px;font-size:18px;line-height:21px}#bookly-tbs .navbar-brand:focus,#bookly-tbs .navbar-brand:hover{text-decoration:none}#bookly-tbs .navbar-brand>img{display:block}@media (min-width:768px){#bookly-tbs .navbar>.container .navbar-brand,#bookly-tbs .navbar>.container-fluid .navbar-brand{margin-left:-10px}}#bookly-tbs .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:10px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}#bookly-tbs .navbar-toggle:focus{outline:0}#bookly-tbs .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}#bookly-tbs .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){#bookly-tbs .navbar-toggle{display:none}}#bookly-tbs .navbar-nav{margin:7.25px -10px}#bookly-tbs .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){#bookly-tbs .navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .navbar-nav .open .dropdown-menu .dropdown-header,#bookly-tbs .navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}#bookly-tbs .navbar-nav .open .dropdown-menu>li>a{line-height:21px}#bookly-tbs .navbar-nav .open .dropdown-menu>li>a:focus,#bookly-tbs .navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){#bookly-tbs .navbar-nav{float:left;margin:0}#bookly-tbs .navbar-nav>li{float:left}#bookly-tbs .navbar-nav>li>a{padding-top:14.5px;padding-bottom:14.5px}}#bookly-tbs .navbar-form{padding:10px 10px;margin-top:7.5px;margin-right:-10px;margin-bottom:7.5px;margin-left:-10px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){#bookly-tbs .navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bookly-tbs .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}#bookly-tbs .navbar-form .form-control-static{display:inline-block}#bookly-tbs .navbar-form .input-group{display:inline-table;vertical-align:middle}#bookly-tbs .navbar-form .input-group .form-control,#bookly-tbs .navbar-form .input-group .input-group-addon,#bookly-tbs .navbar-form .input-group .input-group-btn{width:auto}#bookly-tbs .navbar-form .input-group>.form-control{width:100%}#bookly-tbs .navbar-form .control-label{margin-bottom:0;vertical-align:middle}#bookly-tbs .navbar-form .checkbox,#bookly-tbs .navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bookly-tbs .navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){#bookly-tbs .navbar-form .form-group{margin-bottom:5px}#bookly-tbs .navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){#bookly-tbs .navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}#bookly-tbs .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bookly-tbs .navbar-btn{margin-top:7.5px;margin-bottom:7.5px}#bookly-tbs .navbar-btn.btn-sm{margin-top:9px;margin-bottom:9px}#bookly-tbs .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}#bookly-tbs .navbar-text{margin-top:14.5px;margin-bottom:14.5px}@media (min-width:768px){#bookly-tbs .navbar-text{float:left;margin-right:10px;margin-left:10px}}@media (min-width:768px){#bookly-tbs .navbar-left{float:left!important}#bookly-tbs .navbar-right{float:right!important;margin-right:-10px}#bookly-tbs .navbar-right~.navbar-right{margin-right:0}}#bookly-tbs .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-brand{color:#777}#bookly-tbs .navbar-default .navbar-brand:focus,#bookly-tbs .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}#bookly-tbs .navbar-default .navbar-text{color:#777}#bookly-tbs .navbar-default .navbar-nav>li>a{color:#777}#bookly-tbs .navbar-default .navbar-nav>li>a:focus,#bookly-tbs .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}#bookly-tbs .navbar-default .navbar-nav>.active>a,#bookly-tbs .navbar-default .navbar-nav>.active>a:focus,#bookly-tbs .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-nav>.disabled>a,#bookly-tbs .navbar-default .navbar-nav>.disabled>a:focus,#bookly-tbs .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}#bookly-tbs .navbar-default .navbar-toggle{border-color:#e8ebf0}#bookly-tbs .navbar-default .navbar-toggle:focus,#bookly-tbs .navbar-default .navbar-toggle:hover{background-color:#e8ebf0}#bookly-tbs .navbar-default .navbar-toggle .icon-bar{background-color:#8a929e}#bookly-tbs .navbar-default .navbar-collapse,#bookly-tbs .navbar-default .navbar-form{border-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-nav>.open>a,#bookly-tbs .navbar-default .navbar-nav>.open>a:focus,#bookly-tbs .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.active>a,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}#bookly-tbs .navbar-default .navbar-link{color:#777}#bookly-tbs .navbar-default .navbar-link:hover{color:#333}#bookly-tbs .navbar-default .btn-link{color:#777}#bookly-tbs .navbar-default .btn-link:focus,#bookly-tbs .navbar-default .btn-link:hover{color:#333}#bookly-tbs .navbar-default .btn-link[disabled]:focus,#bookly-tbs .navbar-default .btn-link[disabled]:hover,#bookly-tbs fieldset[disabled] .navbar-default .btn-link:focus,#bookly-tbs fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}#bookly-tbs .navbar-inverse{background-color:#222;border-color:#080808}#bookly-tbs .navbar-inverse .navbar-brand{color:#fff}#bookly-tbs .navbar-inverse .navbar-brand:focus,#bookly-tbs .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-text{color:#fff}#bookly-tbs .navbar-inverse .navbar-nav>li>a{color:#fff}#bookly-tbs .navbar-inverse .navbar-nav>li>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-nav>.active>a,#bookly-tbs .navbar-inverse .navbar-nav>.active>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav>.disabled>a,#bookly-tbs .navbar-inverse .navbar-nav>.disabled>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-toggle{border-color:#333}#bookly-tbs .navbar-inverse .navbar-toggle:focus,#bookly-tbs .navbar-inverse .navbar-toggle:hover{background-color:#333}#bookly-tbs .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}#bookly-tbs .navbar-inverse .navbar-collapse,#bookly-tbs .navbar-inverse .navbar-form{border-color:#101010}#bookly-tbs .navbar-inverse .navbar-nav>.open>a,#bookly-tbs .navbar-inverse .navbar-nav>.open>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}#bookly-tbs .navbar-inverse .navbar-link{color:#fff}#bookly-tbs .navbar-inverse .navbar-link:hover{color:#fff}#bookly-tbs .navbar-inverse .btn-link{color:#fff}#bookly-tbs .navbar-inverse .btn-link:focus,#bookly-tbs .navbar-inverse .btn-link:hover{color:#fff}#bookly-tbs .navbar-inverse .btn-link[disabled]:focus,#bookly-tbs .navbar-inverse .btn-link[disabled]:hover,#bookly-tbs fieldset[disabled] .navbar-inverse .btn-link:focus,#bookly-tbs fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}#bookly-tbs .breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:4px}#bookly-tbs .breadcrumb>li{display:inline-block}#bookly-tbs .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}#bookly-tbs .breadcrumb>.active{color:#d9dee4}#bookly-tbs .pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}#bookly-tbs .pagination>li{display:inline}#bookly-tbs .pagination>li>a,#bookly-tbs .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.4;color:#08c;text-decoration:none;background-color:#fff;border:1px solid #e8ebf0}#bookly-tbs .pagination>li:first-child>a,#bookly-tbs .pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#bookly-tbs .pagination>li:last-child>a,#bookly-tbs .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}#bookly-tbs .pagination>li>a:focus,#bookly-tbs .pagination>li>a:hover,#bookly-tbs .pagination>li>span:focus,#bookly-tbs .pagination>li>span:hover{z-index:2;color:#005580;background-color:#e8ebf0;border-color:#e8ebf0}#bookly-tbs .pagination>.active>a,#bookly-tbs .pagination>.active>a:focus,#bookly-tbs .pagination>.active>a:hover,#bookly-tbs .pagination>.active>span,#bookly-tbs .pagination>.active>span:focus,#bookly-tbs .pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#08c;border-color:#08c}#bookly-tbs .pagination>.disabled>a,#bookly-tbs .pagination>.disabled>a:focus,#bookly-tbs .pagination>.disabled>a:hover,#bookly-tbs .pagination>.disabled>span,#bookly-tbs .pagination>.disabled>span:focus,#bookly-tbs .pagination>.disabled>span:hover{color:#d9dee4;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#e8ebf0}#bookly-tbs .pagination-lg>li>a,#bookly-tbs .pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}#bookly-tbs .pagination-lg>li:first-child>a,#bookly-tbs .pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}#bookly-tbs .pagination-lg>li:last-child>a,#bookly-tbs .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}#bookly-tbs .pagination-sm>li>a,#bookly-tbs .pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.53846154}#bookly-tbs .pagination-sm>li:first-child>a,#bookly-tbs .pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .pagination-sm>li:last-child>a,#bookly-tbs .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}#bookly-tbs .pager{padding-left:0;margin:21px 0;text-align:center;list-style:none}#bookly-tbs .pager li{display:inline}#bookly-tbs .pager li>a,#bookly-tbs .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #e8ebf0;border-radius:15px}#bookly-tbs .pager li>a:focus,#bookly-tbs .pager li>a:hover{text-decoration:none;background-color:#e8ebf0}#bookly-tbs .pager .next>a,#bookly-tbs .pager .next>span{float:right}#bookly-tbs .pager .previous>a,#bookly-tbs .pager .previous>span{float:left}#bookly-tbs .pager .disabled>a,#bookly-tbs .pager .disabled>a:focus,#bookly-tbs .pager .disabled>a:hover,#bookly-tbs .pager .disabled>span{color:#d9dee4;pointer-events:none;cursor:not-allowed;background-color:#fff}#bookly-tbs .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}#bookly-tbs a.label:focus,#bookly-tbs a.label:hover{color:#fff;text-decoration:none;cursor:pointer}#bookly-tbs .label:empty{display:none}#bookly-tbs .btn .label{position:relative;top:-1px}#bookly-tbs .label-default{background-color:#d9dee4}#bookly-tbs .label-default[href]:focus,#bookly-tbs .label-default[href]:hover{background-color:#bbc4cf}#bookly-tbs .label-primary{background-color:#08c}#bookly-tbs .label-primary[href]:focus,#bookly-tbs .label-primary[href]:hover{background-color:#069}#bookly-tbs .label-success{background-color:#5cb85c}#bookly-tbs .label-success[href]:focus,#bookly-tbs .label-success[href]:hover{background-color:#449d44}#bookly-tbs .label-info{background-color:#5bc0de}#bookly-tbs .label-info[href]:focus,#bookly-tbs .label-info[href]:hover{background-color:#31b0d5}#bookly-tbs .label-warning{background-color:#f0ad4e}#bookly-tbs .label-warning[href]:focus,#bookly-tbs .label-warning[href]:hover{background-color:#ec971f}#bookly-tbs .label-danger{background-color:#d9534f}#bookly-tbs .label-danger[href]:focus,#bookly-tbs .label-danger[href]:hover{background-color:#c9302c}#bookly-tbs .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#d9dee4;border-radius:10px}#bookly-tbs .badge:empty{display:none}#bookly-tbs .btn .badge{position:relative;top:-1px}#bookly-tbs .btn-group-xs>.btn .badge,#bookly-tbs .btn-xs .badge{top:0;padding:1px 5px}#bookly-tbs a.badge:focus,#bookly-tbs a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}#bookly-tbs .list-group-item.active>.badge,#bookly-tbs .nav-pills>.active>a>.badge{color:#08c;background-color:#fff}#bookly-tbs .list-group-item>.badge{float:right}#bookly-tbs .list-group-item>.badge+.badge{margin-right:5px}#bookly-tbs .nav-pills>li>a>.badge{margin-left:3px}#bookly-tbs .jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#e8ebf0}#bookly-tbs .jumbotron .h1,#bookly-tbs .jumbotron h1{color:inherit}#bookly-tbs .jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}#bookly-tbs .jumbotron>hr{border-top-color:#c9d0dc}#bookly-tbs .container .jumbotron,#bookly-tbs .container-fluid .jumbotron{padding-right:10px;padding-left:10px;border-radius:6px}#bookly-tbs .jumbotron .container{max-width:100%}@media screen and (min-width:768px){#bookly-tbs .jumbotron{padding-top:48px;padding-bottom:48px}#bookly-tbs .container .jumbotron,#bookly-tbs .container-fluid .jumbotron{padding-right:60px;padding-left:60px}#bookly-tbs .jumbotron .h1,#bookly-tbs .jumbotron h1{font-size:68px}}#bookly-tbs .thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.4;background-color:transparent;border:1px solid #e8ebf0;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}#bookly-tbs .thumbnail a>img,#bookly-tbs .thumbnail>img{margin-right:auto;margin-left:auto}#bookly-tbs a.thumbnail.active,#bookly-tbs a.thumbnail:focus,#bookly-tbs a.thumbnail:hover{border-color:#08c}#bookly-tbs .thumbnail .caption{padding:9px;color:#3e424a}#bookly-tbs .alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}#bookly-tbs .alert h4{margin-top:0;color:inherit}#bookly-tbs .alert .alert-link{font-weight:700}#bookly-tbs .alert>p,#bookly-tbs .alert>ul{margin-bottom:0}#bookly-tbs .alert>p+p{margin-top:5px}#bookly-tbs .alert-dismissable,#bookly-tbs .alert-dismissible{padding-right:35px}#bookly-tbs .alert-dismissable .close,#bookly-tbs .alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}#bookly-tbs .alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}#bookly-tbs .alert-success hr{border-top-color:#c9e2b3}#bookly-tbs .alert-success .alert-link{color:#2b542c}#bookly-tbs .alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}#bookly-tbs .alert-info hr{border-top-color:#a6e1ec}#bookly-tbs .alert-info .alert-link{color:#245269}#bookly-tbs .alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}#bookly-tbs .alert-warning hr{border-top-color:#f7e1b5}#bookly-tbs .alert-warning .alert-link{color:#66512c}#bookly-tbs .alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}#bookly-tbs .alert-danger hr{border-top-color:#e4b9c0}#bookly-tbs .alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}#bookly-tbs .progress{height:21px;margin-bottom:21px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}#bookly-tbs .progress-bar{float:left;width:0;height:100%;font-size:13px;line-height:21px;color:#fff;text-align:center;background-color:#08c;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}#bookly-tbs .progress-bar-striped,#bookly-tbs .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}#bookly-tbs .progress-bar.active,#bookly-tbs .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}#bookly-tbs .progress-bar-success{background-color:#5cb85c}#bookly-tbs .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bookly-tbs .progress-bar-info{background-color:#5bc0de}#bookly-tbs .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bookly-tbs .progress-bar-warning{background-color:#f0ad4e}#bookly-tbs .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bookly-tbs .progress-bar-danger{background-color:#d9534f}#bookly-tbs .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bookly-tbs .media{margin-top:15px}#bookly-tbs .media:first-child{margin-top:0}#bookly-tbs .media,#bookly-tbs .media-body{overflow:hidden;zoom:1}#bookly-tbs .media-body{width:10000px}#bookly-tbs .media-object{display:block}#bookly-tbs .media-object.img-thumbnail{max-width:none}#bookly-tbs .media-right,#bookly-tbs .media>.pull-right{padding-left:10px}#bookly-tbs .media-left,#bookly-tbs .media>.pull-left{padding-right:10px}#bookly-tbs .media-body,#bookly-tbs .media-left,#bookly-tbs .media-right{display:table-cell;vertical-align:top}#bookly-tbs .media-middle{vertical-align:middle}#bookly-tbs .media-bottom{vertical-align:bottom}#bookly-tbs .media-heading{margin-top:0;margin-bottom:5px}#bookly-tbs .media-list{padding-left:0;list-style:none}#bookly-tbs .list-group{padding-left:0;margin-bottom:20px}#bookly-tbs .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #e8ebf0}#bookly-tbs .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}#bookly-tbs .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bookly-tbs a.list-group-item,#bookly-tbs button.list-group-item{color:#555}#bookly-tbs a.list-group-item .list-group-item-heading,#bookly-tbs button.list-group-item .list-group-item-heading{color:#333}#bookly-tbs a.list-group-item:focus,#bookly-tbs a.list-group-item:hover,#bookly-tbs button.list-group-item:focus,#bookly-tbs button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}#bookly-tbs button.list-group-item{width:100%;text-align:left}#bookly-tbs .list-group-item.disabled,#bookly-tbs .list-group-item.disabled:focus,#bookly-tbs .list-group-item.disabled:hover{color:#d9dee4;cursor:not-allowed;background-color:#e8ebf0}#bookly-tbs .list-group-item.disabled .list-group-item-heading,#bookly-tbs .list-group-item.disabled:focus .list-group-item-heading,#bookly-tbs .list-group-item.disabled:hover .list-group-item-heading{color:inherit}#bookly-tbs .list-group-item.disabled .list-group-item-text,#bookly-tbs .list-group-item.disabled:focus .list-group-item-text,#bookly-tbs .list-group-item.disabled:hover .list-group-item-text{color:#d9dee4}#bookly-tbs .list-group-item.active,#bookly-tbs .list-group-item.active:focus,#bookly-tbs .list-group-item.active:hover{z-index:2;color:#fff;background-color:#08c;border-color:#08c}#bookly-tbs .list-group-item.active .list-group-item-heading,#bookly-tbs .list-group-item.active .list-group-item-heading>.small,#bookly-tbs .list-group-item.active .list-group-item-heading>small,#bookly-tbs .list-group-item.active:focus .list-group-item-heading,#bookly-tbs .list-group-item.active:focus .list-group-item-heading>.small,#bookly-tbs .list-group-item.active:focus .list-group-item-heading>small,#bookly-tbs .list-group-item.active:hover .list-group-item-heading,#bookly-tbs .list-group-item.active:hover .list-group-item-heading>.small,#bookly-tbs .list-group-item.active:hover .list-group-item-heading>small{color:inherit}#bookly-tbs .list-group-item.active .list-group-item-text,#bookly-tbs .list-group-item.active:focus .list-group-item-text,#bookly-tbs .list-group-item.active:hover .list-group-item-text{color:#9df}#bookly-tbs .list-group-item-success{color:#3c763d;background-color:#dff0d8}#bookly-tbs a.list-group-item-success,#bookly-tbs button.list-group-item-success{color:#3c763d}#bookly-tbs a.list-group-item-success .list-group-item-heading,#bookly-tbs button.list-group-item-success .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-success:focus,#bookly-tbs a.list-group-item-success:hover,#bookly-tbs button.list-group-item-success:focus,#bookly-tbs button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}#bookly-tbs a.list-group-item-success.active,#bookly-tbs a.list-group-item-success.active:focus,#bookly-tbs a.list-group-item-success.active:hover,#bookly-tbs button.list-group-item-success.active,#bookly-tbs button.list-group-item-success.active:focus,#bookly-tbs button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}#bookly-tbs .list-group-item-info{color:#31708f;background-color:#d9edf7}#bookly-tbs a.list-group-item-info,#bookly-tbs button.list-group-item-info{color:#31708f}#bookly-tbs a.list-group-item-info .list-group-item-heading,#bookly-tbs button.list-group-item-info .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-info:focus,#bookly-tbs a.list-group-item-info:hover,#bookly-tbs button.list-group-item-info:focus,#bookly-tbs button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}#bookly-tbs a.list-group-item-info.active,#bookly-tbs a.list-group-item-info.active:focus,#bookly-tbs a.list-group-item-info.active:hover,#bookly-tbs button.list-group-item-info.active,#bookly-tbs button.list-group-item-info.active:focus,#bookly-tbs button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}#bookly-tbs .list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}#bookly-tbs a.list-group-item-warning,#bookly-tbs button.list-group-item-warning{color:#8a6d3b}#bookly-tbs a.list-group-item-warning .list-group-item-heading,#bookly-tbs button.list-group-item-warning .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-warning:focus,#bookly-tbs a.list-group-item-warning:hover,#bookly-tbs button.list-group-item-warning:focus,#bookly-tbs button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}#bookly-tbs a.list-group-item-warning.active,#bookly-tbs a.list-group-item-warning.active:focus,#bookly-tbs a.list-group-item-warning.active:hover,#bookly-tbs button.list-group-item-warning.active,#bookly-tbs button.list-group-item-warning.active:focus,#bookly-tbs button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}#bookly-tbs .list-group-item-danger{color:#a94442;background-color:#f2dede}#bookly-tbs a.list-group-item-danger,#bookly-tbs button.list-group-item-danger{color:#a94442}#bookly-tbs a.list-group-item-danger .list-group-item-heading,#bookly-tbs button.list-group-item-danger .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-danger:focus,#bookly-tbs a.list-group-item-danger:hover,#bookly-tbs button.list-group-item-danger:focus,#bookly-tbs button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}#bookly-tbs a.list-group-item-danger.active,#bookly-tbs a.list-group-item-danger.active:focus,#bookly-tbs a.list-group-item-danger.active:hover,#bookly-tbs button.list-group-item-danger.active,#bookly-tbs button.list-group-item-danger.active:focus,#bookly-tbs button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}#bookly-tbs .list-group-item-heading{margin-top:0;margin-bottom:5px}#bookly-tbs .list-group-item-text{margin-bottom:0;line-height:1.3}#bookly-tbs .panel{margin-bottom:21px;background-color:#fff;border:2px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}#bookly-tbs .panel-body{padding:15px}#bookly-tbs .panel-heading{padding:15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel-heading>.dropdown .dropdown-toggle{color:inherit}#bookly-tbs .panel-title{margin-top:0;margin-bottom:0;font-size:15px;color:inherit}#bookly-tbs .panel-title>.small,#bookly-tbs .panel-title>.small>a,#bookly-tbs .panel-title>a,#bookly-tbs .panel-title>small,#bookly-tbs .panel-title>small>a{color:inherit}#bookly-tbs .panel-footer{padding:15px;background-color:#e8ebf0;border-top:1px solid #e8ebf0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.list-group,#bookly-tbs .panel>.panel-collapse>.list-group{margin-bottom:0}#bookly-tbs .panel>.list-group .list-group-item,#bookly-tbs .panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}#bookly-tbs .panel>.list-group:first-child .list-group-item:first-child,#bookly-tbs .panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel>.list-group:last-child .list-group-item:last-child,#bookly-tbs .panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}#bookly-tbs .list-group+.panel-footer{border-top-width:0}#bookly-tbs .panel>.panel-collapse>.table,#bookly-tbs .panel>.table,#bookly-tbs .panel>.table-responsive>.table{margin-bottom:0}#bookly-tbs .panel>.panel-collapse>.table caption,#bookly-tbs .panel>.table caption,#bookly-tbs .panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child,#bookly-tbs .panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child,#bookly-tbs .panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}#bookly-tbs .panel>.panel-body+.table,#bookly-tbs .panel>.panel-body+.table-responsive,#bookly-tbs .panel>.table+.panel-body,#bookly-tbs .panel>.table-responsive+.panel-body{border-top:1px solid #d9dee4}#bookly-tbs .panel>.table>tbody:first-child>tr:first-child td,#bookly-tbs .panel>.table>tbody:first-child>tr:first-child th{border-top:0}#bookly-tbs .panel>.table-bordered,#bookly-tbs .panel>.table-responsive>.table-bordered{border:0}#bookly-tbs .panel>.table-bordered>tbody>tr>td:first-child,#bookly-tbs .panel>.table-bordered>tbody>tr>th:first-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>td:first-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>th:first-child,#bookly-tbs .panel>.table-bordered>thead>tr>td:first-child,#bookly-tbs .panel>.table-bordered>thead>tr>th:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}#bookly-tbs .panel>.table-bordered>tbody>tr>td:last-child,#bookly-tbs .panel>.table-bordered>tbody>tr>th:last-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>td:last-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>th:last-child,#bookly-tbs .panel>.table-bordered>thead>tr>td:last-child,#bookly-tbs .panel>.table-bordered>thead>tr>th:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}#bookly-tbs .panel>.table-bordered>tbody>tr:first-child>td,#bookly-tbs .panel>.table-bordered>tbody>tr:first-child>th,#bookly-tbs .panel>.table-bordered>thead>tr:first-child>td,#bookly-tbs .panel>.table-bordered>thead>tr:first-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr:first-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}#bookly-tbs .panel>.table-bordered>tbody>tr:last-child>td,#bookly-tbs .panel>.table-bordered>tbody>tr:last-child>th,#bookly-tbs .panel>.table-bordered>tfoot>tr:last-child>td,#bookly-tbs .panel>.table-bordered>tfoot>tr:last-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}#bookly-tbs .panel>.table-responsive{margin-bottom:0;border:0}#bookly-tbs .panel-group{margin-bottom:21px}#bookly-tbs .panel-group .panel{margin-bottom:0;border-radius:4px}#bookly-tbs .panel-group .panel+.panel{margin-top:10px}#bookly-tbs .panel-group .panel-heading{border-bottom:0}#bookly-tbs .panel-group .panel-heading+.panel-collapse>.list-group,#bookly-tbs .panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #e8ebf0}#bookly-tbs .panel-group .panel-footer{border-top:0}#bookly-tbs .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #e8ebf0}#bookly-tbs .panel-default{border-color:#e8ebf0}#bookly-tbs .panel-default>.panel-heading{color:#3e424a;background-color:#e8ebf0;border-color:#e8ebf0}#bookly-tbs .panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e8ebf0}#bookly-tbs .panel-default>.panel-heading .badge{color:#e8ebf0;background-color:#3e424a}#bookly-tbs .panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e8ebf0}#bookly-tbs .panel-primary{border-color:#08c}#bookly-tbs .panel-primary>.panel-heading{color:#fff;background-color:#08c;border-color:#08c}#bookly-tbs .panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#08c}#bookly-tbs .panel-primary>.panel-heading .badge{color:#08c;background-color:#fff}#bookly-tbs .panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#08c}#bookly-tbs .panel-success{border-color:#d6e9c6}#bookly-tbs .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}#bookly-tbs .panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}#bookly-tbs .panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}#bookly-tbs .panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}#bookly-tbs .panel-info{border-color:#bce8f1}#bookly-tbs .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}#bookly-tbs .panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}#bookly-tbs .panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}#bookly-tbs .panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}#bookly-tbs .panel-warning{border-color:#faebcc}#bookly-tbs .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}#bookly-tbs .panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}#bookly-tbs .panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}#bookly-tbs .panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}#bookly-tbs .panel-danger{border-color:#ebccd1}#bookly-tbs .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}#bookly-tbs .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}#bookly-tbs .panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}#bookly-tbs .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}#bookly-tbs .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}#bookly-tbs .embed-responsive .embed-responsive-item,#bookly-tbs .embed-responsive embed,#bookly-tbs .embed-responsive iframe,#bookly-tbs .embed-responsive object,#bookly-tbs .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}#bookly-tbs .embed-responsive-16by9{padding-bottom:56.25%}#bookly-tbs .embed-responsive-4by3{padding-bottom:75%}#bookly-tbs .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}#bookly-tbs .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}#bookly-tbs .well-lg{padding:24px;border-radius:6px}#bookly-tbs .well-sm{padding:9px;border-radius:3px}#bookly-tbs .close{float:right;font-size:22.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}#bookly-tbs .close:focus,#bookly-tbs .close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}#bookly-tbs button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}#bookly-tbs .modal-open{overflow:hidden}#bookly-tbs .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}#bookly-tbs .modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}#bookly-tbs .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bookly-tbs .modal-open .modal{overflow-x:hidden;overflow-y:auto}#bookly-tbs .modal-dialog{position:relative;width:auto;margin:10px}#bookly-tbs .modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}#bookly-tbs .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}#bookly-tbs .modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}#bookly-tbs .modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}#bookly-tbs .modal-header{padding:15px;border-bottom:1px solid #e5e5e5}#bookly-tbs .modal-header .close{margin-top:-2px}#bookly-tbs .modal-title{margin:0;line-height:1.4}#bookly-tbs .modal-body{position:relative;padding:15px}#bookly-tbs .modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}#bookly-tbs .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}#bookly-tbs .modal-footer .btn-group .btn+.btn{margin-left:-1px}#bookly-tbs .modal-footer .btn-block+.btn-block{margin-left:0}#bookly-tbs .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){#bookly-tbs .modal-dialog{width:600px;margin:30px auto}#bookly-tbs .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#bookly-tbs .modal-sm{width:300px}}@media (min-width:992px){#bookly-tbs .modal-lg{width:900px}}#bookly-tbs .tooltip{position:absolute;z-index:1070;display:block;font-family:"open sans","helvetica neue",helvetica,arial,sans-serif;font-size:13px;font-style:normal;font-weight:400;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}#bookly-tbs .tooltip.in{filter:alpha(opacity=90);opacity:.9}#bookly-tbs .tooltip.top{padding:5px 0;margin-top:-3px}#bookly-tbs .tooltip.right{padding:0 5px;margin-left:3px}#bookly-tbs .tooltip.bottom{padding:5px 0;margin-top:3px}#bookly-tbs .tooltip.left{padding:0 5px;margin-left:-3px}#bookly-tbs .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}#bookly-tbs .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}#bookly-tbs .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}#bookly-tbs .tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bookly-tbs .tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bookly-tbs .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}#bookly-tbs .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}#bookly-tbs .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bookly-tbs .tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bookly-tbs .tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bookly-tbs .popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:600px;padding:1px;font-family:"open sans","helvetica neue",helvetica,arial,sans-serif;font-size:15px;font-style:normal;font-weight:400;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}#bookly-tbs .popover.top{margin-top:-10px}#bookly-tbs .popover.right{margin-left:10px}#bookly-tbs .popover.bottom{margin-top:10px}#bookly-tbs .popover.left{margin-left:-10px}#bookly-tbs .popover-title{padding:8px 14px;margin:0;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}#bookly-tbs .popover-content{padding:14px 20px}#bookly-tbs .popover>.popover-arrow,#bookly-tbs .popover>.popover-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}#bookly-tbs .popover>.popover-arrow{border-width:11px}#bookly-tbs .popover>.popover-arrow:after{content:"";border-width:10px}#bookly-tbs .popover.top>.popover-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}#bookly-tbs .popover.top>.popover-arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}#bookly-tbs .popover.right>.popover-arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}#bookly-tbs .popover.right>.popover-arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}#bookly-tbs .popover.bottom>.popover-arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}#bookly-tbs .popover.bottom>.popover-arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}#bookly-tbs .popover.left>.popover-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}#bookly-tbs .popover.left>.popover-arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}#bookly-tbs .carousel{position:relative}#bookly-tbs .carousel-inner{position:relative;width:100%;overflow:hidden}#bookly-tbs .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}#bookly-tbs .carousel-inner>.item>a>img,#bookly-tbs .carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){#bookly-tbs .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}#bookly-tbs .carousel-inner>.item.active.right,#bookly-tbs .carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}#bookly-tbs .carousel-inner>.item.active.left,#bookly-tbs .carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}#bookly-tbs .carousel-inner>.item.active,#bookly-tbs .carousel-inner>.item.next.left,#bookly-tbs .carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}#bookly-tbs .carousel-inner>.active,#bookly-tbs .carousel-inner>.next,#bookly-tbs .carousel-inner>.prev{display:block}#bookly-tbs .carousel-inner>.active{left:0}#bookly-tbs .carousel-inner>.next,#bookly-tbs .carousel-inner>.prev{position:absolute;top:0;width:100%}#bookly-tbs .carousel-inner>.next{left:100%}#bookly-tbs .carousel-inner>.prev{left:-100%}#bookly-tbs .carousel-inner>.next.left,#bookly-tbs .carousel-inner>.prev.right{left:0}#bookly-tbs .carousel-inner>.active.left{left:-100%}#bookly-tbs .carousel-inner>.active.right{left:100%}#bookly-tbs .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}#bookly-tbs .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}#bookly-tbs .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}#bookly-tbs .carousel-control:focus,#bookly-tbs .carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next,#bookly-tbs .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .icon-prev{left:50%;margin-left:-10px}#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next{right:50%;margin-right:-10px}#bookly-tbs .carousel-control .icon-next,#bookly-tbs .carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}#bookly-tbs .carousel-control .icon-prev:before{content:'\2039'}#bookly-tbs .carousel-control .icon-next:before{content:'\203a'}#bookly-tbs .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}#bookly-tbs .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}#bookly-tbs .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}#bookly-tbs .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}#bookly-tbs .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next,#bookly-tbs .carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .icon-prev{margin-left:-10px}#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next{margin-right:-10px}#bookly-tbs .carousel-caption{right:20%;left:20%;padding-bottom:30px}#bookly-tbs .carousel-indicators{bottom:20px}}#bookly-tbs .btn-group-vertical>.btn-group:after,#bookly-tbs .btn-group-vertical>.btn-group:before,#bookly-tbs .btn-toolbar:after,#bookly-tbs .btn-toolbar:before,#bookly-tbs .clearfix:after,#bookly-tbs .clearfix:before,#bookly-tbs .container-fluid:after,#bookly-tbs .container-fluid:before,#bookly-tbs .container:after,#bookly-tbs .container:before,#bookly-tbs .dl-horizontal dd:after,#bookly-tbs .dl-horizontal dd:before,#bookly-tbs .form-horizontal .form-group:after,#bookly-tbs .form-horizontal .form-group:before,#bookly-tbs .modal-footer:after,#bookly-tbs .modal-footer:before,#bookly-tbs .modal-header:after,#bookly-tbs .modal-header:before,#bookly-tbs .nav:after,#bookly-tbs .nav:before,#bookly-tbs .navbar-collapse:after,#bookly-tbs .navbar-collapse:before,#bookly-tbs .navbar-header:after,#bookly-tbs .navbar-header:before,#bookly-tbs .navbar:after,#bookly-tbs .navbar:before,#bookly-tbs .pager:after,#bookly-tbs .pager:before,#bookly-tbs .panel-body:after,#bookly-tbs .panel-body:before,#bookly-tbs .row:after,#bookly-tbs .row:before{display:table;content:" "}#bookly-tbs .btn-group-vertical>.btn-group:after,#bookly-tbs .btn-toolbar:after,#bookly-tbs .clearfix:after,#bookly-tbs .container-fluid:after,#bookly-tbs .container:after,#bookly-tbs .dl-horizontal dd:after,#bookly-tbs .form-horizontal .form-group:after,#bookly-tbs .modal-footer:after,#bookly-tbs .modal-header:after,#bookly-tbs .nav:after,#bookly-tbs .navbar-collapse:after,#bookly-tbs .navbar-header:after,#bookly-tbs .navbar:after,#bookly-tbs .pager:after,#bookly-tbs .panel-body:after,#bookly-tbs .row:after{clear:both}#bookly-tbs .center-block{display:block;margin-right:auto;margin-left:auto}#bookly-tbs .pull-right{float:right!important}#bookly-tbs .pull-left{float:left!important}#bookly-tbs .hide{display:none!important}#bookly-tbs .show{display:block!important}#bookly-tbs .invisible{visibility:hidden}#bookly-tbs .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bookly-tbs .hidden{display:none!important}#bookly-tbs .affix{position:fixed}@-ms-viewport{width:device-width}#bookly-tbs .visible-lg,#bookly-tbs .visible-md,#bookly-tbs .visible-sm,#bookly-tbs .visible-xs{display:none!important}#bookly-tbs .visible-lg-block,#bookly-tbs .visible-lg-inline,#bookly-tbs .visible-lg-inline-block,#bookly-tbs .visible-md-block,#bookly-tbs .visible-md-inline,#bookly-tbs .visible-md-inline-block,#bookly-tbs .visible-sm-block,#bookly-tbs .visible-sm-inline,#bookly-tbs .visible-sm-inline-block,#bookly-tbs .visible-xs-block,#bookly-tbs .visible-xs-inline,#bookly-tbs .visible-xs-inline-block{display:none!important}@media (max-width:767px){#bookly-tbs .visible-xs{display:block!important}#bookly-tbs table.visible-xs{display:table!important}#bookly-tbs tr.visible-xs{display:table-row!important}#bookly-tbs td.visible-xs,#bookly-tbs th.visible-xs{display:table-cell!important}}@media (max-width:767px){#bookly-tbs .visible-xs-block{display:block!important}}@media (max-width:767px){#bookly-tbs .visible-xs-inline{display:inline!important}}@media (max-width:767px){#bookly-tbs .visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm{display:block!important}#bookly-tbs table.visible-sm{display:table!important}#bookly-tbs tr.visible-sm{display:table-row!important}#bookly-tbs td.visible-sm,#bookly-tbs th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md{display:block!important}#bookly-tbs table.visible-md{display:table!important}#bookly-tbs tr.visible-md{display:table-row!important}#bookly-tbs td.visible-md,#bookly-tbs th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){#bookly-tbs .visible-lg{display:block!important}#bookly-tbs table.visible-lg{display:table!important}#bookly-tbs tr.visible-lg{display:table-row!important}#bookly-tbs td.visible-lg,#bookly-tbs th.visible-lg{display:table-cell!important}}@media (min-width:1200px){#bookly-tbs .visible-lg-block{display:block!important}}@media (min-width:1200px){#bookly-tbs .visible-lg-inline{display:inline!important}}@media (min-width:1200px){#bookly-tbs .visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){#bookly-tbs .hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .hidden-md{display:none!important}}@media (min-width:1200px){#bookly-tbs .hidden-lg{display:none!important}}#bookly-tbs .visible-print{display:none!important}@media print{#bookly-tbs .visible-print{display:block!important}#bookly-tbs table.visible-print{display:table!important}#bookly-tbs tr.visible-print{display:table-row!important}#bookly-tbs td.visible-print,#bookly-tbs th.visible-print{display:table-cell!important}}#bookly-tbs .visible-print-block{display:none!important}@media print{#bookly-tbs .visible-print-block{display:block!important}}#bookly-tbs .visible-print-inline{display:none!important}@media print{#bookly-tbs .visible-print-inline{display:inline!important}}#bookly-tbs .visible-print-inline-block{display:none!important}@media print{#bookly-tbs .visible-print-inline-block{display:inline-block!important}}@media print{#bookly-tbs .hidden-print{display:none!important}}#bookly-tbs [class*=block-grid-]{padding:0;margin:0;list-style:none;border:1px solid transparent;border-width:1px 0 0 1px}#bookly-tbs [class*=block-grid-]>*{display:block;float:left;height:auto;text-align:center;border:1px solid inherit;border-width:0 1px 1px 0}#bookly-tbs [class*=block-grid-]:after,#bookly-tbs [class*=block-grid-]:before{display:table;content:" "}#bookly-tbs .block-grid-16>:nth-of-type(16n+1),#bookly-tbs [class*=block-grid-]:after{clear:both}#bookly-tbs .block-grid-16>*{width:6.25%;line-height:49px}#bookly-tbs .btn-group-justified>.btn-group:not(:first-child) .btn,#bookly-tbs .btn-group-justified>.btn:not(:first-child){border-left:0}#bookly-tbs .btn-default-outline{color:#5b6470;background-color:transparent;border-color:#5b6470}#bookly-tbs .btn-default-outline.focus,#bookly-tbs .btn-default-outline:focus{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#22252a}#bookly-tbs .btn-default-outline:hover{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#40464e}#bookly-tbs .btn-default-outline.active,#bookly-tbs .btn-default-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-default-outline{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#40464e}#bookly-tbs .btn-default-outline.active.focus,#bookly-tbs .btn-default-outline.active:focus,#bookly-tbs .btn-default-outline.active:hover,#bookly-tbs .btn-default-outline:active.focus,#bookly-tbs .btn-default-outline:active:focus,#bookly-tbs .btn-default-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-default-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-default-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-default-outline:hover{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#22252a}#bookly-tbs .btn-default-outline.active,#bookly-tbs .btn-default-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-default-outline{background-image:none}#bookly-tbs .btn-default-outline.disabled.focus,#bookly-tbs .btn-default-outline.disabled:focus,#bookly-tbs .btn-default-outline.disabled:hover,#bookly-tbs .btn-default-outline[disabled].focus,#bookly-tbs .btn-default-outline[disabled]:focus,#bookly-tbs .btn-default-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-default-outline.focus,fieldset[disabled] #bookly-tbs .btn-default-outline:focus,fieldset[disabled] #bookly-tbs .btn-default-outline:hover{background-color:transparent;border-color:#5b6470}#bookly-tbs .btn-default-outline .badge{color:transparent;background-color:#5b6470}#bookly-tbs .btn-primary-outline{color:#08c;background-color:transparent;border-color:#08c}#bookly-tbs .btn-primary-outline.focus,#bookly-tbs .btn-primary-outline:focus{color:#08c;background-color:rgba(0,0,0,0);border-color:#00334d}#bookly-tbs .btn-primary-outline:hover{color:#08c;background-color:rgba(0,0,0,0);border-color:#005f8f}#bookly-tbs .btn-primary-outline.active,#bookly-tbs .btn-primary-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline{color:#08c;background-color:rgba(0,0,0,0);border-color:#005f8f}#bookly-tbs .btn-primary-outline.active.focus,#bookly-tbs .btn-primary-outline.active:focus,#bookly-tbs .btn-primary-outline.active:hover,#bookly-tbs .btn-primary-outline:active.focus,#bookly-tbs .btn-primary-outline:active:focus,#bookly-tbs .btn-primary-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline:hover{color:#08c;background-color:rgba(0,0,0,0);border-color:#00334d}#bookly-tbs .btn-primary-outline.active,#bookly-tbs .btn-primary-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline{background-image:none}#bookly-tbs .btn-primary-outline.disabled.focus,#bookly-tbs .btn-primary-outline.disabled:focus,#bookly-tbs .btn-primary-outline.disabled:hover,#bookly-tbs .btn-primary-outline[disabled].focus,#bookly-tbs .btn-primary-outline[disabled]:focus,#bookly-tbs .btn-primary-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-primary-outline.focus,fieldset[disabled] #bookly-tbs .btn-primary-outline:focus,fieldset[disabled] #bookly-tbs .btn-primary-outline:hover{background-color:transparent;border-color:#08c}#bookly-tbs .btn-primary-outline .badge{color:transparent;background-color:#08c}#bookly-tbs .btn-success-outline{color:#5cb85c;background-color:transparent;border-color:#5cb85c}#bookly-tbs .btn-success-outline.focus,#bookly-tbs .btn-success-outline:focus{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#2d672d}#bookly-tbs .btn-success-outline:hover{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#419641}#bookly-tbs .btn-success-outline.active,#bookly-tbs .btn-success-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-success-outline{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#419641}#bookly-tbs .btn-success-outline.active.focus,#bookly-tbs .btn-success-outline.active:focus,#bookly-tbs .btn-success-outline.active:hover,#bookly-tbs .btn-success-outline:active.focus,#bookly-tbs .btn-success-outline:active:focus,#bookly-tbs .btn-success-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-success-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-success-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-success-outline:hover{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#2d672d}#bookly-tbs .btn-success-outline.active,#bookly-tbs .btn-success-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-success-outline{background-image:none}#bookly-tbs .btn-success-outline.disabled.focus,#bookly-tbs .btn-success-outline.disabled:focus,#bookly-tbs .btn-success-outline.disabled:hover,#bookly-tbs .btn-success-outline[disabled].focus,#bookly-tbs .btn-success-outline[disabled]:focus,#bookly-tbs .btn-success-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-success-outline.focus,fieldset[disabled] #bookly-tbs .btn-success-outline:focus,fieldset[disabled] #bookly-tbs .btn-success-outline:hover{background-color:transparent;border-color:#5cb85c}#bookly-tbs .btn-success-outline .badge{color:transparent;background-color:#5cb85c}#bookly-tbs .btn-info-outline{color:#5bc0de;background-color:transparent;border-color:#5bc0de}#bookly-tbs .btn-info-outline.focus,#bookly-tbs .btn-info-outline:focus{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#1f7e9a}#bookly-tbs .btn-info-outline:hover{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#2aabd2}#bookly-tbs .btn-info-outline.active,#bookly-tbs .btn-info-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-info-outline{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#2aabd2}#bookly-tbs .btn-info-outline.active.focus,#bookly-tbs .btn-info-outline.active:focus,#bookly-tbs .btn-info-outline.active:hover,#bookly-tbs .btn-info-outline:active.focus,#bookly-tbs .btn-info-outline:active:focus,#bookly-tbs .btn-info-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-info-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-info-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-info-outline:hover{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#1f7e9a}#bookly-tbs .btn-info-outline.active,#bookly-tbs .btn-info-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-info-outline{background-image:none}#bookly-tbs .btn-info-outline.disabled.focus,#bookly-tbs .btn-info-outline.disabled:focus,#bookly-tbs .btn-info-outline.disabled:hover,#bookly-tbs .btn-info-outline[disabled].focus,#bookly-tbs .btn-info-outline[disabled]:focus,#bookly-tbs .btn-info-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-info-outline.focus,fieldset[disabled] #bookly-tbs .btn-info-outline:focus,fieldset[disabled] #bookly-tbs .btn-info-outline:hover{background-color:transparent;border-color:#5bc0de}#bookly-tbs .btn-info-outline .badge{color:transparent;background-color:#5bc0de}#bookly-tbs .btn-warning-outline{color:#f0ad4e;background-color:transparent;border-color:#f0ad4e}#bookly-tbs .btn-warning-outline.focus,#bookly-tbs .btn-warning-outline:focus{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#b06d0f}#bookly-tbs .btn-warning-outline:hover{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#eb9316}#bookly-tbs .btn-warning-outline.active,#bookly-tbs .btn-warning-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#eb9316}#bookly-tbs .btn-warning-outline.active.focus,#bookly-tbs .btn-warning-outline.active:focus,#bookly-tbs .btn-warning-outline.active:hover,#bookly-tbs .btn-warning-outline:active.focus,#bookly-tbs .btn-warning-outline:active:focus,#bookly-tbs .btn-warning-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline:hover{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#b06d0f}#bookly-tbs .btn-warning-outline.active,#bookly-tbs .btn-warning-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline{background-image:none}#bookly-tbs .btn-warning-outline.disabled.focus,#bookly-tbs .btn-warning-outline.disabled:focus,#bookly-tbs .btn-warning-outline.disabled:hover,#bookly-tbs .btn-warning-outline[disabled].focus,#bookly-tbs .btn-warning-outline[disabled]:focus,#bookly-tbs .btn-warning-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-warning-outline.focus,fieldset[disabled] #bookly-tbs .btn-warning-outline:focus,fieldset[disabled] #bookly-tbs .btn-warning-outline:hover{background-color:transparent;border-color:#f0ad4e}#bookly-tbs .btn-warning-outline .badge{color:transparent;background-color:#f0ad4e}#bookly-tbs .btn-danger-outline{color:#d9534f;background-color:transparent;border-color:#d9534f}#bookly-tbs .btn-danger-outline.focus,#bookly-tbs .btn-danger-outline:focus{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#8b211e}#bookly-tbs .btn-danger-outline:hover{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#c12e2a}#bookly-tbs .btn-danger-outline.active,#bookly-tbs .btn-danger-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#c12e2a}#bookly-tbs .btn-danger-outline.active.focus,#bookly-tbs .btn-danger-outline.active:focus,#bookly-tbs .btn-danger-outline.active:hover,#bookly-tbs .btn-danger-outline:active.focus,#bookly-tbs .btn-danger-outline:active:focus,#bookly-tbs .btn-danger-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline:hover{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#8b211e}#bookly-tbs .btn-danger-outline.active,#bookly-tbs .btn-danger-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline{background-image:none}#bookly-tbs .btn-danger-outline.disabled.focus,#bookly-tbs .btn-danger-outline.disabled:focus,#bookly-tbs .btn-danger-outline.disabled:hover,#bookly-tbs .btn-danger-outline[disabled].focus,#bookly-tbs .btn-danger-outline[disabled]:focus,#bookly-tbs .btn-danger-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-danger-outline.focus,fieldset[disabled] #bookly-tbs .btn-danger-outline:focus,fieldset[disabled] #bookly-tbs .btn-danger-outline:hover{background-color:transparent;border-color:#d9534f}#bookly-tbs .btn-danger-outline .badge{color:transparent;background-color:#d9534f}#bookly-tbs .btn-xlg{padding:11px 22px;font-size:15px;line-height:1.9;border-radius:4px}#bookly-tbs .callout{padding:10px;margin:21px 0;border:1px solid #e8ebf0;border-left-width:4px;border-radius:4px}#bookly-tbs .callout .callout-heading{margin-top:0;margin-bottom:5px}#bookly-tbs .callout p:last-child{margin-bottom:0}#bookly-tbs .callout+#bookly-tbs .callout{margin-top:-5px}#bookly-tbs .callout.callout-danger{border-left-color:#d9534f}#bookly-tbs .callout.callout-danger .callout-heading{color:#a94442}#bookly-tbs .callout.callout-warning{border-left-color:#f0ad4e}#bookly-tbs .callout.callout-warning .callout-heading{color:#8a6d3b}#bookly-tbs .callout.callout-info{border-left-color:#5bc0de}#bookly-tbs .callout.callout-info .callout-heading{color:#31708f}#bookly-tbs .close{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}#bookly-tbs .caret{margin-bottom:2px}#bookly-tbs .checkbox,#bookly-tbs .radio{line-height:1.4}#bookly-tbs input[type=checkbox],#bookly-tbs input[type=radio]{width:16px;height:16px}#bookly-tbs input[type=checkbox]:checked:before{margin:-3px 0 0 -4px;font:400 21px/1 dashicons}#bookly-tbs input[type=radio]:checked:before{width:8px;height:8px;margin:3px}#bookly-tbs input[type=checkbox]:not(:checked)+.bookly-toggle-label,#bookly-tbs input[type=radio]:not(:checked)+.bookly-toggle-label{color:#8a929e}#bookly-tbs select.form-control{z-index:5;height:36px;-webkit-appearance:none;padding-right:22px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDQ4IDQ4IiB3aWR0aD0iNDgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDIwbDEwIDEwIDEwLTEweiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==);background-repeat:no-repeat;background-position:-webkit-calc(100% - 4px) 50%;background-position:calc(100% - 4px) 50%;-webkit-background-size:24px 24px;background-size:24px 24px;-moz-appearance:none;appearance:none}@media screen and (min-width:0\0){#bookly-tbs select.form-control{padding:5px}}#bookly-tbs select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}#bookly-tbs .form-horizontal .form-inline .checkbox-inline,#bookly-tbs .form-horizontal .form-inline .radio-inline{padding-top:0}#bookly-tbs .form-horizontal .form-group .help-block{margin-bottom:0}#bookly-tbs button:active,#bookly-tbs button:focus,#bookly-tbs button:hover,#bookly-tbs input:active,#bookly-tbs input:focus,#bookly-tbs input:hover,#bookly-tbs textarea:active,#bookly-tbs textarea:focus,#bookly-tbs textarea:hover{outline:0}#bookly-tbs .help-block{margin-top:0;font-size:13px;line-height:1.3}#bookly-tbs .bookly-pretty input[type=file]{position:absolute;top:0;left:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;opacity:0}#bookly-tbs .bookly-pretty input[type=file]~.bookly-pretty-indicator{display:inline-block;font-weight:400}#bookly-tbs .input-group-btn:first-child>.btn,#bookly-tbs .input-group-btn:first-child>.btn-group{border-right:0}#bookly-tbs .input-group-btn:first-child>.btn:last-child{margin-right:-1px}#bookly-tbs .input-group-btn:last-child>.btn,#bookly-tbs .input-group-btn:last-child>.btn-group{border-left:0}#bookly-tbs .list-group-item .badge{margin-top:2px}#bookly-tbs .navbar-nav>li>.dropdown-menu{border-top-width:0}#bookly-tbs .navbar-text{line-height:21px}#bookly-tbs .nav-tabs>li{margin-bottom:0}#bookly-tbs .nav-tabs>li>a{margin-right:0;color:#8a929e;border:0}#bookly-tbs .nav-tabs>li>a:after{position:absolute;right:0;bottom:0;left:0;width:100%;height:0;content:" ";border-bottom:3px solid transparent}#bookly-tbs .nav-tabs>li>a:focus,#bookly-tbs .nav-tabs>li>a:hover{background-color:transparent;outline:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .nav-tabs>li>a:focus:after,#bookly-tbs .nav-tabs>li>a:hover:after{border-bottom-color:#d9dee4}#bookly-tbs .nav-tabs.nav-justified>li.active>a,#bookly-tbs .nav-tabs.nav-justified>li.active>a:focus,#bookly-tbs .nav-tabs.nav-justified>li.active>a:hover,#bookly-tbs .nav-tabs>li.active>a,#bookly-tbs .nav-tabs>li.active>a:focus,#bookly-tbs .nav-tabs>li.active>a:hover{color:#08c;border-width:0 0 1px 0}#bookly-tbs .nav-tabs.nav-justified>li.active>a:after,#bookly-tbs .nav-tabs>li.active>a:after{border-bottom-color:#08c}#bookly-tbs .nav-tabs .dropdown-menu{margin-top:0}#bookly-tbs .pager li>a,#bookly-tbs .pager li>span{line-height:1.4;color:#5b6470}#bookly-tbs .pager li>a:focus,#bookly-tbs .pager li>a:hover{color:#8a929e}#bookly-tbs .panel{-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .panel>.panel-collapse>.table td,#bookly-tbs .panel>.panel-collapse>.table th,#bookly-tbs .panel>.table td,#bookly-tbs .panel>.table th,#bookly-tbs .panel>.table-responsive>.table td,#bookly-tbs .panel>.table-responsive>.table th{border-color:#d9dee4}#bookly-tbs .panel-title{font-weight:700;line-height:1.5}#bookly-tbs .btn.btn-pill{border-radius:24px}#bookly-tbs .btn.btn-pill-left{border-top-left-radius:24px;border-bottom-left-radius:24px}#bookly-tbs .btn.btn-pill-right{border-top-right-radius:24px;border-bottom-right-radius:24px}#bookly-tbs .form-control.input-pill{border-radius:24px}#bookly-tbs .form-control.input-pill-left{border-top-left-radius:24px;border-bottom-left-radius:24px}#bookly-tbs .form-control.input-pill-right{border-top-right-radius:24px;border-bottom-right-radius:24px}#bookly-tbs .label.label-pill{border-radius:.9em}#bookly-tbs .label.label-pill-left{border-top-left-radius:.9em;border-bottom-left-radius:.9em}#bookly-tbs .label.label-pill-right{border-top-right-radius:.9em;border-bottom-right-radius:.9em}#bookly-tbs .progress-lg{height:42px;border-radius:6px}#bookly-tbs .progress-lg .progress-bar{line-height:42px}#bookly-tbs .progress-sm{height:10.5px;border-radius:3px}#bookly-tbs .progress-sm .progress-bar{line-height:10.5px}#bookly-tbs .progress-xs{height:5.25px;border-radius:3px}#bookly-tbs .progress-xs .progress-bar{line-height:5.25px}#bookly-tbs a:focus,#bookly-tbs a:hover{-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .social-behance{color:#1769ff!important}#bookly-tbs .social-fivehundredpix{color:#0a0100!important}#bookly-tbs .social-dribbble{color:#ea4c89!important}#bookly-tbs .social-dropbox{color:#1f8ce6!important}#bookly-tbs .social-email{color:#7f7f7f!important}#bookly-tbs .social-facebook{color:#3b5998!important}#bookly-tbs .social-flickr{color:#ff0084!important}#bookly-tbs .social-foursquare{color:#0072b1!important}#bookly-tbs .social-github{color:#4183c4!important}#bookly-tbs .social-google{color:#dd4b39!important}#bookly-tbs .social-instagram{color:#517fa4!important}#bookly-tbs .social-linkedin{color:#007bb6!important}#bookly-tbs .social-pinterest{color:#cb2027!important}#bookly-tbs .social-skype{color:#00aff0!important}#bookly-tbs .social-smugmug{color:#8cca1e!important}#bookly-tbs .social-tumblr{color:#32506d!important}#bookly-tbs .social-twitter{color:#00aced!important}#bookly-tbs .social-vimeo{color:#1ab7ea!important}#bookly-tbs .social-vk{color:#45668e!important}#bookly-tbs .social-youtube{color:#f33!important}#bookly-tbs .social-behance:hover{color:#4a8aff!important}#bookly-tbs .social-fivehundredpix:hover{color:#3d0600!important}#bookly-tbs .social-dribbble:hover{color:#ef7aa7!important}#bookly-tbs .social-dropbox:hover{color:#4da4eb!important}#bookly-tbs .social-email:hover{color:#999!important}#bookly-tbs .social-facebook:hover{color:#4c70ba!important}#bookly-tbs .social-flickr:hover{color:#ff339d!important}#bookly-tbs .social-foursquare:hover{color:#0093e4!important}#bookly-tbs .social-github:hover{color:#689cd0!important}#bookly-tbs .social-google:hover{color:#e47365!important}#bookly-tbs .social-instagram:hover{color:#7098b8!important}#bookly-tbs .social-linkedin:hover{color:#009de9!important}#bookly-tbs .social-pinterest:hover{color:#e03e44!important}#bookly-tbs .social-skype:hover{color:#24c4ff!important}#bookly-tbs .social-smugmug:hover{color:#a5e239!important}#bookly-tbs .social-tumblr:hover{color:#426a90!important}#bookly-tbs .social-twitter:hover{color:#21c2ff!important}#bookly-tbs .social-vimeo:hover{color:#49c6ee!important}#bookly-tbs .social-vk:hover{color:#587fae!important}#bookly-tbs .social-youtube:hover{color:#f66!important}#bookly-tbs .thumbnail{overflow:auto;-webkit-box-shadow:inset 0 0 0 2px #e8ebf0;box-shadow:inset 0 0 0 2px #e8ebf0}#bookly-tbs .thumbnail .caption p:last-child{margin-bottom:0}#bookly-tbs .thumbnail .caption .heading{margin:0 0 5px}#bookly-tbs blockquote p{font-family:georgia,"times new roman",times,serif;font-size:18px}#bookly-tbs p{font-size:15px}#bookly-tbs .bookly-letter-spacing-sm{letter-spacing:.05em}#bookly-tbs .bookly-letter-spacing-md{letter-spacing:.1em}#bookly-tbs .bookly-letter-spacing-lg{letter-spacing:.2em}#bookly-tbs .bookly-line-height-sm{line-height:1.53846154}#bookly-tbs .bookly-line-height-base{line-height:1.4}#bookly-tbs .bookly-line-height-lg{line-height:1.3333333}#bookly-tbs .bookly-line-height-computed{line-height:21px}#bookly-tbs .bookly-font-xs{font-size:12px}#bookly-tbs .bookly-font-sm{font-size:14px}#bookly-tbs .bookly-font-md{font-size:15px}#bookly-tbs .bookly-font-lg{font-size:20px}#bookly-tbs .bookly-font-smaller{font-size:13px;text-transform:uppercase}#bookly-tbs .bookly-font-lighter{font-weight:lighter}#bookly-tbs .bookly-font-normal{font-weight:400}#bookly-tbs .bookly-font-bold{font-weight:700}#bookly-tbs .bookly-font-serif{font-family:georgia,"times new roman",times,serif}#bookly-tbs .bookly-font-italic{font-style:italic}#bookly-tbs .bookly-text-wrap{word-wrap:break-word;white-space:normal}#bookly-tbs .bookly-inline{display:inline}#bookly-tbs .bookly-bl-ock{display:block}#bookly-tbs .bookly-inline-block{display:inline-block}#bookly-tbs .bookly-nowrap{white-space:nowrap}#bookly-tbs .bookly-break-word{word-wrap:break-word}#bookly-tbs .bookly-truncate{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .bookly-bottom-left,#bookly-tbs .bookly-bottom-right,#bookly-tbs .bookly-top-left,#bookly-tbs .bookly-top-right{position:absolute}#bookly-tbs .bookly-top-left,#bookly-tbs .bookly-top-right{top:0}#bookly-tbs .bookly-bottom-left,#bookly-tbs .bookly-bottom-right{bottom:0}#bookly-tbs .bookly-bottom-left,#bookly-tbs .bookly-top-left{left:0}#bookly-tbs .bookly-bottom-right,#bookly-tbs .bookly-top-right{right:0}#bookly-tbs .bookly-relative{position:relative}#bookly-tbs .bookly-fixed{position:fixed}#bookly-tbs .bookly-vertical-top{vertical-align:top}#bookly-tbs .bookly-vertical-middle{vertical-align:middle}#bookly-tbs .bookly-vertical-bottom{vertical-align:bottom}#bookly-tbs .bookly-margin-horizontal-remove,#bookly-tbs .bookly-margin-left-remove,#bookly-tbs .bookly-margin-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-remove,#bookly-tbs .bookly-margin-remove,#bookly-tbs .bookly-margin-right-remove{margin-right:0!important}#bookly-tbs .bookly-margin-remove,#bookly-tbs .bookly-margin-top-remove,#bookly-tbs .bookly-margin-vertical-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-remove,#bookly-tbs .bookly-margin-remove,#bookly-tbs .bookly-margin-vertical-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-xs,#bookly-tbs .bookly-margin-left-xs,#bookly-tbs .bookly-margin-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-xs,#bookly-tbs .bookly-margin-right-xs,#bookly-tbs .bookly-margin-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-top-xs,#bookly-tbs .bookly-margin-vertical-xs,#bookly-tbs .bookly-margin-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-xs,#bookly-tbs .bookly-margin-vertical-xs,#bookly-tbs .bookly-margin-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-sm,#bookly-tbs .bookly-margin-left-sm,#bookly-tbs .bookly-margin-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-sm,#bookly-tbs .bookly-margin-right-sm,#bookly-tbs .bookly-margin-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-sm,#bookly-tbs .bookly-margin-top-sm,#bookly-tbs .bookly-margin-vertical-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-sm,#bookly-tbs .bookly-margin-sm,#bookly-tbs .bookly-margin-vertical-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-md,#bookly-tbs .bookly-margin-left-md,#bookly-tbs .bookly-margin-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-md,#bookly-tbs .bookly-margin-md,#bookly-tbs .bookly-margin-right-md{margin-right:12px!important}#bookly-tbs .bookly-margin-md,#bookly-tbs .bookly-margin-top-md,#bookly-tbs .bookly-margin-vertical-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-md,#bookly-tbs .bookly-margin-md,#bookly-tbs .bookly-margin-vertical-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-lg,#bookly-tbs .bookly-margin-left-lg,#bookly-tbs .bookly-margin-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-lg,#bookly-tbs .bookly-margin-lg,#bookly-tbs .bookly-margin-right-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-lg,#bookly-tbs .bookly-margin-top-lg,#bookly-tbs .bookly-margin-vertical-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-lg,#bookly-tbs .bookly-margin-lg,#bookly-tbs .bookly-margin-vertical-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-xlg,#bookly-tbs .bookly-margin-left-xlg,#bookly-tbs .bookly-margin-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-xlg,#bookly-tbs .bookly-margin-right-xlg,#bookly-tbs .bookly-margin-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-top-xlg,#bookly-tbs .bookly-margin-vertical-xlg,#bookly-tbs .bookly-margin-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-xlg,#bookly-tbs .bookly-margin-vertical-xlg,#bookly-tbs .bookly-margin-xlg{margin-bottom:32px!important}@media (max-width:767px){#bookly-tbs .bookly-margin-horizontal-screenxs-remove,#bookly-tbs .bookly-margin-left-screenxs-remove,#bookly-tbs .bookly-margin-screenxs-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-screenxs-remove,#bookly-tbs .bookly-margin-right-screenxs-remove,#bookly-tbs .bookly-margin-screenxs-remove{margin-right:0!important}#bookly-tbs .bookly-margin-screenxs-remove,#bookly-tbs .bookly-margin-top-screenxs-remove,#bookly-tbs .bookly-margin-vertical-screenxs-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-screenxs-remove,#bookly-tbs .bookly-margin-screenxs-remove,#bookly-tbs .bookly-margin-vertical-screenxs-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xs,#bookly-tbs .bookly-margin-left-screenxs-xs,#bookly-tbs .bookly-margin-screenxs-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xs,#bookly-tbs .bookly-margin-right-screenxs-xs,#bookly-tbs .bookly-margin-screenxs-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-screenxs-xs,#bookly-tbs .bookly-margin-top-screenxs-xs,#bookly-tbs .bookly-margin-vertical-screenxs-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-screenxs-xs,#bookly-tbs .bookly-margin-screenxs-xs,#bookly-tbs .bookly-margin-vertical-screenxs-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-sm,#bookly-tbs .bookly-margin-left-screenxs-sm,#bookly-tbs .bookly-margin-screenxs-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-sm,#bookly-tbs .bookly-margin-right-screenxs-sm,#bookly-tbs .bookly-margin-screenxs-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-screenxs-sm,#bookly-tbs .bookly-margin-top-screenxs-sm,#bookly-tbs .bookly-margin-vertical-screenxs-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-screenxs-sm,#bookly-tbs .bookly-margin-screenxs-sm,#bookly-tbs .bookly-margin-vertical-screenxs-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-md,#bookly-tbs .bookly-margin-left-screenxs-md,#bookly-tbs .bookly-margin-screenxs-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-md,#bookly-tbs .bookly-margin-right-screenxs-md,#bookly-tbs .bookly-margin-screenxs-md{margin-right:12px!important}#bookly-tbs .bookly-margin-screenxs-md,#bookly-tbs .bookly-margin-top-screenxs-md,#bookly-tbs .bookly-margin-vertical-screenxs-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-screenxs-md,#bookly-tbs .bookly-margin-screenxs-md,#bookly-tbs .bookly-margin-vertical-screenxs-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-lg,#bookly-tbs .bookly-margin-left-screenxs-lg,#bookly-tbs .bookly-margin-screenxs-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-lg,#bookly-tbs .bookly-margin-right-screenxs-lg,#bookly-tbs .bookly-margin-screenxs-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-screenxs-lg,#bookly-tbs .bookly-margin-top-screenxs-lg,#bookly-tbs .bookly-margin-vertical-screenxs-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-screenxs-lg,#bookly-tbs .bookly-margin-screenxs-lg,#bookly-tbs .bookly-margin-vertical-screenxs-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xlg,#bookly-tbs .bookly-margin-left-screenxs-xlg,#bookly-tbs .bookly-margin-screenxs-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xlg,#bookly-tbs .bookly-margin-right-screenxs-xlg,#bookly-tbs .bookly-margin-screenxs-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-screenxs-xlg,#bookly-tbs .bookly-margin-top-screenxs-xlg,#bookly-tbs .bookly-margin-vertical-screenxs-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-screenxs-xlg,#bookly-tbs .bookly-margin-screenxs-xlg,#bookly-tbs .bookly-margin-vertical-screenxs-xlg{margin-bottom:32px!important}}@media (min-width:768px){#bookly-tbs .bookly-margin-horizontal-screensm-remove,#bookly-tbs .bookly-margin-left-screensm-remove,#bookly-tbs .bookly-margin-screensm-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-screensm-remove,#bookly-tbs .bookly-margin-right-screensm-remove,#bookly-tbs .bookly-margin-screensm-remove{margin-right:0!important}#bookly-tbs .bookly-margin-screensm-remove,#bookly-tbs .bookly-margin-top-screensm-remove,#bookly-tbs .bookly-margin-vertical-screensm-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-screensm-remove,#bookly-tbs .bookly-margin-screensm-remove,#bookly-tbs .bookly-margin-vertical-screensm-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-screensm-xs,#bookly-tbs .bookly-margin-left-screensm-xs,#bookly-tbs .bookly-margin-screensm-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-screensm-xs,#bookly-tbs .bookly-margin-right-screensm-xs,#bookly-tbs .bookly-margin-screensm-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-screensm-xs,#bookly-tbs .bookly-margin-top-screensm-xs,#bookly-tbs .bookly-margin-vertical-screensm-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-screensm-xs,#bookly-tbs .bookly-margin-screensm-xs,#bookly-tbs .bookly-margin-vertical-screensm-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-screensm-sm,#bookly-tbs .bookly-margin-left-screensm-sm,#bookly-tbs .bookly-margin-screensm-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-screensm-sm,#bookly-tbs .bookly-margin-right-screensm-sm,#bookly-tbs .bookly-margin-screensm-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-screensm-sm,#bookly-tbs .bookly-margin-top-screensm-sm,#bookly-tbs .bookly-margin-vertical-screensm-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-screensm-sm,#bookly-tbs .bookly-margin-screensm-sm,#bookly-tbs .bookly-margin-vertical-screensm-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-screensm-md,#bookly-tbs .bookly-margin-left-screensm-md,#bookly-tbs .bookly-margin-screensm-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-screensm-md,#bookly-tbs .bookly-margin-right-screensm-md,#bookly-tbs .bookly-margin-screensm-md{margin-right:12px!important}#bookly-tbs .bookly-margin-screensm-md,#bookly-tbs .bookly-margin-top-screensm-md,#bookly-tbs .bookly-margin-vertical-screensm-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-screensm-md,#bookly-tbs .bookly-margin-screensm-md,#bookly-tbs .bookly-margin-vertical-screensm-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-screensm-lg,#bookly-tbs .bookly-margin-left-screensm-lg,#bookly-tbs .bookly-margin-screensm-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-screensm-lg,#bookly-tbs .bookly-margin-right-screensm-lg,#bookly-tbs .bookly-margin-screensm-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-screensm-lg,#bookly-tbs .bookly-margin-top-screensm-lg,#bookly-tbs .bookly-margin-vertical-screensm-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-screensm-lg,#bookly-tbs .bookly-margin-screensm-lg,#bookly-tbs .bookly-margin-vertical-screensm-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-screensm-xlg,#bookly-tbs .bookly-margin-left-screensm-xlg,#bookly-tbs .bookly-margin-screensm-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-screensm-xlg,#bookly-tbs .bookly-margin-right-screensm-xlg,#bookly-tbs .bookly-margin-screensm-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-screensm-xlg,#bookly-tbs .bookly-margin-top-screensm-xlg,#bookly-tbs .bookly-margin-vertical-screensm-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-screensm-xlg,#bookly-tbs .bookly-margin-screensm-xlg,#bookly-tbs .bookly-margin-vertical-screensm-xlg{margin-bottom:32px!important}}@media (min-width:992px){#bookly-tbs .bookly-margin-horizontal-screenmd-remove,#bookly-tbs .bookly-margin-left-screenmd-remove,#bookly-tbs .bookly-margin-screenmd-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-screenmd-remove,#bookly-tbs .bookly-margin-right-screenmd-remove,#bookly-tbs .bookly-margin-screenmd-remove{margin-right:0!important}#bookly-tbs .bookly-margin-screenmd-remove,#bookly-tbs .bookly-margin-top-screenmd-remove,#bookly-tbs .bookly-margin-vertical-screenmd-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-screenmd-remove,#bookly-tbs .bookly-margin-screenmd-remove,#bookly-tbs .bookly-margin-vertical-screenmd-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xs,#bookly-tbs .bookly-margin-left-screenmd-xs,#bookly-tbs .bookly-margin-screenmd-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xs,#bookly-tbs .bookly-margin-right-screenmd-xs,#bookly-tbs .bookly-margin-screenmd-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-screenmd-xs,#bookly-tbs .bookly-margin-top-screenmd-xs,#bookly-tbs .bookly-margin-vertical-screenmd-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-screenmd-xs,#bookly-tbs .bookly-margin-screenmd-xs,#bookly-tbs .bookly-margin-vertical-screenmd-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-sm,#bookly-tbs .bookly-margin-left-screenmd-sm,#bookly-tbs .bookly-margin-screenmd-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-sm,#bookly-tbs .bookly-margin-right-screenmd-sm,#bookly-tbs .bookly-margin-screenmd-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-screenmd-sm,#bookly-tbs .bookly-margin-top-screenmd-sm,#bookly-tbs .bookly-margin-vertical-screenmd-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-screenmd-sm,#bookly-tbs .bookly-margin-screenmd-sm,#bookly-tbs .bookly-margin-vertical-screenmd-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-md,#bookly-tbs .bookly-margin-left-screenmd-md,#bookly-tbs .bookly-margin-screenmd-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-md,#bookly-tbs .bookly-margin-right-screenmd-md,#bookly-tbs .bookly-margin-screenmd-md{margin-right:12px!important}#bookly-tbs .bookly-margin-screenmd-md,#bookly-tbs .bookly-margin-top-screenmd-md,#bookly-tbs .bookly-margin-vertical-screenmd-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-screenmd-md,#bookly-tbs .bookly-margin-screenmd-md,#bookly-tbs .bookly-margin-vertical-screenmd-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-lg,#bookly-tbs .bookly-margin-left-screenmd-lg,#bookly-tbs .bookly-margin-screenmd-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-lg,#bookly-tbs .bookly-margin-right-screenmd-lg,#bookly-tbs .bookly-margin-screenmd-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-screenmd-lg,#bookly-tbs .bookly-margin-top-screenmd-lg,#bookly-tbs .bookly-margin-vertical-screenmd-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-screenmd-lg,#bookly-tbs .bookly-margin-screenmd-lg,#bookly-tbs .bookly-margin-vertical-screenmd-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xlg,#bookly-tbs .bookly-margin-left-screenmd-xlg,#bookly-tbs .bookly-margin-screenmd-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xlg,#bookly-tbs .bookly-margin-right-screenmd-xlg,#bookly-tbs .bookly-margin-screenmd-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-screenmd-xlg,#bookly-tbs .bookly-margin-top-screenmd-xlg,#bookly-tbs .bookly-margin-vertical-screenmd-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-screenmd-xlg,#bookly-tbs .bookly-margin-screenmd-xlg,#bookly-tbs .bookly-margin-vertical-screenmd-xlg{margin-bottom:32px!important}}#bookly-tbs .bookly-padding-horizontal-remove,#bookly-tbs .bookly-padding-left-remove,#bookly-tbs .bookly-padding-remove{padding-left:0!important}#bookly-tbs .bookly-padding-horizontal-remove,#bookly-tbs .bookly-padding-remove,#bookly-tbs .bookly-padding-right-remove{padding-right:0!important}#bookly-tbs .bookly-padding-remove,#bookly-tbs .bookly-padding-top-remove,#bookly-tbs .bookly-padding-vertical-remove{padding-top:0!important}#bookly-tbs .bookly-padding-bottom-remove,#bookly-tbs .bookly-padding-remove,#bookly-tbs .bookly-padding-vertical-remove{padding-bottom:0!important}#bookly-tbs .bookly-padding-horizontal-xs,#bookly-tbs .bookly-padding-left-xs,#bookly-tbs .bookly-padding-xs{padding-left:5px!important}#bookly-tbs .bookly-padding-horizontal-xs,#bookly-tbs .bookly-padding-right-xs,#bookly-tbs .bookly-padding-xs{padding-right:5px!important}#bookly-tbs .bookly-padding-top-xs,#bookly-tbs .bookly-padding-vertical-xs,#bookly-tbs .bookly-padding-xs{padding-top:5px!important}#bookly-tbs .bookly-padding-bottom-xs,#bookly-tbs .bookly-padding-vertical-xs,#bookly-tbs .bookly-padding-xs{padding-bottom:5px!important}#bookly-tbs .bookly-padding-horizontal-sm,#bookly-tbs .bookly-padding-left-sm,#bookly-tbs .bookly-padding-sm{padding-left:10px!important}#bookly-tbs .bookly-padding-horizontal-sm,#bookly-tbs .bookly-padding-right-sm,#bookly-tbs .bookly-padding-sm{padding-right:10px!important}#bookly-tbs .bookly-padding-sm,#bookly-tbs .bookly-padding-top-sm,#bookly-tbs .bookly-padding-vertical-sm{padding-top:10px!important}#bookly-tbs .bookly-padding-bottom-sm,#bookly-tbs .bookly-padding-sm,#bookly-tbs .bookly-padding-vertical-sm{padding-bottom:10px!important}#bookly-tbs .bookly-padding-horizontal-md,#bookly-tbs .bookly-padding-left-md,#bookly-tbs .bookly-padding-md{padding-left:12px!important}#bookly-tbs .bookly-padding-horizontal-md,#bookly-tbs .bookly-padding-md,#bookly-tbs .bookly-padding-right-md{padding-right:12px!important}#bookly-tbs .bookly-padding-md,#bookly-tbs .bookly-padding-top-md,#bookly-tbs .bookly-padding-vertical-md{padding-top:12px!important}#bookly-tbs .bookly-padding-bottom-md,#bookly-tbs .bookly-padding-md,#bookly-tbs .bookly-padding-vertical-md{padding-bottom:12px!important}#bookly-tbs .bookly-padding-horizontal-lg,#bookly-tbs .bookly-padding-left-lg,#bookly-tbs .bookly-padding-lg{padding-left:16px!important}#bookly-tbs .bookly-padding-horizontal-lg,#bookly-tbs .bookly-padding-lg,#bookly-tbs .bookly-padding-right-lg{padding-right:16px!important}#bookly-tbs .bookly-padding-lg,#bookly-tbs .bookly-padding-top-lg,#bookly-tbs .bookly-padding-vertical-lg{padding-top:16px!important}#bookly-tbs .bookly-padding-bottom-lg,#bookly-tbs .bookly-padding-lg,#bookly-tbs .bookly-padding-vertical-lg{padding-bottom:16px!important}#bookly-tbs .bookly-padding-horizontal-xlg,#bookly-tbs .bookly-padding-left-xlg,#bookly-tbs .bookly-padding-xlg{padding-left:32px!important}#bookly-tbs .bookly-padding-horizontal-xlg,#bookly-tbs .bookly-padding-right-xlg,#bookly-tbs .bookly-padding-xlg{padding-right:32px!important}#bookly-tbs .bookly-padding-top-xlg,#bookly-tbs .bookly-padding-vertical-xlg,#bookly-tbs .bookly-padding-xlg{padding-top:32px!important}#bookly-tbs .bookly-padding-bottom-xlg,#bookly-tbs .bookly-padding-vertical-xlg,#bookly-tbs .bookly-padding-xlg{padding-bottom:32px!important}#bookly-tbs .bookly-flexbox{display:table;width:100%;max-width:100%;height:100%}#bookly-tbs .bookly-flexbox .bookly-flex-row{display:table-row}#bookly-tbs .bookly-flexbox .bookly-flex-cell{display:table-cell;height:100%;word-wrap:break-word}@media (min-width:992px){#bookly-tbs .bookly-flexbox .bookly-flex-cell-sm{display:table-cell;height:100%;word-wrap:break-word}}#bookly-tbs .bookly-bg-transparent{background-color:transparent}#bookly-tbs .bookly-bg-white{background-color:#fff}#bookly-tbs .bookly-color-white{color:#fff}#bookly-tbs .bookly-bg-black{background-color:#000}#bookly-tbs .bookly-color-black{color:#000}#bookly-tbs .bookly-bg-gray{background-color:#8a929e}#bookly-tbs .bookly-color-gray{color:#8a929e}#bookly-tbs .bookly-bg-light{background-color:#d9dee4}#bookly-tbs .bookly-color-light{color:#d9dee4}#bookly-tbs .bookly-bg-brand-primary{background-color:#08c}#bookly-tbs .bookly-color-brand-primary{color:#08c}#bookly-tbs .bookly-bg-brand-success{background-color:#5cb85c}#bookly-tbs .bookly-color-brand-success{color:#5cb85c}#bookly-tbs .bookly-bg-brand-info{background-color:#5bc0de}#bookly-tbs .bookly-color-brand-info{color:#5bc0de}#bookly-tbs .bookly-bg-brand-warning{background-color:#f0ad4e}#bookly-tbs .bookly-color-brand-warning{color:#f0ad4e}#bookly-tbs .bookly-bg-brand-danger{background-color:#d9534f}#bookly-tbs .bookly-color-brand-danger{color:#d9534f}#bookly-tbs .bookly-cursor-pointer{cursor:pointer}#bookly-tbs .bookly-cursor-move{cursor:move}@media (max-width:767px){#bookly-tbs .bookly-text-xs-center{text-align:center!important}#bookly-tbs .bookly-text-xs-left{text-align:left!important}#bookly-tbs .bookly-text-xs-right{text-align:right!important}#bookly-tbs .bookly-btn-block-xs{display:block;width:100%}}#bookly-tbs table.dataTable{max-width:none!important;margin-top:6px!important;margin-bottom:6px!important;clear:both;border-collapse:separate!important}#bookly-tbs table.dataTable td,#bookly-tbs table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs table.dataTable td.dataTables_empty,#bookly-tbs table.dataTable th.dataTables_empty{text-align:center}#bookly-tbs table.dataTable.nowrap td,#bookly-tbs table.dataTable.nowrap th{white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_length label{font-weight:400;text-align:left;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_length select{display:inline-block;width:75px}#bookly-tbs div.dataTables_wrapper div.dataTables_filter{text-align:right}#bookly-tbs div.dataTables_wrapper div.dataTables_filter label{font-weight:400;text-align:left;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_filter input{display:inline-block;width:auto;margin-left:.5em}#bookly-tbs div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_paginate{margin:0;text-align:right;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;padding:1em 0;margin-top:-26px;margin-left:-100px;text-align:center}#bookly-tbs table.dataTable thead>tr>td.sorting,#bookly-tbs table.dataTable thead>tr>td.sorting_asc,#bookly-tbs table.dataTable thead>tr>td.sorting_desc,#bookly-tbs table.dataTable thead>tr>th.sorting,#bookly-tbs table.dataTable thead>tr>th.sorting_asc,#bookly-tbs table.dataTable thead>tr>th.sorting_desc{padding-right:30px}#bookly-tbs table.dataTable thead>tr>td:active,#bookly-tbs table.dataTable thead>tr>th:active{outline:0}#bookly-tbs table.dataTable thead .sorting,#bookly-tbs table.dataTable thead .sorting_asc,#bookly-tbs table.dataTable thead .sorting_asc_disabled,#bookly-tbs table.dataTable thead .sorting_desc,#bookly-tbs table.dataTable thead .sorting_desc_disabled{position:relative;cursor:pointer}#bookly-tbs table.dataTable thead .sorting:after,#bookly-tbs table.dataTable thead .sorting_asc:after,#bookly-tbs table.dataTable thead .sorting_asc_disabled:after,#bookly-tbs table.dataTable thead .sorting_desc:after,#bookly-tbs table.dataTable thead .sorting_desc_disabled:after{position:absolute;right:8px;bottom:-webkit-calc(50% - 9px);bottom:calc(50% - 9px);display:block;font-family:'Glyphicons Halflings';font-size:12px;opacity:.5}#bookly-tbs table.dataTable thead .sorting:after{content:"\e150";opacity:.2}#bookly-tbs table.dataTable thead .sorting_asc:after{content:"\e155"}#bookly-tbs table.dataTable thead .sorting_desc:after{content:"\e156"}#bookly-tbs table.dataTable thead .sorting_asc_disabled:after,#bookly-tbs table.dataTable thead .sorting_desc_disabled:after{color:#eee}#bookly-tbs div.dataTables_scrollHead table.dataTable{margin-bottom:0!important}#bookly-tbs div.dataTables_scrollBody table{margin-top:0!important;margin-bottom:0!important;border-top:none}#bookly-tbs div.dataTables_scrollBody table thead .sorting:after,#bookly-tbs div.dataTables_scrollBody table thead .sorting_asc:after,#bookly-tbs div.dataTables_scrollBody table thead .sorting_desc:after{display:none}#bookly-tbs div.dataTables_scrollBody table tbody tr:first-child td,#bookly-tbs div.dataTables_scrollBody table tbody tr:first-child th{border-top:none}#bookly-tbs div.dataTables_scrollFoot table{margin-top:0!important;border-top:none}@media screen and (max-width:767px){#bookly-tbs div.dataTables_wrapper div.dataTables_filter,#bookly-tbs div.dataTables_wrapper div.dataTables_info,#bookly-tbs div.dataTables_wrapper div.dataTables_length,#bookly-tbs div.dataTables_wrapper div.dataTables_paginate{text-align:center}}#bookly-tbs table.dataTable.table-condensed>thead>tr>th{padding-right:20px}#bookly-tbs table.dataTable.table-condensed .sorting:after,#bookly-tbs table.dataTable.table-condensed .sorting_asc:after,#bookly-tbs table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}#bookly-tbs table.table-bordered.dataTable td,#bookly-tbs table.table-bordered.dataTable th{border-left-width:0}#bookly-tbs table.table-bordered.dataTable td:last-child,#bookly-tbs table.table-bordered.dataTable th:last-child{border-right-width:0}#bookly-tbs table.table-bordered.dataTable tbody td,#bookly-tbs table.table-bordered.dataTable tbody th{border-bottom-width:0}#bookly-tbs div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}#bookly-tbs div.table-responsive>div.dataTables_wrapper>div.row{margin:0}#bookly-tbs div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}#bookly-tbs div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0}#bookly-tbs div.dt-button-info{position:fixed;top:50%;left:50%;z-index:21;width:400px;margin-top:-100px;margin-left:-200px;text-align:center;background-color:#fff;border:2px solid #111;border-radius:3px;-webkit-box-shadow:3px 3px 8px rgba(0,0,0,.3);box-shadow:3px 3px 8px rgba(0,0,0,.3)}#bookly-tbs div.dt-button-info h2{padding:.5em;margin:0;font-weight:400;background-color:#f3f3f3;border-bottom:1px solid #ddd}#bookly-tbs div.dt-button-info>div{padding:1em}#bookly-tbs ul.dt-button-collection.dropdown-menu{z-index:2002;display:block;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}#bookly-tbs ul.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid}#bookly-tbs ul.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}#bookly-tbs ul.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}#bookly-tbs ul.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}#bookly-tbs div.dt-button-background{position:fixed;top:0;left:0;z-index:2001;width:100%;height:100%}@media screen and (max-width:767px){#bookly-tbs div.dt-buttons{float:none;width:100%;margin-bottom:.5em;text-align:center}#bookly-tbs div.dt-buttons a.btn{float:none}}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th.child{cursor:default!important}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before{display:none!important}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child{position:relative;padding-left:30px;cursor:pointer}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child:before{position:absolute;top:9px;left:4px;display:block;width:18px;height:18px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;font-family:'Courier New',Courier,monospace;font-size:18px;font-weight:700;line-height:18px;color:#5b6470;text-align:center;content:'+';background-color:transparent;border:0;border-radius:18px;-webkit-box-shadow:0 0 2px #5b6470;box-shadow:0 0 2px #5b6470}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:transparent}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr.child td:before{display:none}#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;width:14px;height:14px;line-height:14px;text-indent:3px;border-radius:14px}#bookly-tbs table.dataTable.dtr-column>tbody>tr>td.control,#bookly-tbs table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}#bookly-tbs table.dataTable.dtr-column>tbody>tr>td.control:before,#bookly-tbs table.dataTable.dtr-column>tbody>tr>th.control:before{position:absolute;top:50%;left:50%;display:block;width:16px;height:16px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;margin-top:-10px;margin-left:-10px;font-family:'Courier New',Courier,monospace;line-height:14px;color:#fff;text-align:center;content:'+';background-color:#337ab7;border:2px solid #fff;border-radius:14px;-webkit-box-shadow:0 0 3px #444;box-shadow:0 0 3px #444}#bookly-tbs table.dataTable.dtr-column>tbody>tr.parent td.control:before,#bookly-tbs table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}#bookly-tbs table.dataTable>tbody>tr.child{padding:.5em 1em}#bookly-tbs table.dataTable>tbody>tr.child:hover{background:0 0!important}#bookly-tbs table.dataTable>tbody>tr.child ul{display:inline-block;width:100%;padding:0;margin:0;list-style-type:none}#bookly-tbs table.dataTable>tbody>tr.child ul li{padding:.3em 0;margin-bottom:.3em;border-bottom:1px solid #efefef}#bookly-tbs table.dataTable>tbody>tr.child ul li:first-child{padding-top:0}#bookly-tbs table.dataTable>tbody>tr.child ul li:last-child{border-bottom:none}#bookly-tbs table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:700}#bookly-tbs div.dtr-modal{position:fixed;top:0;left:0;z-index:100;width:100%;height:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:10em 1em}#bookly-tbs div.dtr-modal div.dtr-modal-display{position:absolute;top:0;right:0;bottom:0;left:0;z-index:102;width:50%;height:50%;margin:auto;overflow:auto;background-color:#f5f5f7;border:1px solid #000;border-radius:.5em;-webkit-box-shadow:0 12px 30px rgba(0,0,0,.6);box-shadow:0 12px 30px rgba(0,0,0,.6)}#bookly-tbs div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}#bookly-tbs div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;z-index:12;width:22px;height:22px;text-align:center;cursor:pointer;background-color:#f9f9f9;border:1px solid #eaeaea;border-radius:3px}#bookly-tbs div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}#bookly-tbs div.dtr-modal div.dtr-modal-background{position:fixed;top:0;right:0;bottom:0;left:0;z-index:101;background:rgba(0,0,0,.6)}@media screen and (max-width:767px){#bookly-tbs div.dtr-modal div.dtr-modal-display{width:95%}}#bookly-tbs div.dtr-bs-modal table.table tr:first-child td{border-top:none}#bookly-tbs table.dt-rowReorder-float{position:absolute!important;z-index:2001;table-layout:fixed;outline:2px solid #337ab7;outline-offset:-2px;opacity:.8}#bookly-tbs tr.dt-rowReorder-moving{outline:2px solid #888;outline-offset:-2px}#bookly-tbs body.dt-rowReorder-noOverflow{overflow-x:hidden}#bookly-tbs table.dataTable td.reorder{text-align:center;cursor:move}#bookly-tbs .jCal-wrap{margin-right:-10px;margin-left:-10px}#bookly-tbs .jCal{position:relative;width:100%}#bookly-tbs .jCalMo{position:relative;display:block;padding:0 15px;margin-bottom:15px;white-space:nowrap}@media (min-width:768px){#bookly-tbs .jCalMo{height:257px}}#bookly-tbs .jCal .month,#bookly-tbs .jCal .monthName,#bookly-tbs .jCal .monthSelect,#bookly-tbs .jCal .monthYear{float:left}#bookly-tbs .jCal .monthName{width:100%;padding:10px 0;font-weight:700;text-align:center}#bookly-tbs .jCal .monthYear{float:right;text-align:left}#bookly-tbs .jCal .month{width:100%}#bookly-tbs .jCal .monthSelect{background:#e8ebf0}#bookly-tbs .jCal .monthSelector{position:absolute}#bookly-tbs .jCal .monthSelectorShadow{position:absolute;padding:0;background:#8a929e}#bookly-tbs .jCal .monthNameHover,#bookly-tbs .jCal .monthYearHover{color:#8a929e;background:#e8ebf0}#bookly-tbs .jCal .monthSelectHover{color:#fff;background:#08c}#bookly-tbs .jCalMo .aday,#bookly-tbs .jCalMo .day,#bookly-tbs .jCalMo .dow,#bookly-tbs .jCalMo .invday,#bookly-tbs .jCalMo .overDay,#bookly-tbs .jCalMo .pday,#bookly-tbs .jCalMo .selectedDay{position:relative;float:left;width:-webkit-calc(14.2857% + 1px);width:calc(14.2857% + 1px);margin-right:-1px;text-align:center;cursor:default;border:1px solid #e8ebf0;border-width:0 1px 1px 1px}#bookly-tbs .jCalMo .dow{font-size:12px;line-height:30px;background:#e8ebf0;border-bottom:0}#bookly-tbs .jCalMo .day{font-size:13px;line-height:30px;cursor:pointer;background:#fff}#bookly-tbs .jCalMo .invday{color:#8a929e;text-decoration:line-through;background:#e8ebf0}#bookly-tbs .jCalMo .aday,#bookly-tbs .jCalMo .pday{font-size:13px;line-height:30px;color:#d9dee4;background:rgba(232,235,240,.3)}#bookly-tbs .jCalMo .overDay{color:#3e424a;background:rgba(0,136,204,.2)}#bookly-tbs .jCalMo .holidayDay{color:#fff;background:#f0ad4e}#bookly-tbs .jCalMo .holidayDay.repeatDay{color:#fff;background:#d9534f}#bookly-tbs .jCalMo .selectedDay,#bookly-tbs .jCalMo .selectedDay.repeatDay{color:#fff;background:#08c}#bookly-tbs .jCal .left,#bookly-tbs .jCal .right{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bookly-tbs .jCalMask,#bookly-tbs .jCalMove{position:absolute;width:700px;height:930px;overflow:hidden}@media (min-width:768px){#bookly-tbs .jCalMo{float:left;width:50%}}@media (min-width:1200px){#bookly-tbs .jCalMo{float:left;width:33.33333333%}}#bookly-tbs .bookly-loading{position:relative;height:100px}#bookly-tbs .bookly-loading:before{position:absolute;top:-webkit-calc(50% - 16px);top:calc(50% - 16px);left:-webkit-calc(50% - 16px);left:calc(50% - 16px);width:32px;height:32px;content:'';background:url(../../images/ajax_loader_32x32.gif) no-repeat;-webkit-background-size:contain;background-size:contain}#bookly-tbs .bookly-loading-16{position:relative;display:inline-block;min-width:16px;min-height:16px}#bookly-tbs .bookly-loading-16:before{position:absolute;top:-webkit-calc(50% - 8px);top:calc(50% - 8px);left:-webkit-calc(50% - 8px);left:calc(50% - 8px);width:16px;height:16px;content:'';background:url(../../images/loading.gif) no-repeat;-webkit-background-size:contain;background-size:contain}#bookly-tbs .select2 .select2-selection{height:35px!important;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .select2 .select2-selection__choice{display:none}#bookly-tbs .select2 .select2-selection ul{padding:0 16px;margin-bottom:0}#bookly-tbs .select2 .select2-search{float:none;margin:6px 0}#bookly-tbs .select2 .select2-search__field{width:100%!important;padding:0;margin:0;border:0;-webkit-box-shadow:none!important;box-shadow:none!important}#bookly-tbs .select2 .select2-selection__clear{top:-2px}#bookly-tbs .select2 .select2-selection__arrow{top:-4px}#bookly-tbs .bookly-no-borders,#bookly-tbs .bookly-no-borders td{border:0!important}#bookly-tbs .panel.bookly-main{border-color:#d9dee4;border-width:1px}@media (min-width:992px){#bookly-tbs .panel.bookly-main>.panel-body{padding:25px}}#bookly-tbs .panel.bookly-main .panel-body+.panel-footer{margin:0 15px 15px}@media (min-width:992px){#bookly-tbs .panel.bookly-main .panel-body+.panel-footer{margin:0 25px 25px}}#bookly-tbs .panel.bookly-panel-unborder,#bookly-tbs .panel.bookly-panel-unborder .panel-heading,#bookly-tbs .panel.bookly-panel-unborder>.list-group .list-group-item,#bookly-tbs .panel.bookly-panel-unborder>.panel-collapse>.list-group .list-group-item{border-width:0}#bookly-tbs .panel.bookly-panel-unborder .panel-heading{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel .panel-heading .bookly-font-smaller{padding-top:4px}#bookly-tbs .panel .panel-footer{padding:21px 0 0 0;background-color:transparent}@media (min-width:768px){#bookly-tbs .panel .panel-footer{text-align:right}}@media (max-width:767px){#bookly-tbs .panel .panel-footer .btn{float:none!important}}#bookly-tbs .panel .panel-body .bookly-codes input{width:242px;border:none}#bookly-tbs .panel .panel-body #bookly-prices tr td:nth-child(4),#bookly-tbs .panel .panel-body #bookly-prices tr td:nth-child(5){text-align:right}#bookly-tbs .panel .padding-lr-none{padding-right:0;padding-left:0}#bookly-tbs .panel .panel-group .panel-footer{border-top:1px solid #e8ebf0}#bookly-tbs .bookly-collapse{margin-bottom:16px!important}#bookly-tbs .bookly-collapse a[data-toggle=collapse]{padding-right:25px;vertical-align:middle;background:url(../../../resources/images/notifications-arrow-up.png) 100% 50% no-repeat;-webkit-background-size:17px 17px!important;background-size:17px 17px!important;outline:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .bookly-collapse a[data-toggle=collapse].collapsed{background:url(../../../resources/images/notifications-arrow-down.png) 100% 50% no-repeat}#bookly-tbs .help-block{margin-top:-5px;margin-bottom:7px}@media (min-width:768px){#bookly-tbs .form-inline .form-group+.form-group,#bookly-tbs .modal-footer .btn+.btn,#bookly-tbs .page-header .bookly-support-panel>*+*,#bookly-tbs .page-header .popover+.btn,#bookly-tbs .panel-footer .btn+.btn:not(.bookly-btn-unborder){margin-left:12px}}#bookly-tbs .bookly-block-head{margin-bottom:20px}#bookly-tbs .intl-tel-input{display:block}#bookly-tbs .intl-tel-input .flag-container{right:0;left:0}#bookly-tbs .intl-tel-input .selected-flag{width:42px;padding:0 0 0 8px}#bookly-tbs .intl-tel-input .selected-flag .arrow{right:4px;left:auto;border-top:4px solid #000;border-right:3px solid transparent;border-left:3px solid transparent}#bookly-tbs .intl-tel-input .iti-flag{background-image:url(../../../../frontend/resources/images/flags.png)}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (min-resolution:2dppx){#bookly-tbs .intl-tel-input .iti-flag{background-image:url(../../../../frontend/resources/images/flags@2x.png)}}#bookly-tbs .intl-tel-input .form-control{padding-left:45px}#bookly-tbs .intl-tel-input .country-list{max-width:100%}#bookly-tbs .form-inline label{margin-bottom:0}#bookly-tbs .form-inline .intl-tel-input{display:inline-block}#bookly-tbs .form-inline .bookly-checkbox-text{font-weight:400;vertical-align:middle}#bookly-tbs .page-header{margin-top:0}#bookly-tbs .page-header .bookly-support-panel #bookly-bell+.badge{position:absolute;top:-17px;right:7px;background-color:red}#bookly-tbs .page-header .bookly-support-panel .dropdown-menu-right{margin-top:10px;margin-right:3px}#bookly-tbs .bookly-nav-justified.nav-justified{display:table;margin-bottom:30px;table-layout:fixed}#bookly-tbs .bookly-nav-justified.nav-justified>li{display:table-cell;width:100%}#bookly-tbs .bookly-nav-justified.nav-justified>li>a{padding:15px 5px;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #d9dee4;border-radius:0}#bookly-tbs .bookly-nav-justified.nav-justified>li>.active>a,#bookly-tbs .bookly-nav-justified.nav-justified>li>.active>a:focus,#bookly-tbs .bookly-nav-justified.nav-justified>li>.active>a:hover{border-bottom:1px solid #08c}#bookly-tbs .bookly-nav-justified.nav-justified>li .bookly-icon{margin:0 3px;vertical-align:bottom}#bookly-tbs .bookly-nav-tabs-title{font-size:17px}@media (max-width:991px){#bookly-tbs .bookly-nav-tabs-title{display:none}}#bookly-tbs .bookly-thumb{position:relative;display:block;width:76px;height:76px;overflow:hidden;background-color:#e8ebf0;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat;background-position:-106px 0;border:1px solid #d9dee4;border-radius:4px}#bookly-tbs .bookly-thumb.bookly-thumb-sm{width:36px;height:36px;background-position:-182px 0}@media (min-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg{width:106px;height:106px;background-position:0 0}}@media (max-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg{background-position:0 0}}#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{background-color:rgba(0,0,0,.05);background-image:none}@media (min-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{width:106px;height:106px;background-position:0 0}}@media (max-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{background-position:0 0}}@media (min-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{width:100%}}#bookly-tbs .bookly-thumb .bookly-thumb-delete{position:absolute;top:5px;right:5px}#bookly-tbs .bookly-thumb .bookly-thumb-edit{position:absolute;right:0;bottom:0;left:0;background-color:rgba(0,0,0,.4)}#bookly-tbs .bookly-thumb .bookly-thumb-edit .bookly-thumb-edit-btn{width:100%;padding:0 3px;margin:0;overflow:hidden;font-size:13px;line-height:25px;color:#fff;text-align:center;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .bookly-staff-archived{background:rgba(232,235,240,.7)!important}#bookly-tbs .bookly-staff-archived .bookly-flex-cell{color:#d9dee4}#bookly-tbs .bookly-staff-archived .bookly-rating-right{color:#d9dee4}#bookly-tbs .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .btn.btn-lg{padding-right:32px;padding-left:32px}#bookly-tbs .btn.btn-xlg .dashicons,#bookly-tbs .btn.btn-xlg .dashicons-before:before{width:30px;height:30px;font-size:30px}#bookly-tbs .btn.bookly-btn-unborder{padding-right:0;padding-left:0;border-color:transparent}#bookly-tbs .bookly-nav{margin-bottom:20px;font-size:0}#bookly-tbs .bookly-nav.bookly-nav-pills .bookly-nav-item{display:inline-block;margin:6px 10px 6px 0}#bookly-tbs .bookly-nav.bookly-nav-tabs{z-index:10;border-bottom:1px solid #e8ebf0}@media (min-width:768px){#bookly-tbs .bookly-nav.bookly-nav-tabs{margin-bottom:0}}@media (min-width:768px){#bookly-tbs .bookly-nav.bookly-nav-tabs .bookly-nav-item{position:relative;display:inline-block;padding:12px 16px;margin:6px 10px -1px 0;border-bottom-right-radius:0;border-bottom-left-radius:0}}#bookly-tbs .bookly-nav .bookly-nav-item{position:relative;display:block;padding:10px 10px;margin-bottom:6px;font-size:15px;background:#fff;border:1px solid #e8ebf0;border-radius:4px}#bookly-tbs .bookly-nav .bookly-nav-item.active{color:#fff;background:#08c;border-color:#08c}#bookly-tbs .bookly-nav .bookly-nav-item.active a{color:#fff}#bookly-tbs .bookly-nav .bookly-nav-item.active a:focus,#bookly-tbs .bookly-nav .bookly-nav-item.active a:hover{color:#d9d9d9}#bookly-tbs .bookly-nav .bookly-nav-item:not(.active):focus,#bookly-tbs .bookly-nav .bookly-nav-item:not(.active):hover{cursor:pointer;background-color:#e8ebf0;border-color:#8a929e;-webkit-box-shadow:0 0 5px rgba(0,0,0,.2);box-shadow:0 0 5px rgba(0,0,0,.2)}#bookly-tbs .board-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.5)}#bookly-tbs .board-backdrop .bookly-board{width:50%;padding:20px;margin:10% 25%;background-color:#fefefe;border:1px solid rgba(0,0,0,.2)}@media (max-width:991px){#bookly-tbs .board-backdrop .bookly-board{width:90%;margin:10% 5%}}#bookly-tbs .board-backdrop .bookly-board .btn-group-vertical.align-left .btn{padding-left:6px;text-align:left}#bookly-tbs .board-backdrop .bookly-board ul{margin-left:15px!important;list-style:inside!important}#bookly-tbs .bookly-dropdown-menu>li:first-child{margin-left:0}#bookly-tbs .bookly-dropdown-menu li{margin-left:20px}#bookly-tbs .bookly-dropdown-menu ul>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4;color:#5b6470;white-space:nowrap}#bookly-tbs .bookly-dropdown-menu ul>li>a:focus,#bookly-tbs .bookly-dropdown-menu ul>li>a:hover{color:#505762;text-decoration:none;background-color:#f5f5f5}#bookly-tbs .bookly-dropdown-block{display:block;width:100%;height:36px;line-height:1.4}#bookly-tbs .bookly-dropdown-block .bookly-flex-cell:last-child{position:absolute;top:7px;left:-webkit-calc(100% - 32px);left:calc(100% - 32px)}#bookly-tbs .bookly-service-color{display:inline-block;width:21px;height:21px;margin-left:-25px;border:2px solid #fff;border-radius:50%}#bookly-tbs .bookly-vertical-colors .bookly-service-color{position:absolute}#bookly-tbs .bookly-vertical-colors .bookly-service-color:nth-child(1){margin-top:-15px}#bookly-tbs .bookly-vertical-colors .bookly-service-color:nth-child(2){margin-top:-5px}#bookly-tbs .bookly-max-height-xs{max-height:200px!important;overflow:auto}#bookly-tbs .bookly-max-height-sm{max-height:300px!important;overflow:auto}#bookly-tbs .bookly-max-height-md{max-height:400px!important;overflow:auto}#bookly-tbs .bookly-max-height-lg{max-height:500px!important;overflow:auto}#bookly-tbs .bookly-holidays-nav{display:block;width:200px;margin:0 auto}#bookly-tbs .bookly-holidays-nav .btn-default,#bookly-tbs .bookly-holidays-nav .form-control{background-color:#eff1f4;border-color:transparent}#bookly-tbs .modal-body textarea.wp-editor-area{width:-webkit-calc(100% - 20px);width:calc(100% - 20px)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-day{cursor:pointer}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-day.bookly-fc-day-active{background-color:#eafcff}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group{position:relative;display:inline-block;vertical-align:middle}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group .fc-button+.fc-button{margin-left:-1px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:not(.fc-corner-left):not(.fc-corner-right){border-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:first-child{margin-left:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:first-child:not(.fc-corner-right){border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:not(.fc-corner-left){border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group:not(:last-child){margin-right:16px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button{display:inline-block;height:auto;padding:6px 12px;margin-bottom:0;overflow:hidden;font-size:15px;font-weight:400;line-height:1.4;text-align:center;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-pill{border-radius:24px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-pill-left{border-top-left-radius:24px;border-bottom-left-radius:24px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-pill-right{border-top-right-radius:24px;border-bottom-right-radius:24px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-lg{padding-right:32px;padding-left:32px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-xlg .dashicons,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-xlg .dashicons-before:before{width:30px;height:30px;font-size:30px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.bookly-btn-unborder{padding-right:0;padding-left:0;border-color:transparent}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default{color:#3e424a;text-shadow:none;background-color:#fff;background-image:none;border-color:#d9dee4;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:focus{color:#3e424a;background-color:#e6e6e6;border-color:#8e9daf}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:hover{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active:hover,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active:hover,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.focus,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:focus,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:hover{color:#3e424a;background-color:#d4d4d4;border-color:#8e9daf}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default{background-image:none}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.disabled.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.disabled:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.disabled:hover,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default[disabled].focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default[disabled]:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default[disabled]:hover,fieldset[disabled] #bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.focus,fieldset[disabled] #bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:focus,fieldset[disabled] #bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:hover{background-color:#fff;border-color:#d9dee4}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default .badge{color:#fff;background-color:#3e424a}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active{z-index:1;color:#3e424a;background-color:#e6e6e6;background-image:none;border-color:#b5bfcb;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active:hover{color:#3e424a;background-color:#d4d4d4;border-color:#8e9daf}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2{position:relative;margin:0;font-size:20px;line-height:32px;cursor:pointer}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2:hover{color:#005580}@media (min-width:768px){#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2{font-size:24px}}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2:after{display:inline-block;width:0;height:0;margin-left:12px;vertical-align:middle;content:" ";border-top:5px dashed;border-top:5px solid\9;border-right:5px solid transparent;border-left:5px solid transparent}@media (max-width:767px){#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-left,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-right{display:inline-block;float:none;margin:0 12px 6px 12px}}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-head{background-color:#e8ebf0}#bookly-tbs .bookly-fc-inner .bookly-calendar th.fc-widget-header{padding:10px 0}#bookly-tbs .bookly-fc-inner .bookly-calendar th.fc-day-header{text-align:center}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc .fc-axis{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;padding:0 4px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-view{min-height:.01%;overflow-x:auto}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-view>table{min-width:768px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-event{padding:3px 2px 3px 5px;margin-right:0;margin-left:0;color:#3e424a;cursor:pointer;border-width:0;border-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-event:after{position:absolute;top:0;right:0;width:-webkit-calc(100% - 2px);width:calc(100% - 2px);height:100%;content:'';background-color:rgba(255,255,255,.6);border-bottom:1px solid rgba(255,255,255,.4)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-event:hover:after{background-color:rgba(255,255,255,.7)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-time{font-size:inherit;font-weight:700}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-time .bookly-fc-icon{float:right;color:#3e424a;opacity:.8}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-time .bookly-fc-icon:hover{cursor:pointer;opacity:1}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-title{display:block;margin-top:3px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-ltr .fc-time-grid .fc-event-container,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-rtl .fc-time-grid .fc-event-container{margin:0}#bookly-tbs .bookly-fc-inner .fc-loading-inner{position:absolute;top:50px;right:0;bottom:0;left:0;z-index:9;background-color:rgba(255,255,255,.7)}#bookly-tbs .bookly-fc-inner .fc-loading-inner .fc-loading{position:absolute;top:50%;left:50%;width:auto;height:32px;padding-left:64px;background:rgba(255,0,0,0) url(../../images/ajax_loader_32x32.gif) no-repeat scroll 50% center}#bookly-tbs .bookly-fc-inner .bookly-margin-top-xlg{position:relative;min-height:.01%;overflow:visible}@media (min-width:768px){#bookly-tbs .daterangepicker.dropdown-menu.show-calendar{min-width:718px}}#bookly-tbs .daterangepicker .daterangepicker_input{margin-bottom:6px}#bookly-tbs .daterangepicker .daterangepicker_input .glyphicon{position:absolute;top:8px}#bookly-tbs .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs .wp-switch-editor+.wp-switch-editor{margin-left:5px}#bookly-tbs .editable-container.popover{z-index:9999}#bookly-tbs .editable-input,#bookly-tbs .editable-input .form-control{width:100%}#bookly-tbs .editable-input textarea{resize:both}#bookly-tbs .editable-buttons{display:block;margin:6px 0;text-align:right}#bookly-tbs .editable-clear-x,#bookly-tbs .editable-click{cursor:pointer}#bookly-tbs .table>thead>tr>th{padding:16px 8px;background-color:#e8ebf0}#bookly-tbs .bookly-table-sortable.table>thead>tr>th{position:relative;padding-left:16px!important}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class],#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by]{cursor:pointer}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class]:after,#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by]:after{position:absolute;bottom:22px;left:-4px;width:24px;height:15px;content:"";background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDQ4IDQ4IiB3aWR0aD0iNDgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDIwbDEwIDEwIDEwLTEweiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==);background-repeat:no-repeat;background-position:0 -webkit-calc(50% + 2px);background-position:0 calc(50% + 2px);-webkit-background-size:24px 24px;background-size:24px 24px;opacity:.1}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class].desc:after,#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by].desc:after{opacity:1;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class].asc:after,#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by].asc:after{opacity:1}#bookly-tbs .table thead>tr>th{vertical-align:middle}#bookly-tbs .table thead>tr>th:not(:first-child){border-left:1px solid #d9dee4}#bookly-tbs .table td>input[type=checkbox],#bookly-tbs .table th>input[type=checkbox]{margin:0}#bookly-tbs .table td ul.bookly-list,#bookly-tbs .table th ul.bookly-list{padding-left:13px;margin:0!important}#bookly-tbs .table td ul.bookly-list.list-dots,#bookly-tbs .table th ul.bookly-list.list-dots{list-style:disc outside!important}#bookly-tbs .table td ul.bookly-list li,#bookly-tbs .table th ul.bookly-list li{margin:0}#bookly-tbs .bookly-color-picker-wrapper{position:relative;min-height:35px}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container{position:absolute;z-index:10;padding:6px;margin-left:-6px;background-color:#fff}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container,#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container.wp-picker-active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container .wp-color-result{height:auto}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container .button{margin-left:6px}#bookly-tbs .page-header .bookly-page-title{float:left;font-size:24px;line-height:38px}@media (max-width:767px){#bookly-tbs .page-header .bookly-page-title{font-size:22px}#bookly-tbs h3{font-size:18px}}#bookly-tbs .modal{top:46px!important;font-size:15px}#bookly-tbs .modal table{font-family:Arial,Helvetica,sans-serif}#bookly-tbs .modal table th{word-break:normal}#bookly-tbs .modal table td{word-break:normal}#bookly-tbs .modal .bookly-codes input{width:242px;border:none}#bookly-tbs .modal-header .close{margin-top:4px}@media (max-width:767px){#bookly-tbs .bookly-form .bookly-progress-tracker{display:none!important}}#bookly-tbs .bookly-form .picker__nav--next,#bookly-tbs .bookly-form .picker__nav--prev{width:26px;height:26px}@media (max-width:991px){#bookly-tbs .bookly-form .bookly-user-coupon{width:135px}}#bookly-tbs .bookly-form .bookly-box{padding-bottom:1px}#bookly-tbs .bookly-form input[type=checkbox],#bookly-tbs .bookly-form input[type=radio]{width:16px!important;height:16px!important}#bookly-tbs .bookly-icon{display:inline-block;width:24px;height:24px;vertical-align:middle;background-color:transparent;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat}#bookly-tbs .bookly-icon.bookly-icon-draghandle{background-position:-154px -82px}#bookly-tbs .has-feedback .alert-icon{display:inline-block;width:24px;height:24px;margin:4px 6px 0 0;vertical-align:middle;background-color:transparent;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat}#bookly-tbs .has-feedback.has-success .alert-icon{background-position:-24px -113px}#bookly-tbs .has-feedback.has-error .alert-icon{background-position:-48px -113px}#bookly-tbs .has-feedback.has-warning .alert-icon{background-position:-72px -113px}#bookly-tbs .has-feedback.has-ajax .alert-icon{background-position:-72px -113px;-webkit-animation:spin 3s infinite;-o-animation:spin 3s infinite;animation:spin 3s infinite}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spin{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}#bookly-tbs .alert{margin-top:30px}#bookly-tbs .alert .alert-icon,#bookly-tbs .alert .close{display:inline-block;width:24px;height:24px;vertical-align:top;background-color:transparent;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat}#bookly-tbs .alert .close{margin-top:-2px}#bookly-tbs .alert.alert-info .alert-icon{background-position:0 -113px}#bookly-tbs .alert.alert-success .alert-icon{background-position:-24px -113px}#bookly-tbs .alert.alert-danger .alert-icon{background-position:-48px -113px}#bookly-tbs .alert.alert-warning .alert-icon{background-position:-72px -113px}#bookly-tbs .bookly-alert{position:fixed;top:55px;right:13px;z-index:10000;text-align:left}@media (min-width:783px){#bookly-tbs .bookly-alert{right:21px}}#bookly-tbs .bookly-alert button{margin-left:10px}#bookly-tbs .pagination .next,#bookly-tbs .pagination .prev{position:inherit;width:inherit;height:inherit;padding:inherit}#bookly-tbs .pagination .next:before,#bookly-tbs .pagination .prev:before{position:inherit;width:inherit;height:inherit;padding:inherit;content:""}#bookly-tbs #bookly-appointments-list .popover .arrow{display:none}#bookly-tbs .bookly-rating-right{float:right}#bookly-tbs .bookly-rating-left{margin-left:10px}#bookly-tbs .bookly-rating-left i{margin-top:3px}#bookly-tbs .table.table-striped{border:1px solid #f4f4f4}#bookly-tbs .table.table-striped thead>tr>th{background-color:transparent;border-top:1px solid #f4f4f4}#bookly-tbs .table.table-striped thead>tr>th:not(:first-child){border-left:1px solid #f4f4f4}#bookly-tbs .table.table-striped thead>tr>th{border-bottom:none}#bookly-tbs .table.table-striped tbody>tr>td{border-top:1px solid #f4f4f4}#bookly-tbs .modal.fade.show{opacity:1}#bookly-tbs .modal .modal-header{display:block}#bookly-tbs ul{list-style:none}#bookly-tbs .modal.show .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bookly-tbs h2:before{content:none}#bookly-tbs .dataTables_wrapper{display:block}body.mobile.modal-open #wpwrap{position:inherit!important}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-backdrop+.modal-backdrop{display:none!important}.modal-open{overflow:hidden!important}.modal-open .modal{overflow-x:hidden!important;overflow-y:auto!important}.select2-container--bootstrap{display:block}.select2-container--bootstrap .select2-selection{font-size:15px;color:#3e424a;background-color:#fff;border:1px solid #d9dee4;border-radius:4px;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.select2-container--bootstrap .select2-selection.form-control{border-radius:4px}.select2-container--bootstrap .select2-search--dropdown .select2-search__field{font-size:15px;color:#3e424a;background-color:#fff;border:1px solid #d9dee4;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.select2-container--bootstrap .select2-search__field{outline:0}.select2-container--bootstrap .select2-search__field::-webkit-input-placeholder{color:#8a929e}.select2-container--bootstrap .select2-search__field:-moz-placeholder{color:#8a929e}.select2-container--bootstrap .select2-search__field::-moz-placeholder{color:#8a929e;opacity:1}.select2-container--bootstrap .select2-search__field:-ms-input-placeholder{color:#8a929e}.select2-container--bootstrap .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option[role=group]{padding:0}.select2-container--bootstrap .select2-results__option[aria-disabled=true]{color:#d9dee4;cursor:not-allowed}.select2-container--bootstrap .select2-results__option[aria-selected=true]{color:#505762;background-color:#f5f5f5}.select2-container--bootstrap .select2-results__option--highlighted[aria-selected]{color:#fff;background-color:#08c}.select2-container--bootstrap .select2-results__option .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*2;margin-left:-12px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*3;margin-left:-12px*2}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*4;margin-left:-12px*3}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*5;margin-left:-12px*4}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*6;margin-left:-12px*5}.select2-container--bootstrap .select2-results__group{display:block;padding:6px 12px;font-size:13px;line-height:1.4;color:#d9dee4;white-space:nowrap}.select2-container--bootstrap.select2-container--focus .select2-selection,.select2-container--bootstrap.select2-container--open .select2-selection{border-color:#08c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,136,204,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,136,204,.6);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.select2-container--bootstrap.select2-container--open .select2-selection .select2-selection__arrow b{border-color:transparent transparent #8a929e transparent;border-width:0 5px 5px 5px}.select2-container--bootstrap.select2-container--open.select2-container--below .select2-selection{border-bottom-color:transparent;border-bottom-right-radius:0;border-bottom-left-radius:0}.select2-container--bootstrap.select2-container--open.select2-container--above .select2-selection{border-top-color:transparent;border-top-left-radius:0;border-top-right-radius:0}.select2-container--bootstrap .select2-selection__clear{float:right;margin-right:10px;font-weight:700;color:#8a929e;cursor:pointer}.select2-container--bootstrap .select2-selection__clear:hover{color:#3e424a}.select2-container--bootstrap.select2-container--disabled .select2-selection{border-color:#d9dee4;-webkit-box-shadow:none;box-shadow:none}.select2-container--bootstrap.select2-container--disabled .select2-search__field,.select2-container--bootstrap.select2-container--disabled .select2-selection{cursor:not-allowed}.select2-container--bootstrap.select2-container--disabled .select2-selection,.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice{background-color:rgba(232,235,240,.7)}.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice__remove,.select2-container--bootstrap.select2-container--disabled .select2-selection__clear{display:none}.select2-container--bootstrap .select2-dropdown{margin-top:-1px;overflow-x:hidden;border-color:#08c;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.select2-container--bootstrap .select2-dropdown--above{margin-top:1px;-webkit-box-shadow:0 -6px 12px rgba(0,0,0,.175);box-shadow:0 -6px 12px rgba(0,0,0,.175)}.select2-container--bootstrap .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--bootstrap .select2-selection--single{height:35px;padding:6px 27px 6px 12px;line-height:1.4}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow{position:absolute;top:0;right:12px;bottom:0;width:5px}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow b{position:absolute;top:50%;left:0;width:0;height:0;margin-top:-5px/2;margin-left:-5px;border-color:#8a929e transparent transparent transparent;border-style:solid;border-width:5px 5px 0 5px}.select2-container--bootstrap .select2-selection--single .select2-selection__rendered{padding:0;color:#3e424a}.select2-container--bootstrap .select2-selection--single .select2-selection__placeholder{color:#8a929e}.select2-container--bootstrap .select2-selection--multiple{height:auto;min-height:35px;padding:0}.select2-container--bootstrap .select2-selection--multiple .select2-selection__rendered{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0;overflow:hidden;line-height:1.4;text-overflow:ellipsis;white-space:nowrap;list-style:none}.select2-container--bootstrap .select2-selection--multiple .select2-selection__placeholder{float:left;margin-top:5px;color:#8a929e}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice{float:left;padding:0 6px;margin:5px 0 0 12px/2;color:#3e424a;cursor:default;background:#fff;border:1px solid #d9dee4;border-radius:4px}.select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field{min-width:5em;height:35px - 2;padding:0 12px;margin-top:0;line-height:1.4;background:0 0}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove{display:inline-block;margin-right:6px/2;font-weight:700;color:#8a929e;cursor:pointer}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove:hover{color:#3e424a}.select2-container--bootstrap .select2-selection--multiple .select2-selection__clear{margin-top:6px}.form-group-sm .select2-container--bootstrap .select2-selection--single,.input-group-sm .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-sm{height:32px;padding:5px 10px + 5px*3 5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}.form-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-sm .select2-selection__arrow b{margin-left:-5px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple,.input-group-sm .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-sm{min-height:32px;border-radius:3px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__choice{padding:0 5px;margin:4px 0 0 10px/2;font-size:13px;line-height:1.53846154}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-search--inline .select2-search__field{height:32px - 2;padding:0 10px;font-size:13px;line-height:1.53846154}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__clear{margin-top:5px}.form-group-lg .select2-container--bootstrap .select2-selection--single,.input-group-lg .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-lg{height:46px;padding:10px 16px + 6px*3 10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow{width:6px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow b{margin-top:-6px/2;margin-left:-6px;margin-left:-10px;border-width:6px 6px 0 6px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple,.input-group-lg .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-lg{min-height:46px;border-radius:6px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__choice{padding:0 10px;margin:9px 0 0 16px/2;font-size:18px;line-height:1.3333333;border-radius:4px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-search--inline .select2-search__field{height:46px - 2;padding:0 16px;font-size:18px;line-height:1.3333333}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__clear{margin-top:10px}.select2-container--bootstrap .select2-selection.input-lg.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #8a929e transparent;border-width:0 6px 6px 6px}.input-group-lg .select2-container--bootstrap .select2-selection.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #8a929e transparent;border-width:0 6px 6px 6px}.select2-container--bootstrap[dir=rtl] .select2-selection--single{padding-right:12px;padding-left:12px + 5px*3}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:0;padding-left:0;text-align:right}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow{right:auto;left:12px}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow b{margin-left:0}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-right:12px/2;margin-left:0}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-right:auto;margin-left:2px}.has-warning .select2-dropdown,.has-warning .select2-selection{border-color:#8a6d3b}.has-warning .select2-container--focus .select2-selection,.has-warning .select2-container--open .select2-selection{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning.select2-drop-active{border-color:#66512c}.has-warning.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#66512c}.has-error .select2-dropdown,.has-error .select2-selection{border-color:#a94442}.has-error .select2-container--focus .select2-selection,.has-error .select2-container--open .select2-selection{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error.select2-drop-active{border-color:#843534}.has-error.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#843534}.has-success .select2-dropdown,.has-success .select2-selection{border-color:#3c763d}.has-success .select2-container--focus .select2-selection,.has-success .select2-container--open .select2-selection{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success.select2-drop-active{border-color:#2b542c}.has-success.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#2b542c}.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection,.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection.form-control{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection.form-control{border-radius:0}.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection.form-control{border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.select2-container--bootstrap{position:relative;z-index:2;display:table;width:100%;margin-bottom:0;table-layout:fixed}.input-group>.select2-container--bootstrap>.selection>.select2-selection.form-control{float:none}.input-group>.select2-container--bootstrap.select2-container--focus,.input-group>.select2-container--bootstrap.select2-container--open{z-index:3}.input-group>.select2-container--bootstrap,.input-group>.select2-container--bootstrap .input-group-btn,.input-group>.select2-container--bootstrap .input-group-btn .btn{vertical-align:top}.form-control.select2-hidden-accessible{position:absolute!important;width:1px!important}@media (min-width:768px){.form-inline .select2-container--bootstrap{display:inline-block}}.select2-results__option{padding:7px 12px;margin-bottom:1px!important}.select2-results__option[aria-selected=true]{color:#8a929e!important;background-color:inherit!important}.select2-container--bootstrap .select2-results>.select2-results__options{max-height:400px}.select2-container--bootstrap .select2-results>.select2-results__options .select2-results__option{padding:2px 12px;margin-bottom:1px!important;font-size:15px;line-height:1.4em}.select2-container--bootstrap .select2-results>.select2-results__options .select2-results__option i{margin-right:5px}.select2-container--bootstrap .select2-results>.select2-results__options .select2-results__group{font-size:16px;color:#000}#select2-bookly-appointment-dialog-select2-results .select2-results__option[aria-selected=true]{color:#444!important}table.dt-rowReorder-float{position:absolute!important;outline:2px solid #888}
backend/resources/css/select2.min.css CHANGED
@@ -1 +1 @@
1
- .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
1
+ .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
backend/resources/js/jCal.js CHANGED
@@ -82,8 +82,8 @@
82
  // save right arrow
83
  var right = null;
84
  // create new previous 12 months
85
- for (var i = 0; i < 12; i++ ) {
86
- $(e.data._target).prepend('<div class="jCalMo"></div>');
87
  e.data.day = new Date( $('div[id*=' + e.data.cID + 'd_]:first', e.data._target).attr('id').replace(e.data.cID + 'd_', '').replace(/_/g, '/') );
88
  e.data.day.setDate(1);
89
  e.data.day.setMonth( e.data.day.getMonth() - 1);
@@ -115,7 +115,7 @@
115
  var left = false;
116
  // create new next 12 month
117
  for (var i = 0; i < 12; i++) {
118
- $(e.data._target).append('<div class="jCalMo"></div>');
119
  e.data.day = new Date( $('div[id^=' + e.data.cID + 'd_]:last', e.data._target).attr('id').replace(e.data.cID + 'd_', '').replace(/_/g, '/') );
120
  e.data.day.setDate(1);
121
  e.data.day.setMonth( e.data.day.getMonth() + 1 );
82
  // save right arrow
83
  var right = null;
84
  // create new previous 12 months
85
+ for (var i = 11; i >= 0; i-- ) {
86
+ $(e.data._target).prepend('<div class="jCalMo" data-index="' + i + '"></div>');
87
  e.data.day = new Date( $('div[id*=' + e.data.cID + 'd_]:first', e.data._target).attr('id').replace(e.data.cID + 'd_', '').replace(/_/g, '/') );
88
  e.data.day.setDate(1);
89
  e.data.day.setMonth( e.data.day.getMonth() - 1);
115
  var left = false;
116
  // create new next 12 month
117
  for (var i = 0; i < 12; i++) {
118
+ $(e.data._target).append('<div class="jCalMo" data-index="' + i + '"></div>');
119
  e.data.day = new Date( $('div[id^=' + e.data.cID + 'd_]:last', e.data._target).attr('id').replace(e.data.cID + 'd_', '').replace(/_/g, '/') );
120
  e.data.day.setDate(1);
121
  e.data.day.setMonth( e.data.day.getMonth() + 1 );
backend/resources/js/select2.full.min.js CHANGED
@@ -1 +1 @@
1
- /*! Select2 4.0.4 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k<a.length;k++)if("."===(m=a[k]))a.splice(k,1),k-=1;else if(".."===m){if(0===k||1===k&&".."===a[2]||".."===a[k-1])continue;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[a]=!0,n.apply(b,c)}if(!e(r,a)&&!e(u,a))throw new Error("No "+a);return r[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return a?k(a):[]}function m(a){return function(){return t&&t.config&&t.config[a]||{}}}var n,o,p,q,r={},s={},t={},u={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;p=function(a,b){var c,d=k(a),e=d[0],g=b[1];return a=d[1],e&&(e=f(e,g),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(g)):f(a,g):(a=f(a,g),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},q={require:function(a){return g(a)},exports:function(a){var b=r[a];return void 0!==b?b:r[a]={}},module:function(a){return{id:a,uri:"",exports:r[a],config:m(a)}}},n=function(a,c,d,f){var h,k,m,n,o,t,v,w=[],x=typeof d;if(f=f||a,t=l(f),"undefined"===x||"function"===x){for(c=!c.length&&d.length?["require","exports","module"]:c,o=0;o<c.length;o+=1)if(n=p(c[o],t),"require"===(k=n.f))w[o]=q.require(a);else if("exports"===k)w[o]=q.exports(a),v=!0;else if("module"===k)h=w[o]=q.module(a);else if(e(r,k)||e(s,k)||e(u,k))w[o]=j(k);else{if(!n.p)throw new Error(a+" missing "+k);n.p.load(n.n,g(f,!0),i(k),{}),w[o]=r[k]}m=d?d.apply(r[a],w):void 0,a&&(h&&h.exports!==b&&h.exports!==r[a]?r[a]=h.exports:m===b&&v||(r[a]=m))}else a&&(r[a]=d)},a=c=o=function(a,c,d,e,f){if("string"==typeof a)return q[a]?q[a](c):j(p(a,l(c)).f);if(!a.splice){if(t=a,t.deps&&o(t.deps,t.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?n(b,a,c,d):setTimeout(function(){n(b,a,c,d)},4),o},o.config=function(a){return o(a)},a._defined=r,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(r,a)||e(s,a)||(s[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){"function"==typeof b[d]&&("constructor"!==d&&c.push(d))}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){return Array.prototype.unshift.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;c<d;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;c<a;c++){b+=Math.floor(36*Math.random()).toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return(e!==f||"hidden"!==f&&"visible"!==f)&&("scroll"===e||"scroll"===f||(d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth))},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){b.find(".select2-results").append(a)},c.prototype.sort=function(a){return this.options.get("sorter")(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()});b.$results.find(".select2-results__option[aria-selected]").each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):h-g<0&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");if("true"===c.attr("aria-selected"))return void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{}));d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id,a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2");a(".select2.select2-container--open").each(function(){var b=a(this);this!=d[0]&&b.data("element").select2("close")})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){b.find(".selection").append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},d.prototype.selectionContainer=function(){return a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>')},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id;if(b.length>1||c)return a.call(this,b);this.clear();var d=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(d)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||c.which!=b.DELETE&&c.which!=b.BACKSPACE||this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===e.$search.val()){var b=e.$searchContainer.prev(".select2-selection__choice");if(b.length>0){var d=b.data("data");e.searchRemoveChoice(d),a.preventDefault()}}});var f=document.documentMode,g=f&&f<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(g)return void e.$selection.off("input.search input.searchcheck");e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple")){if(a.selected=!1,c(a.element).is("option"))return a.element.selected=!1,void this.$element.trigger("change");this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})}},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this;this.$element.children().each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),void 0!==a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(null!=(b=c.data(a[0],"data")))return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){return this.options.get("matcher")(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0);if((i.text||"").toUpperCase()===(b.term||"").toUpperCase()||j)return!f&&(a.data=g,void c(a))}if(f)return!0;var k=e.createTag(b);if(null!=k){var l=e.option(k);l.attr("data-select2-tag",!0),e.addOptions([l]),e.insertTag(g,k)}a.results=g,c(a)}var e=this;if(this._removeOldTags(),null==b.term||null!=b.page)return void a.call(this,b,c);a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){this._lastTag;this.$element.find("option[data-select2-tag]").each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b);if(!g.$element.find("option").filter(function(){return a(this).val()===c.id}).length){var d=g.option(c);d.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([d])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",b.term.length<this.minimumInputLength)return void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()||e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return!(a(c.data.results)<this.minimumResultsForSearch)&&b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){return"Please enter "+(a.minimum-a.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}return D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(a){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(a){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var O=k.loadPath(this.defaults.amdLanguageBase+"en"),P=new k(l.language);P.extend(O),l.translations=P}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h<i;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(f=d(this))&&g.push(f)})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;if(this._isInitialized)return void b.call(this,c);this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."),a.call(this,b,c)}return b.prototype.current=function(b,c){function d(b,c){var e=[];return b.selected||-1!==a.inArray(b.id,c)?(b.selected=!0,e.push(b)):b.selected=!1,b.children&&e.push.apply(e,d(b.children,c)),e}for(var e=[],f=0;f<this._currentData.length;f++){var g=this._currentData[f];e.push.apply(e,d(g,this.$element.val().split(this._valueSeparator)))}c(e)},b.prototype.select=function(b,c){if(this.options.get("multiple")){var d=this.$element.val();d+=this._valueSeparator+c.id,this.$element.val(d),this.$element.trigger("change")}else this.current(function(b){a.map(b,function(a){a.selected=!1})}),this.$element.val(c.id),this.$element.trigger("change")},b.prototype.unselect=function(a,b){var c=this;b.selected=!1,this.current(function(a){for(var d=[],e=0;e<a.length;e++){var f=a[e];b.id!=f.id&&d.push(f.id)}c.$element.val(d.join(c._valueSeparator)),c.$element.trigger("change")})},b.prototype.query=function(a,b,c){for(var d=[],e=0;e<this._currentData.length;e++){var f=this._currentData[e],g=this.matches(b,f);null!==g&&d.push(g)}c({results:d})},b.prototype.addOptions=function(b,c){var d=a.map(c,function(b){return a.data(b[0],"data")});this._currentData.push.apply(this._currentData,d)},b}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f];b(c.term,g.text,g)||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/query",[],function(){function a(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."),a.call(this,b,c)}return a.prototype.query=function(a,b,c){b.callback=c,this.options.get("query").call(null,b)},a}),b.define("select2/dropdown/attachContainer",[],function(){function a(a,b,c){a.call(this,b,c)}return a.prototype.position=function(a,b,c){c.find(".dropdown-wrapper").append(b),b.addClass("select2-dropdown--below"),c.addClass("select2-container--below")},a}),b.define("select2/dropdown/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(d.join(" "),function(a){a.stopPropagation()})},a}),b.define("select2/selection/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(d.join(" "),function(a){a.stopPropagation()})},a}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery-mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||n<f)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120==0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if("object"==typeof(b=b||{}))return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
1
+ /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k<a.length;k++)if("."===(m=a[k]))a.splice(k,1),k-=1;else if(".."===m){if(0===k||1===k&&".."===a[2]||".."===a[k-1])continue;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[a]=!0,n.apply(b,c)}if(!e(r,a)&&!e(u,a))throw new Error("No "+a);return r[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return a?k(a):[]}function m(a){return function(){return t&&t.config&&t.config[a]||{}}}var n,o,p,q,r={},s={},t={},u={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;p=function(a,b){var c,d=k(a),e=d[0],g=b[1];return a=d[1],e&&(e=f(e,g),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(g)):f(a,g):(a=f(a,g),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},q={require:function(a){return g(a)},exports:function(a){var b=r[a];return void 0!==b?b:r[a]={}},module:function(a){return{id:a,uri:"",exports:r[a],config:m(a)}}},n=function(a,c,d,f){var h,k,m,n,o,t,v,w=[],x=typeof d;if(f=f||a,t=l(f),"undefined"===x||"function"===x){for(c=!c.length&&d.length?["require","exports","module"]:c,o=0;o<c.length;o+=1)if(n=p(c[o],t),"require"===(k=n.f))w[o]=q.require(a);else if("exports"===k)w[o]=q.exports(a),v=!0;else if("module"===k)h=w[o]=q.module(a);else if(e(r,k)||e(s,k)||e(u,k))w[o]=j(k);else{if(!n.p)throw new Error(a+" missing "+k);n.p.load(n.n,g(f,!0),i(k),{}),w[o]=r[k]}m=d?d.apply(r[a],w):void 0,a&&(h&&h.exports!==b&&h.exports!==r[a]?r[a]=h.exports:m===b&&v||(r[a]=m))}else a&&(r[a]=d)},a=c=o=function(a,c,d,e,f){if("string"==typeof a)return q[a]?q[a](c):j(p(a,l(c)).f);if(!a.splice){if(t=a,t.deps&&o(t.deps,t.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?n(b,a,c,d):setTimeout(function(){n(b,a,c,d)},4),o},o.config=function(a){return o(a)},a._defined=r,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(r,a)||e(s,a)||(s[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){"function"==typeof b[d]&&("constructor"!==d&&c.push(d))}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){return Array.prototype.unshift.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;c<d;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;c<a;c++){b+=Math.floor(36*Math.random()).toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return(e!==f||"hidden"!==f&&"visible"!==f)&&("scroll"===e||"scroll"===f||(d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth))},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c.__cache={};var e=0;return c.GetUniqueElementId=function(a){var b=a.getAttribute("data-select2-id");return null==b&&(a.id?(b=a.id,a.setAttribute("data-select2-id",b)):(a.setAttribute("data-select2-id",++e),b=e.toString())),b},c.StoreData=function(a,b,d){var e=c.GetUniqueElementId(a);c.__cache[e]||(c.__cache[e]={}),c.__cache[e][b]=d},c.GetData=function(b,d){var e=c.GetUniqueElementId(b);return d?c.__cache[e]&&null!=c.__cache[e][d]?c.__cache[e][d]:a(b).data(d):c.__cache[e]},c.RemoveData=function(a){var b=c.GetUniqueElementId(a);null!=c.__cache[b]&&delete c.__cache[b]},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){b.find(".select2-results").append(a)},c.prototype.sort=function(a){return this.options.get("sorter")(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var c=this;this.data.current(function(d){var e=a.map(d,function(a){return a.id.toString()});c.$results.find(".select2-results__option[aria-selected]").each(function(){var c=a(this),d=b.GetData(this,"data"),f=""+d.id;null!=d.element&&d.element.selected||null==d.element&&a.inArray(f,e)>-1?c.attr("aria-selected","true"):c.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(c){var d=document.createElement("li");d.className="select2-results__option";var e={role:"treeitem","aria-selected":"false"};c.disabled&&(delete e["aria-selected"],e["aria-disabled"]="true"),null==c.id&&delete e["aria-selected"],null!=c._resultId&&(d.id=c._resultId),c.title&&(d.title=c.title),c.children&&(e.role="group",e["aria-label"]=c.text,delete e["aria-selected"]);for(var f in e){var g=e[f];d.setAttribute(f,g)}if(c.children){var h=a(d),i=document.createElement("strong");i.className="select2-results__group";a(i);this.template(c,i);for(var j=[],k=0;k<c.children.length;k++){var l=c.children[k],m=this.option(l);j.push(m)}var n=a("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});n.append(j),h.append(i),h.append(n)}else this.template(c,d);return b.StoreData(d,"data",c),d},c.prototype.bind=function(c,d){var e=this,f=c.id+"-results";this.$results.attr("id",f),c.on("results:all",function(a){e.clear(),e.append(a.data),c.isOpen()&&(e.setClasses(),e.highlightFirstItem())}),c.on("results:append",function(a){e.append(a.data),c.isOpen()&&e.setClasses()}),c.on("query",function(a){e.hideMessages(),e.showLoading(a)}),c.on("select",function(){c.isOpen()&&(e.setClasses(),e.options.get("scrollAfterSelect")&&e.highlightFirstItem())}),c.on("unselect",function(){c.isOpen()&&(e.setClasses(),e.options.get("scrollAfterSelect")&&e.highlightFirstItem())}),c.on("open",function(){e.$results.attr("aria-expanded","true"),e.$results.attr("aria-hidden","false"),e.setClasses(),e.ensureHighlightVisible()}),c.on("close",function(){e.$results.attr("aria-expanded","false"),e.$results.attr("aria-hidden","true"),e.$results.removeAttr("aria-activedescendant")}),c.on("results:toggle",function(){var a=e.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),c.on("results:select",function(){var a=e.getHighlightedResults();if(0!==a.length){var c=b.GetData(a[0],"data");"true"==a.attr("aria-selected")?e.trigger("close",{}):e.trigger("select",{data:c})}}),c.on("results:previous",function(){var a=e.getHighlightedResults(),b=e.$results.find("[aria-selected]"),c=b.index(a);if(!(c<=0)){var d=c-1;0===a.length&&(d=0);var f=b.eq(d);f.trigger("mouseenter");var g=e.$results.offset().top,h=f.offset().top,i=e.$results.scrollTop()+(h-g);0===d?e.$results.scrollTop(0):h-g<0&&e.$results.scrollTop(i)}}),c.on("results:next",function(){var a=e.getHighlightedResults(),b=e.$results.find("[aria-selected]"),c=b.index(a),d=c+1;if(!(d>=b.length)){var f=b.eq(d);f.trigger("mouseenter");var g=e.$results.offset().top+e.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=e.$results.scrollTop()+h-g;0===d?e.$results.scrollTop(0):h>g&&e.$results.scrollTop(i)}}),c.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),c.on("results:message",function(a){e.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=e.$results.scrollTop(),c=e.$results.get(0).scrollHeight-b+a.deltaY,d=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=e.$results.height();d?(e.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(e.$results.scrollTop(e.$results.get(0).scrollHeight-e.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(c){var d=a(this),f=b.GetData(this,"data");if("true"===d.attr("aria-selected"))return void(e.options.get("multiple")?e.trigger("unselect",{originalEvent:c,data:f}):e.trigger("close",{}));e.trigger("select",{originalEvent:c,data:f})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(c){var d=b.GetData(this,"data");e.getHighlightedResults().removeClass("select2-results__option--highlighted"),e.trigger("results:focus",{data:d,element:a(this)})})},c.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var c=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=b.GetData(this.$element[0],"old-tabindex")?this._tabindex=b.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),c.attr("title",this.$element.attr("title")),c.attr("tabindex",this._tabindex),this.$selection=c,c},d.prototype.bind=function(a,b){var d=this,e=(a.id,a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),window.setTimeout(function(){d.$selection.focus()},0),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(c){a(document.body).on("mousedown.select2."+c.id,function(c){var d=a(c.target),e=d.closest(".select2");a(".select2.select2-container--open").each(function(){a(this),this!=e[0]&&b.GetData(this,"element").select2("close")})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){b.find(".selection").append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()})},e.prototype.clear=function(){var a=this.$selection.find(".select2-selection__rendered");a.empty(),a.removeAttr("title")},e.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.attr("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,e){var f=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){f.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!f.options.get("disabled")){var d=a(this),e=d.parent(),g=c.GetData(e[0],"data");f.trigger("unselect",{originalEvent:b,data:g})}})},d.prototype.clear=function(){var a=this.$selection.find(".select2-selection__rendered");a.empty(),a.removeAttr("title")},d.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},d.prototype.selectionContainer=function(){return a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>')},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.attr("title",e.title||e.text),c.StoreData(f[0],"data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id;if(b.length>1||c)return a.call(this,b);this.clear();var d=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(d)},b}),b.define("select2/selection/allowClear",["jquery","../keys","../utils"],function(a,b,c){function d(){}return d.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},d.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var d=this.$selection.find(".select2-selection__clear");if(0!==d.length){b.stopPropagation();var e=c.GetData(d[0],"data"),f=this.$element.val();this.$element.val(this.placeholder.id);var g={data:e};if(this.trigger("clear",g),g.prevented)return void this.$element.val(f);for(var h=0;h<e.length;h++)if(g={data:e[h]},this.trigger("unselect",g),g.prevented)return void this.$element.val(f);this.$element.trigger("change"),this.trigger("toggle",{})}}},d.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||c.which!=b.DELETE&&c.which!=b.BACKSPACE||this._handleClear(c)},d.prototype.update=function(b,d){if(b.call(this,d),!(this.$selection.find(".select2-selection__placeholder").length>0||0===d.length)){var e=this.options.get("translations").get("removeAllItems"),f=a('<span class="select2-selection__clear" title="'+e()+'">&times;</span>');c.StoreData(f[0],"data",d),this.$selection.find(".select2-selection__rendered").prepend(f)}},d}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,d,e){var f=this;a.call(this,d,e),d.on("open",function(){f.$search.trigger("focus")}),d.on("close",function(){f.$search.val(""),f.$search.removeAttr("aria-activedescendant"),f.$search.trigger("focus")}),d.on("enable",function(){f.$search.prop("disabled",!1),f._transferTabIndex()}),d.on("disable",function(){f.$search.prop("disabled",!0)}),d.on("focus",function(a){f.$search.trigger("focus")}),d.on("results:focus",function(a){f.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){f.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){f._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),f.trigger("keypress",a),f._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===f.$search.val()){var d=f.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var e=b.GetData(d[0],"data");f.searchRemoveChoice(e),a.preventDefault()}}});var g=document.documentMode,h=g&&g<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(h)return void f.$selection.off("input.search input.searchcheck");f.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(h&&"input"===a.type)return void f.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&f.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;if(this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c){this.$element.find("[data-select2-tag]").length?this.$element.focus():this.$search.focus()}},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],g=["opening","closing","selecting","unselecting","clearing"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Œ":"OE","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","œ":"oe","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ώ":"ω","ς":"σ","’":"'"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple")){if(a.selected=!1,c(a.element).is("option"))return a.element.selected=!1,void this.$element.trigger("change");this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})}},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){b.RemoveData(this)})},d.prototype.query=function(a,b){var d=[],e=this;this.$element.children().each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var d;a.children?(d=document.createElement("optgroup"),d.label=a.text):(d=document.createElement("option"),void 0!==d.textContent?d.textContent=a.text:d.innerText=a.text),void 0!==a.id&&(d.value=a.id),a.disabled&&(d.disabled=!0),a.selected&&(d.selected=!0),a.title&&(d.title=a.title);var e=c(d),f=this._normalizeItem(a);return f.element=d,b.StoreData(d,"data",f),e},d.prototype.item=function(a){var d={};if(null!=(d=b.GetData(a[0],"data")))return d;if(a.is("option"))d={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){d={text:a.prop("label"),children:[],title:a.prop("title")};for(var e=a.children("option"),f=[],g=0;g<e.length;g++){var h=c(e[g]),i=this.item(h);f.push(i)}d.children=f}return d=this._normalizeItem(d),d.element=a[0],b.StoreData(a[0],"data",d),d},d.prototype._normalizeItem=function(a){a!==Object(a)&&(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){return this.options.get("matcher")(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){"status"in d&&(0===d.status||"0"===d.status)||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0);if((i.text||"").toUpperCase()===(b.term||"").toUpperCase()||j)return!f&&(a.data=g,void c(a))}if(f)return!0;var k=e.createTag(b);if(null!=k){var l=e.option(k);l.attr("data-select2-tag",!0),e.addOptions([l]),e.insertTag(g,k)}a.results=g,c(a)}var e=this;if(this._removeOldTags(),null==b.term||null!=b.page)return void a.call(this,b,c);a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){this._lastTag;this.$element.find("option[data-select2-tag]").each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b);if(!g.$element.find("option").filter(function(){return a(this).val()===c.id}).length){var d=g.option(c);d.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([d])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",b.term.length<this.minimumInputLength)return void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val(""),e.$search.blur()}),c.on("focus",function(){c.isOpen()||e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){b.StoreData(this,"select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(c){var d=b.GetData(this,"select2-scroll-position");a(this).scrollTop(d.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return!(a(c.data.results)<this.minimumResultsForSearch)&&b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",["../utils"],function(a){function b(){}return b.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},b.prototype._handleSelectOnClose=function(b,c){if(c&&null!=c.originalSelect2Event){var d=c.originalSelect2Event;if("select"===d._type||"unselect"===d._type)return}var e=this.getHighlightedResults();if(!(e.length<1)){var f=a.GetData(e[0],"data");null!=f.element&&f.element.selected||null==f.element&&f.selected||this.trigger("select",{data:f})}},b}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&(c.ctrlKey||c.metaKey)||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){return"Please enter "+(a.minimum-a.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}return D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(a){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(a){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var O=k.loadPath(this.defaults.amdLanguageBase+"en"),P=new k(l.language);P.extend(O),l.translations=P}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,scrollAfterSelect:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(!0,this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){function c(a,b){return b.toUpperCase()}var e=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),d.GetData(a[0],"select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),d.StoreData(a[0],"data",d.GetData(a[0],"select2Tags")),d.StoreData(a[0],"tags",!0)),d.GetData(a[0],"ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",d.GetData(a[0],"ajaxUrl")),d.StoreData(a[0],"ajax-Url",d.GetData(a[0],"ajaxUrl")));for(var f={},g=0;g<a[0].attributes.length;g++){var h=a[0].attributes[g].name,i="data-";if(h.substr(0,i.length)==i){var j=h.substring(i.length),k=d.GetData(a[0],j);f[j.replace(/-([a-z])/g,c)]=k}}b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset&&(f=b.extend(!0,{},a[0].dataset,f));var l=b.extend(!0,{},d.GetData(a[0]),f);l=d._convertData(l);for(var m in l)b.inArray(m,e)>-1||(b.isPlainObject(this.options[m])?b.extend(this.options[m],l[m]):this.options[m]=l[m]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,d){null!=c.GetData(a[0],"select2")&&c.GetData(a[0],"select2").destroy(),this.$element=a,this.id=this._generateId(a),d=d||{},this.options=new b(d,a),e.__super__.constructor.call(this);var f=a.attr("tabindex")||0;c.StoreData(a[0],"old-tabindex",f),a.attr("tabindex","-1");var g=this.options.get("dataAdapter");this.dataAdapter=new g(a,this.options);var h=this.render();this._placeContainer(h);var i=this.options.get("selectionAdapter");this.selection=new i(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,h);var j=this.options.get("dropdownAdapter");this.dropdown=new j(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,h);var k=this.options.get("resultsAdapter");this.results=new k(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var l=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){l.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),c.StoreData(a[0],"select2",this),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h<i;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting",clear:"clearing"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",c.GetData(this.$element[0],"old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),c.RemoveData(this.$element[0]),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),c.StoreData(b[0],"element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(f=d(this))&&g.push(f)})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;if(this._isInitialized)return void b.call(this,c);this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery","../utils"],function(a,b){function c(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."),a.call(this,b,c)}return c.prototype.current=function(b,c){function d(b,c){var e=[];return b.selected||-1!==a.inArray(b.id,c)?(b.selected=!0,e.push(b)):b.selected=!1,b.children&&e.push.apply(e,d(b.children,c)),e}for(var e=[],f=0;f<this._currentData.length;f++){var g=this._currentData[f];e.push.apply(e,d(g,this.$element.val().split(this._valueSeparator)))}c(e)},c.prototype.select=function(b,c){if(this.options.get("multiple")){var d=this.$element.val();d+=this._valueSeparator+c.id,this.$element.val(d),this.$element.trigger("change")}else this.current(function(b){a.map(b,function(a){a.selected=!1})}),this.$element.val(c.id),this.$element.trigger("change")},c.prototype.unselect=function(a,b){var c=this;b.selected=!1,this.current(function(a){for(var d=[],e=0;e<a.length;e++){var f=a[e];b.id!=f.id&&d.push(f.id)}c.$element.val(d.join(c._valueSeparator)),c.$element.trigger("change")})},c.prototype.query=function(a,b,c){for(var d=[],e=0;e<this._currentData.length;e++){var f=this._currentData[e],g=this.matches(b,f);null!==g&&d.push(g)}c({results:d})},c.prototype.addOptions=function(c,d){var e=a.map(d,function(a){return b.GetData(a[0],"data")});this._currentData.push.apply(this._currentData,e)},c}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f];b(c.term,g.text,g)||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/query",[],function(){function a(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."),a.call(this,b,c)}return a.prototype.query=function(a,b,c){b.callback=c,this.options.get("query").call(null,b)},a}),b.define("select2/dropdown/attachContainer",[],function(){function a(a,b,c){a.call(this,b,c)}return a.prototype.position=function(a,b,c){c.find(".dropdown-wrapper").append(b),b.addClass("select2-dropdown--below"),c.addClass("select2-container--below")},a}),b.define("select2/dropdown/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(d.join(" "),function(a){a.stopPropagation()})},a}),b.define("select2/selection/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(d.join(" "),function(a){a.stopPropagation()})},a}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery-mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||n<f)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120==0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(a,b,c,d,e){if(null==a.fn.select2){var f=["open","close","destroy"];a.fn.select2=function(b){if("object"==typeof(b=b||{}))return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,g=Array.prototype.slice.call(arguments,1);return this.each(function(){var a=e.GetData(this,"select2");null==a&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=a[b].apply(a,g)}),a.inArray(b,f)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
frontend/modules/booking/Ajax.php CHANGED
@@ -498,8 +498,9 @@ class Ajax extends Lib\Base\Ajax
498
  $userData = new Lib\UserBookingData( self::parameter( 'form_id' ) );
499
 
500
  if ( $userData->load() ) {
501
- $payment_disabled = Lib\Config::paymentStepDisabled();
502
- $show_cart = Lib\Config::showStepCart();
 
503
  if ( ! $show_cart ) {
504
  $userData->addChainToCart();
505
  }
@@ -513,52 +514,72 @@ class Ajax extends Lib\Base\Ajax
513
  $cart_info = $userData->cart->getInfo();
514
 
515
  if ( $cart_info->getTotal() <= 0 || $cart_info->getDeposit() <= 0 ) {
516
- $payment_disabled = true;
 
 
 
 
517
  }
518
 
519
- if ( $payment_disabled == false ) {
520
  $progress_tracker = self::_prepareProgressTracker( Steps::PAYMENT, $userData );
 
521
 
522
  // Prepare info texts.
523
  $cart_items_count = count( $userData->cart->getItems() );
524
- $info_text_tpl = Lib\Utils\Common::getTranslatedOption(
525
- $cart_items_count > 1
526
- ? 'bookly_l10n_info_payment_step_several_apps'
527
- : 'bookly_l10n_info_payment_step_single_app'
528
- );
529
- $info_text = InfoText::prepare( Steps::PAYMENT, $info_text_tpl, $userData );
 
 
 
 
 
 
 
 
 
 
530
 
531
- $options = array();
532
- if ( Lib\Config::payLocallyEnabled() ) {
533
- $options['local'] = self::renderTemplate( '_payment_local', array( 'form_id' => self::parameter( 'form_id' ) ), false );
534
- }
535
- $options = Proxy\Shared::preparePaymentOptions(
536
- $options,
537
- self::parameter( 'form_id' ),
538
- Lib\Proxy\Shared::showPaymentSpecificPrices( false ),
539
- $cart_info,
540
- $userData->extractPaymentStatus()
541
- );
542
- $order = explode( ',', get_option( 'bookly_pmt_order' ) );
543
- $payment_options = array();
544
- if ( $order ) {
545
- foreach ( $order as $payment_system ) {
546
- if ( array_key_exists( $payment_system, $options ) ) {
547
- $payment_options[] = $options[ $payment_system ];
548
  }
549
  }
550
- }
551
- foreach ( $options as $slug => $data ) {
552
- if ( ! $order || ! in_array( $slug, $order ) ) {
553
- $payment_options[] = $data;
 
 
 
 
 
554
  }
555
  }
556
 
 
 
 
 
 
 
 
 
 
 
 
 
557
  // Set response.
558
  $response = array(
559
- 'success' => true,
560
- 'disabled' => false,
561
- 'html' => self::renderTemplate( '7_payment', array(
562
  'form_id' => self::parameter( 'form_id' ),
563
  'progress_tracker' => $progress_tracker,
564
  'info_text' => $info_text,
@@ -702,7 +723,7 @@ class Ajax extends Lib\Base\Ajax
702
  $failed_cart_key = $userData->cart->getFailedKey();
703
  if ( $failed_cart_key === null ) {
704
  $cart_info = $userData->cart->getInfo();
705
- $is_payment_disabled = Lib\Config::paymentStepDisabled();
706
  $is_pay_locally_enabled = Lib\Config::payLocallyEnabled();
707
  if ( $is_payment_disabled || $is_pay_locally_enabled || $cart_info->getPayNow() <= 0 ) {
708
  // Handle coupon.
@@ -713,23 +734,42 @@ class Ajax extends Lib\Base\Ajax
713
  // Handle payment.
714
  $payment = null;
715
  if ( ! $is_payment_disabled ) {
716
- if ( $coupon && $cart_info->getTotal() <= 0 ) {
717
- // Create fake payment record for 100% discount coupons.
718
- $payment = new Lib\Entities\Payment();
719
- $payment
720
- ->setStatus( Lib\Entities\Payment::STATUS_COMPLETED )
721
- ->setPaidType( Lib\Entities\Payment::PAY_IN_FULL )
722
- ->setType( Lib\Entities\Payment::TYPE_COUPON )
723
- ->setTotal( 0 )
724
- ->setPaid( 0 )
725
- ->save();
726
- } elseif ( $cart_info->getTotal() > 0 ) {
727
- // Create record for local payment.
728
  $payment = new Lib\Entities\Payment();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
729
  $payment
730
- ->setStatus( Lib\Entities\Payment::STATUS_PENDING )
 
731
  ->setPaidType( Lib\Entities\Payment::PAY_IN_FULL )
732
- ->setType( Lib\Entities\Payment::TYPE_LOCAL )
733
  ->setTotal( $cart_info->getTotal() )
734
  ->setTax( $cart_info->getTotalTax() )
735
  ->setPaid( 0 )
@@ -878,7 +918,7 @@ class Ajax extends Lib\Base\Ajax
878
  // Outlook Calendar.
879
  Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
880
  // Waiting list.
881
- Lib\Proxy\WaitingList::handleParticipantsChange( $appointment );
882
  }
883
  }
884
  Lib\Notifications\Booking\Sender::send( $item );
@@ -928,7 +968,7 @@ class Ajax extends Lib\Base\Ajax
928
  // Outlook Calendar.
929
  Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
930
  // Waiting list.
931
- Lib\Proxy\WaitingList::handleParticipantsChange( $appointment );
932
  }
933
  }
934
  $url = get_option( 'bookly_url_reject_page_url' );
@@ -1011,22 +1051,22 @@ class Ajax extends Lib\Base\Ajax
1011
  $result = '';
1012
 
1013
  if ( get_option( 'bookly_app_show_progress_tracker' ) ) {
1014
- $payment_disabled = Lib\Config::paymentStepDisabled();
1015
- if ( ! $payment_disabled && $step > Steps::SERVICE ) {
1016
  if ( $step < Steps::CART ) {
1017
  // step Cart.
1018
  // Assume that payment is disabled and check chain items.
1019
  // If one is incomplete or its price is more than zero then the payment step should be displayed.
1020
- $payment_disabled = true;
1021
  foreach ( $userData->chain->getItems() as $item ) {
1022
  if ( $item->hasPayableExtras() ) {
1023
- $payment_disabled = false;
1024
  break;
1025
  } else {
1026
  if ( $item->getService()->getType() == Lib\Entities\Service::TYPE_SIMPLE ) {
1027
  $staff_ids = $item->getStaffIds();
1028
  $staff = null;
1029
- if ( count( $staff_ids ) == 1 ) {
1030
  $staff = Lib\Entities\Staff::find( $staff_ids[0] );
1031
  }
1032
  if ( $staff ) {
@@ -1037,17 +1077,17 @@ class Ajax extends Lib\Base\Ajax
1037
  'location_id' => Lib\Proxy\Locations::prepareStaffLocationId( $item->getLocationId(), $staff->getId() ) ?: null,
1038
  ) );
1039
  if ( $staff_service->getPrice() > 0 ) {
1040
- $payment_disabled = false;
1041
  break;
1042
  }
1043
  } else {
1044
- $payment_disabled = false;
1045
  break;
1046
  }
1047
  } else {
1048
  // Service::TYPE_COMPOUND
1049
  if ( $item->getService()->getPrice() > 0 ) {
1050
- $payment_disabled = false;
1051
  break;
1052
  }
1053
  }
@@ -1056,18 +1096,21 @@ class Ajax extends Lib\Base\Ajax
1056
  } else {
1057
  $cart_info = $userData->cart->getInfo();
1058
  if ( $cart_info->getTotal() == 0 || $cart_info->getDeposit() == 0 ) {
1059
- $payment_disabled = true;
1060
  }
1061
  }
1062
  }
1063
 
1064
  $result = self::renderTemplate( '_progress_tracker', array(
1065
- 'step' => $step,
1066
- 'show_cart' => Lib\Config::showStepCart(),
1067
- 'payment_disabled' => $payment_disabled,
1068
- 'skip_service_step' => Lib\Session::hasFormVar( self::parameter( 'form_id' ), 'skip_service_step' ),
 
 
 
1069
  // step extras before step time
1070
- 'step_extras_active' => $step > 3 || ( $step >= 2 && self::parameter( 'action' ) == 'bookly_render_extras' )
1071
  ), false );
1072
  }
1073
 
498
  $userData = new Lib\UserBookingData( self::parameter( 'form_id' ) );
499
 
500
  if ( $userData->load() ) {
501
+ /** @var string $payment_step 'skip' | 'show' | 'show-100%-discount' */
502
+ $payment_step = Lib\Config::paymentStepDisabled() ? 'skip' : 'show';
503
+ $show_cart = Lib\Config::showStepCart();
504
  if ( ! $show_cart ) {
505
  $userData->addChainToCart();
506
  }
514
  $cart_info = $userData->cart->getInfo();
515
 
516
  if ( $cart_info->getTotal() <= 0 || $cart_info->getDeposit() <= 0 ) {
517
+ if ( $cart_info->withDiscount() ) {
518
+ $payment_step = 'show-100%-discount';
519
+ } else {
520
+ $payment_step = 'skip';
521
+ }
522
  }
523
 
524
+ if ( $payment_step !== 'skip' ) {
525
  $progress_tracker = self::_prepareProgressTracker( Steps::PAYMENT, $userData );
526
+ $payment_options = array();
527
 
528
  // Prepare info texts.
529
  $cart_items_count = count( $userData->cart->getItems() );
530
+ if ( $payment_step === 'show' ) {
531
+ $options = array();
532
+ if ( Lib\Config::payLocallyEnabled() ) {
533
+ $options['local'] = array(
534
+ 'html' => self::renderTemplate( '_payment_local', array( 'form_id' => self::parameter( 'form_id' ) ), false ),
535
+ 'pay' => $cart_info->getPayNow(),
536
+ );
537
+ }
538
+ $options = Proxy\Shared::preparePaymentOptions(
539
+ $options,
540
+ self::parameter( 'form_id' ),
541
+ Lib\Proxy\Shared::showPaymentSpecificPrices( false ),
542
+ $cart_info,
543
+ $userData->extractPaymentStatus()
544
+ );
545
+ $order = explode( ',', get_option( 'bookly_pmt_order' ) );
546
 
547
+ if ( $order ) {
548
+ foreach ( $order as $payment_system ) {
549
+ if ( array_key_exists( $payment_system, $options ) ) {
550
+ $payment_options[] = $options[ $payment_system ]['html'];
551
+ }
 
 
 
 
 
 
 
 
 
 
 
 
552
  }
553
  }
554
+ foreach ( $options as $slug => $data ) {
555
+ if ( ! $order || ! in_array( $slug, $order ) ) {
556
+ if ( $data['pay'] == 0 ) {
557
+ $payment_step = 'show-100%-discount';
558
+ $payment_options = array();
559
+ break;
560
+ }
561
+ $payment_options[] = $data['html'];
562
+ }
563
  }
564
  }
565
 
566
+ if ( $payment_step === 'show-100%-discount' ) {
567
+ $info_text_tpl = Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_info_payment_step_with_100percents_off_price' );
568
+ } else {
569
+ $info_text_tpl = Lib\Utils\Common::getTranslatedOption(
570
+ $cart_items_count > 1
571
+ ? 'bookly_l10n_info_payment_step_several_apps'
572
+ : 'bookly_l10n_info_payment_step_single_app'
573
+ );
574
+ }
575
+
576
+ $info_text = InfoText::prepare( Steps::PAYMENT, $info_text_tpl, $userData );
577
+
578
  // Set response.
579
  $response = array(
580
+ 'success' => true,
581
+ 'disabled' => false,
582
+ 'html' => self::renderTemplate( '7_payment', array(
583
  'form_id' => self::parameter( 'form_id' ),
584
  'progress_tracker' => $progress_tracker,
585
  'info_text' => $info_text,
723
  $failed_cart_key = $userData->cart->getFailedKey();
724
  if ( $failed_cart_key === null ) {
725
  $cart_info = $userData->cart->getInfo();
726
+ $is_payment_disabled = Lib\Config::paymentStepDisabled();
727
  $is_pay_locally_enabled = Lib\Config::payLocallyEnabled();
728
  if ( $is_payment_disabled || $is_pay_locally_enabled || $cart_info->getPayNow() <= 0 ) {
729
  // Handle coupon.
734
  // Handle payment.
735
  $payment = null;
736
  if ( ! $is_payment_disabled ) {
737
+ if ( $cart_info->getTotal() <= 0 ) {
738
+ if ( $cart_info->withDiscount() ) {
739
+ $payment = new Lib\Entities\Payment();
740
+ $payment
741
+ ->setType( Lib\Entities\Payment::TYPE_FREE )
742
+ ->setStatus( Lib\Entities\Payment::STATUS_COMPLETED )
743
+ ->setPaidType( Lib\Entities\Payment::PAY_IN_FULL )
744
+ ->setTotal( 0 )
745
+ ->setPaid( 0 )
746
+ ->save();
747
+ }
748
+ } else {
749
  $payment = new Lib\Entities\Payment();
750
+ $options = Proxy\Shared::preparePaymentOptions(
751
+ array(),
752
+ self::parameter( 'form_id' ),
753
+ Lib\Proxy\Shared::showPaymentSpecificPrices( false ),
754
+ $cart_info,
755
+ $userData->extractPaymentStatus()
756
+ );
757
+ $status = Lib\Entities\Payment::STATUS_PENDING;
758
+ $type = Lib\Entities\Payment::TYPE_LOCAL;
759
+ foreach ( $options as $gateway => $data ) {
760
+ if ( $data['pay'] == 0 ) {
761
+ $status = Lib\Entities\Payment::STATUS_COMPLETED;
762
+ $type = Lib\Entities\Payment::TYPE_FREE;
763
+ $cart_info->setGateway( $gateway );
764
+ $payment->setGatewayPriceCorrection( $cart_info->getPriceCorrection() );
765
+ break;
766
+ }
767
+ }
768
+
769
  $payment
770
+ ->setType( $type )
771
+ ->setStatus( $status )
772
  ->setPaidType( Lib\Entities\Payment::PAY_IN_FULL )
 
773
  ->setTotal( $cart_info->getTotal() )
774
  ->setTax( $cart_info->getTotalTax() )
775
  ->setPaid( 0 )
918
  // Outlook Calendar.
919
  Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
920
  // Waiting list.
921
+ Lib\Proxy\WaitingList::handleParticipantsChange( false, $appointment );
922
  }
923
  }
924
  Lib\Notifications\Booking\Sender::send( $item );
968
  // Outlook Calendar.
969
  Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
970
  // Waiting list.
971
+ Lib\Proxy\WaitingList::handleParticipantsChange( false, $appointment );
972
  }
973
  }
974
  $url = get_option( 'bookly_url_reject_page_url' );
1051
  $result = '';
1052
 
1053
  if ( get_option( 'bookly_app_show_progress_tracker' ) ) {
1054
+ $skip_payment_step = Lib\Config::paymentStepDisabled();
1055
+ if ( ! $skip_payment_step && $step > Steps::SERVICE ) {
1056
  if ( $step < Steps::CART ) {
1057
  // step Cart.
1058
  // Assume that payment is disabled and check chain items.
1059
  // If one is incomplete or its price is more than zero then the payment step should be displayed.
1060
+ $skip_payment_step = true;
1061
  foreach ( $userData->chain->getItems() as $item ) {
1062
  if ( $item->hasPayableExtras() ) {
1063
+ $skip_payment_step = false;
1064
  break;
1065
  } else {
1066
  if ( $item->getService()->getType() == Lib\Entities\Service::TYPE_SIMPLE ) {
1067
  $staff_ids = $item->getStaffIds();
1068
  $staff = null;
1069
+ if ( count( $staff_ids ) === 1 ) {
1070
  $staff = Lib\Entities\Staff::find( $staff_ids[0] );
1071
  }
1072
  if ( $staff ) {
1077
  'location_id' => Lib\Proxy\Locations::prepareStaffLocationId( $item->getLocationId(), $staff->getId() ) ?: null,
1078
  ) );
1079
  if ( $staff_service->getPrice() > 0 ) {
1080
+ $skip_payment_step = false;
1081
  break;
1082
  }
1083
  } else {
1084
+ $skip_payment_step = false;
1085
  break;
1086
  }
1087
  } else {
1088
  // Service::TYPE_COMPOUND
1089
  if ( $item->getService()->getPrice() > 0 ) {
1090
+ $skip_payment_step = false;
1091
  break;
1092
  }
1093
  }
1096
  } else {
1097
  $cart_info = $userData->cart->getInfo();
1098
  if ( $cart_info->getTotal() == 0 || $cart_info->getDeposit() == 0 ) {
1099
+ $skip_payment_step = !$cart_info->withDiscount();
1100
  }
1101
  }
1102
  }
1103
 
1104
  $result = self::renderTemplate( '_progress_tracker', array(
1105
+ 'step' => $step,
1106
+ 'skip_steps' => array(
1107
+ 'service' => Lib\Session::hasFormVar( self::parameter( 'form_id' ), 'skip_service_step' ),
1108
+ 'extras' => ! ( Lib\Config::serviceExtrasActive() && get_option( 'bookly_service_extras_enabled' ) ),
1109
+ 'cart' => ! Lib\Config::showStepCart(),
1110
+ 'payment' => $skip_payment_step,
1111
+ ),
1112
  // step extras before step time
1113
+ 'step_extras_active' => $step > 3 || ( $step >= 2 && self::parameter( 'action' ) == 'bookly_render_extras' ),
1114
  ), false );
1115
  }
1116
 
frontend/modules/booking/templates/7_payment.php CHANGED
@@ -16,12 +16,24 @@ Proxy\DepositPayments::renderPaymentStep( $userData );
16
  <?php echo $payment_option ?>
17
  <?php endforeach ?>
18
  </div>
 
 
19
 
20
- <?php Proxy\RecurringAppointments::renderInfoMessage( $userData ) ?>
 
 
 
 
 
 
 
 
 
 
 
21
 
22
- <?php if ( $pay_local ) : ?>
23
- <div class="bookly-gateway-buttons pay-local bookly-box bookly-nav-steps">
24
- <button class="bookly-back-step bookly-js-back-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
25
  <span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_button_back' ) ?></span>
26
  </button>
27
  <div class="<?php echo get_option( 'bookly_app_align_buttons_left' ) ? 'bookly-left' : 'bookly-right' ?>">
@@ -30,22 +42,11 @@ Proxy\DepositPayments::renderPaymentStep( $userData );
30
  </button>
31
  </div>
32
  </div>
33
- <?php endif ?>
34
 
35
- <div class="bookly-gateway-buttons pay-card bookly-box bookly-nav-steps" style="display:none">
36
- <button class="bookly-back-step bookly-js-back-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
37
- <span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_button_back' ) ?></span>
38
- </button>
39
- <div class="<?php echo get_option( 'bookly_app_align_buttons_left' ) ? 'bookly-left' : 'bookly-right' ?>">
40
- <button class="bookly-next-step bookly-js-next-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
41
- <span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_step_payment_button_next' ) ?></span>
42
- </button>
43
- </div>
44
- </div>
45
-
46
- <?php Proxy\Shared::renderPaymentForms( $form_id, $page_url ) ?>
47
 
48
- <div class="bookly-gateway-buttons pay-coupon bookly-box bookly-nav-steps" style="display: none">
49
  <button class="bookly-back-step bookly-js-back-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
50
  <span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_button_back' ) ?></span>
51
  </button>
16
  <?php echo $payment_option ?>
17
  <?php endforeach ?>
18
  </div>
19
+ <?php if ( $payment_options ) : ?>
20
+ <?php Proxy\RecurringAppointments::renderInfoMessage( $userData ) ?>
21
 
22
+ <?php if ( $pay_local ) : ?>
23
+ <div class="bookly-gateway-buttons pay-local bookly-box bookly-nav-steps">
24
+ <button class="bookly-back-step bookly-js-back-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
25
+ <span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_button_back' ) ?></span>
26
+ </button>
27
+ <div class="<?php echo get_option( 'bookly_app_align_buttons_left' ) ? 'bookly-left' : 'bookly-right' ?>">
28
+ <button class="bookly-next-step bookly-js-next-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
29
+ <span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_step_payment_button_next' ) ?></span>
30
+ </button>
31
+ </div>
32
+ </div>
33
+ <?php endif ?>
34
 
35
+ <div class="bookly-gateway-buttons pay-card bookly-box bookly-nav-steps" style="display:none">
36
+ <button class="bookly-back-step bookly-js-back-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
 
37
  <span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_button_back' ) ?></span>
38
  </button>
39
  <div class="<?php echo get_option( 'bookly_app_align_buttons_left' ) ? 'bookly-left' : 'bookly-right' ?>">
42
  </button>
43
  </div>
44
  </div>
 
45
 
46
+ <?php Proxy\Shared::renderPaymentForms( $form_id, $page_url ) ?>
47
+ <?php endif ?>
 
 
 
 
 
 
 
 
 
 
48
 
49
+ <div class="bookly-gateway-buttons pay-coupon bookly-box bookly-nav-steps" <?php if ( $payment_options ) : ?>style="display: none"<?php endif ?>>
50
  <button class="bookly-back-step bookly-js-back-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
51
  <span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_button_back' ) ?></span>
52
  </button>
frontend/modules/booking/templates/_progress_tracker.php CHANGED
@@ -1,26 +1,25 @@
1
  <?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
  use Bookly\Lib;
3
  $i = 1;
4
- $extras_enabled = Lib\Config::serviceExtrasActive() && get_option( 'bookly_service_extras_enabled' );
5
  ?>
6
  <div class="bookly-progress-tracker bookly-table">
7
- <?php if ( $skip_service_step == false ) : ?>
8
  <div <?php if ( $step >= 1 ) : ?>class="active"<?php endif ?>>
9
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_service' ) ?>
10
  <div class=step></div>
11
  </div>
12
  <?php endif ?>
13
- <?php if ( $extras_enabled && get_option( 'bookly_service_extras_after_step_time' ) == '0' ) : ?>
14
  <div <?php if ( $step >= 2 ) : ?>class="active"<?php endif ?>>
15
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_extras' ) ?>
16
  <div class=step></div>
17
  </div>
18
  <?php endif ?>
19
- <div <?php if ( $step >= 3 - (int) ( $extras_enabled && get_option( 'bookly_service_extras_after_step_time' ) == '1' ) ) : ?>class="active"<?php endif ?>>
20
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_time' ) ?>
21
  <div class=step></div>
22
  </div>
23
- <?php if ( $extras_enabled && get_option( 'bookly_service_extras_after_step_time' ) == '1' ) : ?>
24
  <div <?php if ( $step_extras_active ) : ?>class="active"<?php endif ?>>
25
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_extras' ) ?>
26
  <div class=step></div>
@@ -32,7 +31,7 @@ $extras_enabled = Lib\Config::serviceExtrasActive() && get_option( 'bookly_servi
32
  <div class=step></div>
33
  </div>
34
  <?php endif ?>
35
- <?php if ( $show_cart ) : ?>
36
  <div <?php if ( $step >= 5 ) : ?>class="active"<?php endif ?>>
37
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_cart' ) ?>
38
  <div class=step></div>
@@ -42,7 +41,7 @@ $extras_enabled = Lib\Config::serviceExtrasActive() && get_option( 'bookly_servi
42
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_details' ) ?>
43
  <div class=step></div>
44
  </div>
45
- <?php if ( $payment_disabled == false ) : ?>
46
  <div <?php if ( $step >= 7 ) : ?>class="active"<?php endif ?>>
47
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_payment' ) ?>
48
  <div class=step></div>
1
  <?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
  use Bookly\Lib;
3
  $i = 1;
 
4
  ?>
5
  <div class="bookly-progress-tracker bookly-table">
6
+ <?php if ( ! $skip_steps['service'] ) : ?>
7
  <div <?php if ( $step >= 1 ) : ?>class="active"<?php endif ?>>
8
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_service' ) ?>
9
  <div class=step></div>
10
  </div>
11
  <?php endif ?>
12
+ <?php if ( ! $skip_steps['extras'] && get_option( 'bookly_service_extras_after_step_time' ) == '0' ) : ?>
13
  <div <?php if ( $step >= 2 ) : ?>class="active"<?php endif ?>>
14
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_extras' ) ?>
15
  <div class=step></div>
16
  </div>
17
  <?php endif ?>
18
+ <div <?php if ( $step >= 3 - (int) ( ! $skip_steps['extras'] && get_option( 'bookly_service_extras_after_step_time' ) == '1' ) ) : ?>class="active"<?php endif ?>>
19
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_time' ) ?>
20
  <div class=step></div>
21
  </div>
22
+ <?php if ( ! $skip_steps['extras'] && get_option( 'bookly_service_extras_after_step_time' ) == '1' ) : ?>
23
  <div <?php if ( $step_extras_active ) : ?>class="active"<?php endif ?>>
24
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_extras' ) ?>
25
  <div class=step></div>
31
  <div class=step></div>
32
  </div>
33
  <?php endif ?>
34
+ <?php if ( ! $skip_steps['cart'] ) : ?>
35
  <div <?php if ( $step >= 5 ) : ?>class="active"<?php endif ?>>
36
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_cart' ) ?>
37
  <div class=step></div>
41
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_details' ) ?>
42
  <div class=step></div>
43
  </div>
44
+ <?php if ( ! $skip_steps['payment'] ) : ?>
45
  <div <?php if ( $step >= 7 ) : ?>class="active"<?php endif ?>>
46
  <?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_payment' ) ?>
47
  <div class=step></div>
frontend/modules/booking/templates/short_code.php CHANGED
@@ -10,6 +10,12 @@ Version: <?php echo Lib\Plugin::getVersion() ?>
10
  <div id="bookly-form-<?php echo $form_id ?>" class="bookly-form" data-form_id="<?php echo $form_id ?>">
11
  <div style="text-align: center"><img src="<?php echo includes_url( 'js/tinymce/skins/lightgray/img/loader.gif' ) ?>" alt="<?php esc_attr_e( 'Loading...', 'bookly' ) ?>" /></div>
12
  </div>
 
 
 
 
 
 
13
  <script type="text/javascript">
14
  (function (win, fn) {
15
  var done = false, top = true,
10
  <div id="bookly-form-<?php echo $form_id ?>" class="bookly-form" data-form_id="<?php echo $form_id ?>">
11
  <div style="text-align: center"><img src="<?php echo includes_url( 'js/tinymce/skins/lightgray/img/loader.gif' ) ?>" alt="<?php esc_attr_e( 'Loading...', 'bookly' ) ?>" /></div>
12
  </div>
13
+ <?php if ( get_option( 'bookly_app_show_powered_by' ) ) : ?>
14
+ <div class="powered-by-bookly"><?php esc_html_e( 'Powered by', 'bookly' ) ?>
15
+ <a href="https://www.booking-wp-plugin.com/?utm_source=referral&utm_medium=booking_widget" target="_blank">Bookly</a> —
16
+ <a href="https://www.booking-wp-plugin.com/?utm_source=referral&utm_medium=booking_widget" target="_blank">WordPress Booking Plugin</a>
17
+ </div>
18
+ <?php endif ?>
19
  <script type="text/javascript">
20
  (function (win, fn) {
21
  var done = false, top = true,
frontend/resources/css/bookly-main.css CHANGED
@@ -1292,6 +1292,17 @@ label.bookly-square {
1292
  width: 8.33333333%;
1293
  }
1294
 
 
 
 
 
 
 
 
 
 
 
 
1295
 
1296
  /* Other */
1297
  ::-webkit-input-placeholder {color:#bbb!important;}
1292
  width: 8.33333333%;
1293
  }
1294
 
1295
+ .powered-by-bookly {
1296
+ font-size: 14px !important;
1297
+ color: #666666;
1298
+ text-align: center;
1299
+ }
1300
+ .powered-by-bookly a {
1301
+ color: inherit;
1302
+ }
1303
+ .powered-by-bookly a:first-child {
1304
+ text-decoration: none !important;
1305
+ }
1306
 
1307
  /* Other */
1308
  ::-webkit-input-placeholder {color:#bbb!important;}
languages/bookly-ar.mo ADDED
Binary file
languages/bookly-ar.po ADDED
@@ -0,0 +1,7384 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "MIME-Version: 1.0\n"
4
+ "Content-Type: text/plain; charset=UTF-8\n"
5
+ "Content-Transfer-Encoding: 8bit\n"
6
+ "X-Generator: POEditor.com\n"
7
+ "Project-Id-Version: Bookly\n"
8
+ "Language: ar\n"
9
+ "Plural-Forms: nplurals=6; plural= n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
10
+
11
+ #:
12
+ msgid "Calendar"
13
+ msgstr "التقويم"
14
+
15
+ #:
16
+ msgid "Appointments"
17
+ msgstr "المواعيد"
18
+
19
+ #:
20
+ msgid "Staff Members"
21
+ msgstr "الأعضاء العاملون"
22
+
23
+ #:
24
+ msgid "Services"
25
+ msgstr "الخدمات"
26
+
27
+ #:
28
+ msgid "SMS Notifications"
29
+ msgstr "الإشعارات عبر الرسائل القصيرة"
30
+
31
+ #:
32
+ msgid "Email Notifications"
33
+ msgstr "الإشعارات عبر البريد الإلكتروني"
34
+
35
+ #:
36
+ msgid "Customers"
37
+ msgstr "العملاء"
38
+
39
+ #:
40
+ msgid "Payments"
41
+ msgstr "المدفوعات"
42
+
43
+ #:
44
+ msgid "Appearance"
45
+ msgstr "المظهر"
46
+
47
+ #:
48
+ msgid "Settings"
49
+ msgstr "الإعدادات"
50
+
51
+ #:
52
+ msgid "Custom Fields"
53
+ msgstr "حقول مخصصة"
54
+
55
+ #:
56
+ msgid "Profile"
57
+ msgstr "الملف الشخصي"
58
+
59
+ #:
60
+ msgid "Messages"
61
+ msgstr "الرسائل"
62
+
63
+ #:
64
+ msgid "Today"
65
+ msgstr "اليوم"
66
+
67
+ #:
68
+ msgid "Next month"
69
+ msgstr "الشهر القادم"
70
+
71
+ #:
72
+ msgid "Previous month"
73
+ msgstr "الشهر الماضي"
74
+
75
+ #:
76
+ msgid "Settings saved."
77
+ msgstr "تم حفظ الإعدادات"
78
+
79
+ #:
80
+ msgid "Your custom CSS was saved. Please refresh the page to see your changes."
81
+ msgstr "تم حفظ الغييرات على ملف CSS، نرجو تحديث اصفحة لترى التغييرات"
82
+
83
+ #:
84
+ msgid "Visible when the chosen time slot has been already booked"
85
+ msgstr "ستظهر عندما تكون خانة الوقت المختار محجوزة فعلاً"
86
+
87
+ #:
88
+ msgid "Date"
89
+ msgstr "تاريخ"
90
+
91
+ #:
92
+ msgid "Time"
93
+ msgstr "الوقت"
94
+
95
+ #:
96
+ msgid "Price"
97
+ msgstr "السعر"
98
+
99
+ #:
100
+ msgid "Edit"
101
+ msgstr "تعديل"
102
+
103
+ #:
104
+ msgid "Total"
105
+ msgstr "الإجمالي"
106
+
107
+ #:
108
+ msgid "Visible to non-logged in customers only"
109
+ msgstr "ستظهر فقط للعملاء غير المسجلين"
110
+
111
+ #:
112
+ msgid "total quantity of appointments in cart"
113
+ msgstr "إجمالي عدد المواعيد في السلة"
114
+
115
+ #:
116
+ msgid "booking number"
117
+ msgstr "رقم الحجز"
118
+
119
+ #:
120
+ msgid "name of category"
121
+ msgstr "اسم التصنيف"
122
+
123
+ #:
124
+ msgid "login form"
125
+ msgstr "استمارة تسجيل الدخول"
126
+
127
+ #:
128
+ msgid "number of persons"
129
+ msgstr "عدد الأشخاص"
130
+
131
+ #:
132
+ msgid "date of service"
133
+ msgstr "تاريخ الخدمة"
134
+
135
+ #:
136
+ msgid "info of service"
137
+ msgstr "معلومات الخدمة"
138
+
139
+ #:
140
+ msgid "name of service"
141
+ msgstr "اسم الخدمة"
142
+
143
+ #:
144
+ msgid "price of service"
145
+ msgstr "سعر الخدمة"
146
+
147
+ #:
148
+ msgid "time of service"
149
+ msgstr "وقت الخدمة"
150
+
151
+ #:
152
+ msgid "info of staff"
153
+ msgstr "معلومات العاملين"
154
+
155
+ #:
156
+ msgid "name of staff"
157
+ msgstr "اسماء العاملين"
158
+
159
+ #:
160
+ msgid "total price of booking"
161
+ msgstr "السعر الإجمالي للحجوزات"
162
+
163
+ #:
164
+ msgid "Edit custom CSS"
165
+ msgstr "تحرير مخصص لمللف CSS"
166
+
167
+ #:
168
+ msgid "Set up your custom CSS styles"
169
+ msgstr "حرر ملفك الخاص من CSS"
170
+
171
+ #:
172
+ msgid "Save"
173
+ msgstr "حفظ"
174
+
175
+ #:
176
+ msgid "Cancel"
177
+ msgstr "إلغاء"
178
+
179
+ #:
180
+ msgid "Show form progress tracker"
181
+ msgstr "اظهر متابعة تقدم النموذج"
182
+
183
+ #:
184
+ msgid "Click on the underlined text to edit."
185
+ msgstr "اضغط على النص الذي أسفله خط لتحريره"
186
+
187
+ #:
188
+ msgid "Make selecting employee required"
189
+ msgstr "اجعل اختيار الموظف مطلوباً"
190
+
191
+ #:
192
+ msgid "Show service price next to employee name"
193
+ msgstr "أظهر سعر الخدمة بجانب اسم الموظف"
194
+
195
+ #:
196
+ msgid "Show service duration next to service name"
197
+ msgstr "أظهر مدة الخدمة بجانب اسمها"
198
+
199
+ #:
200
+ msgid "Show calendar"
201
+ msgstr "اظهر التقويم"
202
+
203
+ #:
204
+ msgid "Show blocked timeslots"
205
+ msgstr "اظهر التواريخ المغلقة"
206
+
207
+ #:
208
+ msgid "Show each day in one column"
209
+ msgstr "اظهر كل يوم في عمود مستقل"
210
+
211
+ #:
212
+ msgid "Show Login button"
213
+ msgstr "اظهر زر الدخول"
214
+
215
+ #:
216
+ msgid "Do not forget to update your email and SMS codes for customer names"
217
+ msgstr "لا تنس تحديث بريدك الإلكتروني والرمز المرسل عبر الرسائل القصيرة لأسماء العملاء"
218
+
219
+ #:
220
+ msgid "Use first and last name instead of full name"
221
+ msgstr "استخدم الاسم الأول والأخير بدلاً من الاسم الكامل"
222
+
223
+ #:
224
+ msgid "The booking form on this step may have different set or states of its elements. It depends on various conditions such as installed/activated add-ons, settings configuration or choices made on previous steps. Select option and click on the underlined text to edit."
225
+ msgstr "قد يكون نموذج الحجز في هذه الخطوة مجموعة مختلفة أو حالات من عناصرها. يعتمد ذلك على العديد من الشروط مثل الوظائف الإضافية المثبتة / النشطة ، الإعدادات أو الخيارات التي تم إجراؤها على الخطوات السابقة. حدد الخيار وانقر على النص الذي تحته خط لتحريره.\n"
226
+ ""
227
+
228
+ #:
229
+ msgid "Tomorrow"
230
+ msgstr "غداً"
231
+
232
+ #:
233
+ msgid "Yesterday"
234
+ msgstr "أمس"
235
+
236
+ #:
237
+ msgid "Apply"
238
+ msgstr "تطبيق"
239
+
240
+ #:
241
+ msgid "To"
242
+ msgstr "الى"
243
+
244
+ #:
245
+ msgid "From"
246
+ msgstr "من"
247
+
248
+ #:
249
+ msgid "Are you sure?"
250
+ msgstr "هل أنت متأكد؟\n"
251
+ ""
252
+
253
+ #:
254
+ msgid "No appointments for selected period."
255
+ msgstr "لا توجد مواعيد للفترة المختارة.\n"
256
+ ""
257
+
258
+ #:
259
+ msgid "Processing..."
260
+ msgstr "جاري المعالجة..."
261
+
262
+ #:
263
+ msgid "%s of %s"
264
+ msgstr "%s من %s"
265
+
266
+ #:
267
+ msgid "No."
268
+ msgstr "لا."
269
+
270
+ #:
271
+ msgid "Customer Name"
272
+ msgstr "اسم العميل"
273
+
274
+ #:
275
+ msgid "Customer Phone"
276
+ msgstr "هاتف العميل"
277
+
278
+ #:
279
+ msgid "Customer Email"
280
+ msgstr "البريد الإلكتروني للعميل"
281
+
282
+ #:
283
+ msgid "Duration"
284
+ msgstr "المدة"
285
+
286
+ #:
287
+ msgid "Status"
288
+ msgstr "الحالة"
289
+
290
+ #:
291
+ msgid "Payment"
292
+ msgstr "‫طرق الدفع"
293
+
294
+ #:
295
+ msgid "Appointment Date"
296
+ msgstr "تاريخ الموعد"
297
+
298
+ #:
299
+ msgid "New appointment"
300
+ msgstr "موعد جديد\n"
301
+ ""
302
+
303
+ #:
304
+ msgid "Customer"
305
+ msgstr "‫العميل"
306
+
307
+ #:
308
+ msgid "Edit appointment"
309
+ msgstr "‫تعديل الموعد"
310
+
311
+ #:
312
+ msgid "Week"
313
+ msgstr "الأسبوع"
314
+
315
+ #:
316
+ msgid "Day"
317
+ msgstr "اليوم"
318
+
319
+ #:
320
+ msgid "Month"
321
+ msgstr "الشهر"
322
+
323
+ #:
324
+ msgid "All Day"
325
+ msgstr "طوال اليوم"
326
+
327
+ #:
328
+ msgid "Delete"
329
+ msgstr "حذف"
330
+
331
+ #:
332
+ msgid "No staff selected"
333
+ msgstr "لم يتم اختيار أي موظف\n"
334
+ ""
335
+
336
+ #:
337
+ msgid "Recurring appointments"
338
+ msgstr "مواعيد متكررة\n"
339
+ ""
340
+
341
+ #:
342
+ msgid "On waiting list"
343
+ msgstr "في قائمة الانتظار\n"
344
+ ""
345
+
346
+ #:
347
+ msgid "Start time must not be empty"
348
+ msgstr "وقت بدأ الموعد يجب ألا يكون فارغًا\n"
349
+ ""
350
+
351
+ #:
352
+ msgid "End time must not be empty"
353
+ msgstr "وقت انتهاء الموعد يجب ألا يكون فارغًا\n"
354
+ ""
355
+
356
+ #:
357
+ msgid "End time must not be equal to start time"
358
+ msgstr "وقت انتهاء الموعد يجب ألا يكون مساويًا لوقت بدأ الموعد\n"
359
+ ""
360
+
361
+ #:
362
+ msgid "The number of customers should not be more than %d"
363
+ msgstr "يجب ألا يكون عدد العملاء أكثر من %d"
364
+
365
+ #:
366
+ msgid "Could not save appointment in database."
367
+ msgstr "لا يمكن حفظ الموعد في قاعدة البيانات\n"
368
+ ""
369
+
370
+ #:
371
+ msgid "Untitled"
372
+ msgstr "بدون عنوان"
373
+
374
+ #:
375
+ msgid "Provider"
376
+ msgstr "مقدم الخدمة"
377
+
378
+ #:
379
+ msgid "Service"
380
+ msgstr "الخدمة"
381
+
382
+ #:
383
+ msgid "-- Select a service --"
384
+ msgstr "- اختر خدمة -\n"
385
+ ""
386
+
387
+ #:
388
+ msgid "Please select a service"
389
+ msgstr "يرجى اختيار خدمة\n"
390
+ ""
391
+
392
+ #:
393
+ msgid "Location"
394
+ msgstr "الموقع"
395
+
396
+ #:
397
+ msgid "Period"
398
+ msgstr "الفترة"
399
+
400
+ #:
401
+ msgid "to"
402
+ msgstr "الى"
403
+
404
+ #:
405
+ msgid "Selected period doesn't match service duration"
406
+ msgstr "الفترة المحددة لا تتطابق مع مدة الخدمة\n"
407
+ ""
408
+
409
+ #:
410
+ msgid "The selected period is occupied by another appointment"
411
+ msgstr "الفترة المختارة محجوزة من قبل موعد آخر\n"
412
+ ""
413
+
414
+ #:
415
+ msgid "Selected / maximum"
416
+ msgstr "المختارة / ‫الحد الأعلى"
417
+
418
+ #:
419
+ msgid "Minimum capacity"
420
+ msgstr "سعة ‫الحد الأدنى"
421
+
422
+ #:
423
+ msgid "Edit booking details"
424
+ msgstr "تعديل تفاصيل الحجز\n"
425
+ ""
426
+
427
+ #:
428
+ msgid "Remove customer"
429
+ msgstr "حذف العميل"
430
+
431
+ #:
432
+ msgid "-- Search customers --"
433
+ msgstr "- البحث عن العملاء -\n"
434
+ ""
435
+
436
+ #:
437
+ msgid "New customer"
438
+ msgstr "عميل جديد\n"
439
+ ""
440
+
441
+ #:
442
+ msgid "Send notifications"
443
+ msgstr "إرسال ‫‫التنبيهات"
444
+
445
+ #:
446
+ msgid "Internal note"
447
+ msgstr "ملاحظات خاصة"
448
+
449
+ #:
450
+ msgid "Number of persons"
451
+ msgstr "عدد الأشخاص"
452
+
453
+ #:
454
+ msgid "Cancellation reason (optional)"
455
+ msgstr "سبب الإلغاء (إختياري)\n"
456
+ ""
457
+
458
+ #:
459
+ msgid "All"
460
+ msgstr "‫الكل"
461
+
462
+ #:
463
+ msgid "All staff"
464
+ msgstr "جميع الأعضاء العاملون\n"
465
+ ""
466
+
467
+ #:
468
+ msgid "Add staff members."
469
+ msgstr "اضافة اعضاء عاملون"
470
+
471
+ #:
472
+ msgid "Add Staff Members"
473
+ msgstr "اضافة اعضاء عاملون"
474
+
475
+ #:
476
+ msgid "Add Services"
477
+ msgstr "اضافة خدمات\n"
478
+ ""
479
+
480
+ #:
481
+ msgid "All services"
482
+ msgstr "جميع الخدمات\n"
483
+ ""
484
+
485
+ #:
486
+ msgid "Code"
487
+ msgstr "الشفرة"
488
+
489
+ #:
490
+ msgid "Reorder"
491
+ msgstr "إعادة ترتيب"
492
+
493
+ #:
494
+ msgid "No customers found."
495
+ msgstr "لم يتم العثور على عملاء.\n"
496
+ ""
497
+
498
+ #:
499
+ msgid "Edit customer"
500
+ msgstr "تعديل العميل"
501
+
502
+ #:
503
+ msgid "Create customer"
504
+ msgstr "عميل جديد"
505
+
506
+ #:
507
+ msgid "Quick search customer"
508
+ msgstr "البحث عن عملاء\n"
509
+ ""
510
+
511
+ #:
512
+ msgid "User"
513
+ msgstr "‫المستخدم"
514
+
515
+ #:
516
+ msgid "Notes"
517
+ msgstr "‫ملاحظات"
518
+
519
+ #:
520
+ msgid "Last appointment"
521
+ msgstr "آخر موعد"
522
+
523
+ #:
524
+ msgid "Total appointments"
525
+ msgstr "مجموع المواعيد"
526
+
527
+ #:
528
+ msgid "New Customer"
529
+ msgstr "عميل جديد"
530
+
531
+ #:
532
+ msgid "First name"
533
+ msgstr "‫الاسم الأول"
534
+
535
+ #:
536
+ msgid "Required"
537
+ msgstr "مطلوب"
538
+
539
+ #:
540
+ msgid "Last name"
541
+ msgstr "‫اسم العائل"
542
+
543
+ #:
544
+ msgid "Name"
545
+ msgstr "الاسم"
546
+
547
+ #:
548
+ msgid "Phone"
549
+ msgstr "‫الهاتف"
550
+
551
+ #:
552
+ msgid "Email"
553
+ msgstr "‫البريد الإلكتروني"
554
+
555
+ #:
556
+ msgid "Delete customers"
557
+ msgstr "حذف العملاء"
558
+
559
+ #:
560
+ msgid "Remember my choice"
561
+ msgstr "تذكر اختياري"
562
+
563
+ #:
564
+ msgid "Yes"
565
+ msgstr "نعم"
566
+
567
+ #:
568
+ msgid "%d day"
569
+ msgid_plural "%d days"
570
+ msgstr[0] "%d يوم"
571
+ msgstr[1] "%d يوم"
572
+ msgstr[2] "%d أيام"
573
+ msgstr[3] "%d أيام"
574
+ msgstr[4] "%d أيام"
575
+ msgstr[5] "%d أيام"
576
+
577
+ #:
578
+ msgid "Sent successfully."
579
+ msgstr "أرسل بنجاح."
580
+
581
+ #:
582
+ msgid "Subject"
583
+ msgstr "الموضوع"
584
+
585
+ #:
586
+ msgid "Message"
587
+ msgstr "الرسالة"
588
+
589
+ #:
590
+ msgid "date of appointment"
591
+ msgstr "تاريخ الموعد"
592
+
593
+ #:
594
+ msgid "time of appointment"
595
+ msgstr "وقت الموعد"
596
+
597
+ #:
598
+ msgid "end date of appointment"
599
+ msgstr "نهاية تاريخ الموعد"
600
+
601
+ #:
602
+ msgid "end time of appointment"
603
+ msgstr "نهاية وقت الموعد"
604
+
605
+ #:
606
+ msgid "URL of approve appointment link (to use inside <a> tag)"
607
+ msgstr "رابط لقبول الموعد (لاستخدامه داخل الوسم <a>)"
608
+
609
+ #:
610
+ msgid "cancel appointment link"
611
+ msgstr "رابط إلغاء الموعد\n"
612
+ ""
613
+
614
+ #:
615
+ msgid "URL of cancel appointment link (to use inside <a> tag)"
616
+ msgstr "الرابط لإلغاء الموعد (لاستخدامه في داخل الوسم <a>)"
617
+
618
+ #:
619
+ msgid "reason you mentioned while deleting appointment"
620
+ msgstr "السبب الذي ذكرته أثناء حذف الموعد"
621
+
622
+ #:
623
+ msgid "email of client"
624
+ msgstr "البريد الإلكتروني للعميل"
625
+
626
+ #:
627
+ msgid "full name of client"
628
+ msgstr "الاسم الكامل للعميل"
629
+
630
+ #:
631
+ msgid "first name of client"
632
+ msgstr "الاسم الأول للعميل"
633
+
634
+ #:
635
+ msgid "last name of client"
636
+ msgstr "الاسم الأخير للعميل"
637
+
638
+ #:
639
+ msgid "phone of client"
640
+ msgstr "هاتف العميل"
641
+
642
+ #:
643
+ msgid "name of company"
644
+ msgstr "اسم الشركة"
645
+
646
+ #:
647
+ msgid "company logo"
648
+ msgstr "شعار الشركة"
649
+
650
+ #:
651
+ msgid "address of company"
652
+ msgstr "عنوان الشركة"
653
+
654
+ #:
655
+ msgid "company phone"
656
+ msgstr "هاتف الشركة"
657
+
658
+ #:
659
+ msgid "company web-site address"
660
+ msgstr "عنوان موقع الشركة على الويب"
661
+
662
+ #:
663
+ msgid "URL for adding event to client's Google Calendar (to use inside <a> tag)"
664
+ msgstr "‫الرابط لإضافة حدث إلى تقويم Google الخاص بالعميل (لاستخدامه في داخل الوسم <a>)\n"
665
+ ""
666
+
667
+ #:
668
+ msgid "payment type"
669
+ msgstr "طريقة الدفع"
670
+
671
+ #:
672
+ msgid "duration of service"
673
+ msgstr "مدة الخدمة"
674
+
675
+ #:
676
+ msgid "email of staff"
677
+ msgstr "البريد الإلكتروني للموظف\n"
678
+ ""
679
+
680
+ #:
681
+ msgid "phone of staff"
682
+ msgstr "هاتف الموظف"
683
+
684
+ #:
685
+ msgid "photo of staff"
686
+ msgstr "صورة للموظف"
687
+
688
+ #:
689
+ msgid "total price of booking (sum of all cart items after applying coupon)"
690
+ msgstr "السعر الاجمالي للحجز (مجموع كل عناصر العربة بعد تطبيق القسيمة)\n"
691
+ ""
692
+
693
+ #:
694
+ msgid "cart information"
695
+ msgstr "معلومات سلة التسوق\n"
696
+ ""
697
+
698
+ #:
699
+ msgid "cart information with cancel"
700
+ msgstr "معلومات سلة التسوق مع إلغاء"
701
+
702
+ #:
703
+ msgid "customer new username"
704
+ msgstr "اسم مستخدم جديد للعميل"
705
+
706
+ #:
707
+ msgid "customer new password"
708
+ msgstr "كلمة المرور الجديدة للعميل"
709
+
710
+ #:
711
+ msgid "site address"
712
+ msgstr "عنوان الموقع"
713
+
714
+ #:
715
+ msgid "date of next day"
716
+ msgstr "تاريخ اليوم التالي"
717
+
718
+ #:
719
+ msgid "staff agenda for next day"
720
+ msgstr "جدول أعمال الموظفين لليوم التالي"
721
+
722
+ #:
723
+ msgid "To email"
724
+ msgstr "الى البريد الإلكتروني"
725
+
726
+ #:
727
+ msgid "Sender name"
728
+ msgstr "اسم المرسل"
729
+
730
+ #:
731
+ msgid "Sender email"
732
+ msgstr "البريد الإلكتروني المرسل"
733
+
734
+ #:
735
+ msgid "Reply directly to customers"
736
+ msgstr "الرد مباشرة على العملاء"
737
+
738
+ #:
739
+ msgid "Disabled"
740
+ msgstr "تعطيل"
741
+
742
+ #:
743
+ msgid "Enabled"
744
+ msgstr "تفعيل"
745
+
746
+ #:
747
+ msgid "Send emails as"
748
+ msgstr "ارسال البريد بصيغة"
749
+
750
+ #:
751
+ msgid "HTML"
752
+ msgstr "HTML"
753
+
754
+ #:
755
+ msgid "Text"
756
+ msgstr "نص"
757
+
758
+ #:
759
+ msgid "Notification templates"
760
+ msgstr "‫قوالب التنبيه"
761
+
762
+ #:
763
+ msgid "All templates"
764
+ msgstr "جميع القوالب"
765
+
766
+ #:
767
+ msgid "Send"
768
+ msgstr "ارسال"
769
+
770
+ #:
771
+ msgid "Close"
772
+ msgstr "‫إغلاق"
773
+
774
+ #:
775
+ msgid "HTML allows formatting, colors, fonts, positioning, etc. With Text you must use Text mode of rich-text editors below. On some servers only text emails are sent successfully."
776
+ msgstr "يسمح HTML بتنسيق الألوان ، والخطوط ، وتحديد المواقع ، وما إلى ذلك. باستخدام النص ، يجب استخدام وضع النص في برامج تحرير النصوص المنسقية أدناه. على بعض الخوادم فقط يتم إرسال رسائل البريد الإلكتروني النصية بنجاح.\n"
777
+ ""
778
+
779
+ #:
780
+ msgid "If this option is enabled then the email address of the customer is used as a sender email address for notifications sent to staff members and administrators."
781
+ msgstr "إذا تم تفعيل هذا الخيار ، فسيتم استخدام عنوان البريد الإلكتروني للعميل كعنوان بريد إلكتروني للمرسل لإرسال التنبيهات إلى الموظفين والمدراء.\n"
782
+ ""
783
+
784
+ #:
785
+ msgid "Codes"
786
+ msgstr "الأكواد البرمجية"
787
+
788
+ #:
789
+ msgid "To send scheduled notifications please refer to <a href=\"%1$s\">Bookly Multisite</a> add-on <a href=\"%2$s\">message</a>."
790
+ msgstr "لإرسال تنبيهات مجدولة ، يرجى الرجوع إلى اضافه <a href=\"%1$s\">بوكلي متعددة المواقع</a> <a href=\"%2$s\">رسالة</a>.\n"
791
+ ""
792
+
793
+ #:
794
+ msgid "To send scheduled notifications please execute the following command hourly with your cron:"
795
+ msgstr "لإرسال تنبيهات مجدولة ، يرجى تنفيذ الأمر التالي كل ساعة باستخدام كرون:"
796
+
797
+ #:
798
+ msgid "No payments for selected period and criteria."
799
+ msgstr "لا توجد مدفوعات للفترة المحددة والمعايير."
800
+
801
+ #:
802
+ msgid "Details"
803
+ msgstr "تفاصيل"
804
+
805
+ #:
806
+ msgid "See details for more items"
807
+ msgstr "عرض التفاصيل لمزيد من العناصر\n"
808
+ ""
809
+
810
+ #:
811
+ msgid "Type"
812
+ msgstr "الطريقة"
813
+
814
+ #:
815
+ msgid "Deposit"
816
+ msgstr "عربون مقدم"
817
+
818
+ #:
819
+ msgid "Subtotal"
820
+ msgstr "حاصل الجمع"
821
+
822
+ #:
823
+ msgid "Paid"
824
+ msgstr "دفع"
825
+
826
+ #:
827
+ msgid "Due"
828
+ msgstr "مستحق"
829
+
830
+ #:
831
+ msgid "Complete payment"
832
+ msgstr "اكمل الدفع"
833
+
834
+ #:
835
+ msgid "Amount"
836
+ msgstr "الكمية"
837
+
838
+ #:
839
+ msgid "Min capacity should not be greater than max capacity."
840
+ msgstr "يجب ألا تكون سعة الحد الأدنى أكبر من السعة القصوى"
841
+
842
+ #:
843
+ msgid "%d service"
844
+ msgid_plural "%d services"
845
+ msgstr[0] "%d خدمة"
846
+ msgstr[1] "%d خدمة"
847
+ msgstr[2] "%d خدمات"
848
+ msgstr[3] "%d خدمات"
849
+ msgstr[4] "%d خدمات"
850
+ msgstr[5] "%d خدمات"
851
+
852
+ #:
853
+ msgid "Simple"
854
+ msgstr "بسيط"
855
+
856
+ #:
857
+ msgid "Title"
858
+ msgstr "العنوان"
859
+
860
+ #:
861
+ msgid "Color"
862
+ msgstr "لون"
863
+
864
+ #:
865
+ msgid "Visibility"
866
+ msgstr "رؤية"
867
+
868
+ #:
869
+ msgid "Public"
870
+ msgstr "عام"
871
+
872
+ #:
873
+ msgid "Private"
874
+ msgstr "خاص"
875
+
876
+ #:
877
+ msgid "OFF"
878
+ msgstr "إيقاف"
879
+
880
+ #:
881
+ msgid "Providers"
882
+ msgstr "مقدمي"
883
+
884
+ #:
885
+ msgid "Category"
886
+ msgstr "الصنف"
887
+
888
+ #:
889
+ msgid "Uncategorized"
890
+ msgstr "غير مصنف"
891
+
892
+ #:
893
+ msgid "Info"
894
+ msgstr "معلومات"
895
+
896
+ #:
897
+ msgid "This text can be inserted into notifications with %s code."
898
+ msgstr "يمكن إدراج هذا النص في الإشعارات باستخدام رمز %s."
899
+
900
+ #:
901
+ msgid "Add Service"
902
+ msgstr "اضف خدمة"
903
+
904
+ #:
905
+ msgid "No services found. Please add services."
906
+ msgstr "لم يتم العثور على خدمات. يرجى إضافة الخدمات."
907
+
908
+ #:
909
+ msgid "Update service setting"
910
+ msgstr "تحديث إعداد الخدمة"
911
+
912
+ #:
913
+ msgid "You are about to change a service setting which is also configured separately for each staff member. Do you want to update it in staff settings too?"
914
+ msgstr "أنت على وشك تغيير إعداد خدمة تم تكوينه أيضًا بشكل منفصل لكل موظف. هل تريد تحديثه في إعدادات الموظفين أيضًا؟"
915
+
916
+ #:
917
+ msgid "No, update just here in services"
918
+ msgstr "لا، قم بتحديث في الخدمات هنا فقط"
919
+
920
+ #:
921
+ msgid "WooCommerce cart is not set up. Follow the <a href=\"%s\">link</a> to correct this problem."
922
+ msgstr "لم يتم إعداد عربة WooCommerce. اتبع <a href=\"%s\"> الرابط </a> لتصحيح هذه المشكلة."
923
+
924
+ #:
925
+ msgid "Repeat every year"
926
+ msgstr "كرر كل عام"
927
+
928
+ #:
929
+ msgid "We are not working on this day"
930
+ msgstr "نحن لا نعمل في هذا اليوم"
931
+
932
+ #:
933
+ msgid "Appointment with one participant"
934
+ msgstr "موعد مع مشارك واحد"
935
+
936
+ #:
937
+ msgid "Appointment with many participants"
938
+ msgstr "موعد مع العديد من المشاركين"
939
+
940
+ #:
941
+ msgid "Enter a value"
942
+ msgstr "أدخل قيمة"
943
+
944
+ #:
945
+ msgid "capacity of service"
946
+ msgstr "سعة الخدمة"
947
+
948
+ #:
949
+ msgid "number of persons already in the list"
950
+ msgstr "عدد الأشخاص الموجودين بالفعل في القائمة"
951
+
952
+ #:
953
+ msgid "status of payment"
954
+ msgstr "حالة الدفع"
955
+
956
+ #:
957
+ msgid "status of appointment"
958
+ msgstr "حالة الموعد"
959
+
960
+ #:
961
+ msgid "Cart"
962
+ msgstr "عربة التسوق"
963
+
964
+ #:
965
+ msgid "Image"
966
+ msgstr "صورة"
967
+
968
+ #:
969
+ msgid "Company name"
970
+ msgstr "اسم الشركة"
971
+
972
+ #:
973
+ msgid "Address"
974
+ msgstr "العنوان"
975
+
976
+ #:
977
+ msgid "Website"
978
+ msgstr "موقع الكتروني"
979
+
980
+ #:
981
+ msgid "Phone field default country"
982
+ msgstr "حقل الهاتف الافتراضي للبلد"
983
+
984
+ #:
985
+ msgid "Select default country for the phone field in the 'Details' step of booking. You can also let Bookly determine the country based on the IP address of the client."
986
+ msgstr "حدد البلد الافتراضي لحقل الهاتف في خطوة \"تفاصيل\" الحجز. يمكنك أيضًا السماح لـ Bookly بتحديد البلد استنادًا إلى عنوان IP الخاص بالعميل."
987
+
988
+ #:
989
+ msgid "Guess country by user's IP address"
990
+ msgstr "خمن الدولة عن طريق عنوان بروتوكول الإنترنت للمستخدم"
991
+
992
+ #:
993
+ msgid "Default country code"
994
+ msgstr "رمز البلد الافتراضي"
995
+
996
+ #:
997
+ msgid "Your clients must have their phone numbers in international format in order to receive text messages. However you can specify a default country code that will be used as a prefix for all phone numbers that do not start with \"+\" or \"00\". E.g. if you enter \"1\" as the default country code and a client enters their phone as \"(600) 555-2222\" the resulting phone number to send the SMS to will be \"+1600555222\"."
998
+ msgstr "يجب أن يكون لعملائك أرقام هواتفهم بالتنسيق الدولي لتلقي رسائل نصية. ومع ذلك ، يمكنك تحديد رمز البلد الافتراضي الذي سيتم استخدامه كبادئة لجميع أرقام الهواتف التي لا تبدأ بـ \"+\" أو \"00\". مثلا إذا أدخلت \"1\" كرمز البلد الافتراضي ، فسيرسل العميل هاتفه باسم \"(600) 555-2222\" ، وسيكون رقم الهاتف الناتج لإرسال الرسالة القصيرة هو \"+1600555222\"."
999
+
1000
+ #:
1001
+ msgid "Remember personal information in cookies"
1002
+ msgstr "حفظ المعلومات الشخصية في الكوكيز"
1003
+
1004
+ #:
1005
+ msgid "If this setting is enabled then returning customers will have their personal information fields filled in at the Details step with the data previously saved in cookies."
1006
+ msgstr "إذا تم تمكين هذا الإعداد ، فسيكون لدى العملاء العائدين حقول معلوماتهم الشخصية معبأة في خطوة التفاصيل مع البيانات المحفوظة مسبقًا في ملفات تعريف الارتباط."
1007
+
1008
+ #:
1009
+ msgid "Time slot length"
1010
+ msgstr "طول الفترة الزمنية"
1011
+
1012
+ #:
1013
+ msgid "Select a time interval which will be used as a step when building all time slots in the system."
1014
+ msgstr "حدد الفاصل الزمني الذي سيتم استخدامه كخطوة عند إنشاء جميع فترات الوقت في النظام."
1015
+
1016
+ #:
1017
+ msgid "Enable this option to make slot length equal to service duration at the Time step of booking form."
1018
+ msgstr "قم بتمكين هذا الخيار لجعل طول الفترة الزمنية مساويًا لمدة الخدمة في استمارة الحجز."
1019
+
1020
+ #:
1021
+ msgid "Default appointment status"
1022
+ msgstr "حالة الموعد الافتراضية"
1023
+
1024
+ #:
1025
+ msgid "Select status for newly booked appointments."
1026
+ msgstr "حدد حالة المواعيد المحجوزة حديثًا."
1027
+
1028
+ #:
1029
+ msgid "Pending"
1030
+ msgstr "قيد الانتظار"
1031
+
1032
+ #:
1033
+ msgid "Approved"
1034
+ msgstr "موافق عليه"
1035
+
1036
+ #:
1037
+ msgid "Approve appointment URL (success)"
1038
+ msgstr "الموافقة على عنوان URL للتعيين (النجاح)"
1039
+
1040
+ #:
1041
+ msgid "Set the URL of a page that is shown to staff after they successfully approved the appointment."
1042
+ msgstr "قم بتعيين عنوان URL لصفحة يتم عرضها للموظفين بعد أن يتم قبول الموعد بنجاح."
1043
+
1044
+ #:
1045
+ msgid "Approve appointment URL (denied)"
1046
+ msgstr "الموافقة على عنوان URL الموعد (مرفوض)"
1047
+
1048
+ #:
1049
+ msgid "Set the URL of a page that is shown to staff when the approval of appointment cannot be done (due to capacity, changed status, etc.)."
1050
+ msgstr "قم بتعيين عنوان URL الخاص بصفحة تظهر للموظفين عندما لا يمكن إجراء الموافقة على التعيين (بسبب السعة أو الحالة المتغيرة ، إلخ)."
1051
+
1052
+ #:
1053
+ msgid "Cancel appointment URL (success)"
1054
+ msgstr "إلغاء عنوان URL الخاص بالتعيين (النجاح)"
1055
+
1056
+ #:
1057
+ msgid "Set the URL of a page that is shown to clients after they successfully cancelled their appointment."
1058
+ msgstr "قم بتعيين عنوان URL الخاص بصفحة تظهر للعملاء بعد قيامهم بإلغاء الموعد بنجاح."
1059
+
1060
+ #:
1061
+ msgid "Cancel appointment URL (denied)"
1062
+ msgstr "إلغاء عنوان URL الموعد (مرفوض)"
1063
+
1064
+ #:
1065
+ msgid "Set the URL of a page that is shown to clients when the cancellation of appointment is not available anymore."
1066
+ msgstr "قم بتعيين عنوان URL الخاص بصفحة تظهر للعملاء عندما لا يكون إلغاء الموعد متاحًا بعد الآن."
1067
+
1068
+ #:
1069
+ msgid "Number of days available for booking"
1070
+ msgstr "عدد الأيام المتاحة للحجز"
1071
+
1072
+ #:
1073
+ msgid "Set how far in the future the clients can book appointments."
1074
+ msgstr "حدد إلى أي مدى يمكن للعملاء حجز المواعيد في المستقبل."
1075
+
1076
+ #:
1077
+ msgid "Display available time slots in client's time zone"
1078
+ msgstr "عرض الفترات الزمنية المتاحة في المنطقة الزمنية للعميل"
1079
+
1080
+ #:
1081
+ msgid "Allow staff members to edit their profiles"
1082
+ msgstr "اسمح للموظفين بتعديل ملفاتهم الشخصية"
1083
+
1084
+ #:
1085
+ msgid "If this option is enabled then all staff members who are associated with WordPress users will be able to edit their own profiles, services, schedule and days off."
1086
+ msgstr "إذا تم تمكين هذا الخيار ، فسيتمكن جميع الموظفين المرتبطين بمستخدمي WordPress من تعديل ملفاتهم الشخصية والخدمات والجدول الزمني وأيام العطلة."
1087
+
1088
+ #:
1089
+ msgid "Method to include Bookly JavaScript and CSS files on the page"
1090
+ msgstr "طريقة تضمين ملفات JavaScript وCSS في الصفحة"
1091
+
1092
+ #:
1093
+ msgid "With \"Enqueue\" method the JavaScript and CSS files of Bookly will be included on all pages of your website. This method should work with all themes. With \"Print\" method the files will be included only on the pages which contain Bookly booking form. This method may not work with all themes."
1094
+ msgstr "باستخدام أسلوب \"إدراج بقائمة الانتظار\" ، سيتم تضمين ملفات JavaScript و CSS في Bookly على جميع صفحات موقعك. يجب أن تعمل هذه الطريقة مع جميع الموضوعات. مع طريقة \"الطباعة\" سيتم تضمين الملفات فقط على الصفحات التي تحتوي على نموذج الحجز Bookly. قد لا تعمل هذه الطريقة مع جميع الموضوعات."
1095
+
1096
+ #:
1097
+ msgid "Help us improve Bookly by sending anonymous usage stats"
1098
+ msgstr "ساعدنا في تحسين Bookly بإرسال إحصائيات استخدام مجهولة"
1099
+
1100
+ #:
1101
+ msgid "Instructions"
1102
+ msgstr "التعليمات"
1103
+
1104
+ #:
1105
+ msgid "Please note, the business hours below work as a template for all new staff members. To render a list of available time slots the system takes into account only staff members' schedule, not the company business hours. Be sure to check the schedule of your staff members if you have some unexpected behavior of the booking system."
1106
+ msgstr "يرجى ملاحظة أن ساعات العمل التالية تعمل كنموذج لجميع الموظفين الجدد. لتقديم قائمة من الفترات الزمنية المتاحة ، يأخذ النظام بعين الاعتبار جدول الموظفين فقط ، وليس ساعات عمل الشركة. تأكد من التحقق من الجدول الزمني لموظفيك إذا كان لديك بعض السلوك غير المتوقع لنظام الحجز."
1107
+
1108
+ #:
1109
+ msgid "Currency"
1110
+ msgstr "العملة"
1111
+
1112
+ #:
1113
+ msgid "Price format"
1114
+ msgstr "تنسيق السعر"
1115
+
1116
+ #:
1117
+ msgid "Service paid locally"
1118
+ msgstr "سيتم دفع الخدمة محليا"
1119
+
1120
+ #:
1121
+ msgid "No"
1122
+ msgstr "لا"
1123
+
1124
+ #:
1125
+ msgid "Client"
1126
+ msgstr "عميل"
1127
+
1128
+ #:
1129
+ msgid "General"
1130
+ msgstr "عام"
1131
+
1132
+ #:
1133
+ msgid "Company"
1134
+ msgstr "الشركة"
1135
+
1136
+ #:
1137
+ msgid "Business Hours"
1138
+ msgstr "ساعات العمل"
1139
+
1140
+ #:
1141
+ msgid "Holidays"
1142
+ msgstr "العطلات"
1143
+
1144
+ #:
1145
+ msgid "Please accept terms and conditions."
1146
+ msgstr "يرجى قبول الشروط والأحكام."
1147
+
1148
+ #:
1149
+ msgid "Your payment has been accepted for processing."
1150
+ msgstr "تم قبول عملية الدفع الخاص بك للمعالجة."
1151
+
1152
+ #:
1153
+ msgid "Your payment has been interrupted."
1154
+ msgstr "لقد توقفت عملية الدفع الخاصة بك."
1155
+
1156
+ #:
1157
+ msgid "Auto-Recharge enabled."
1158
+ msgstr "تمكين إعادة الشحن التلقائي."
1159
+
1160
+ #:
1161
+ msgid "You declined the Auto-Recharge of your balance."
1162
+ msgstr "لقد رفضت إعادة التعبئة التلقائية لرصيدك."
1163
+
1164
+ #:
1165
+ msgid "Please enter old password."
1166
+ msgstr "يرجى إدخال كلمة المرور القديمة."
1167
+
1168
+ #:
1169
+ msgid "Passwords must be the same."
1170
+ msgstr "يجب أن تكون كلمات المرور هي نفسها."
1171
+
1172
+ #:
1173
+ msgid "Sender ID request is sent."
1174
+ msgstr "تم إرسال طلب معرف المرسل."
1175
+
1176
+ #:
1177
+ msgid "Sender ID is reset to default."
1178
+ msgstr "تم إعادة تعيين معرف المرسل إلى الوضع الافتراضي."
1179
+
1180
+ #:
1181
+ msgid "No records for selected period."
1182
+ msgstr "لا توجد سجلات للفترة المحددة."
1183
+
1184
+ #:
1185
+ msgid "No records."
1186
+ msgstr "لا توجد سجلات."
1187
+
1188
+ #:
1189
+ msgid "Auto-Recharge has failed, please replenish your balance directly."
1190
+ msgstr "تعذّر إعادة التعبئة التلقائية ، يرجى إعادة تعبئة رصيدك مباشرةً."
1191
+
1192
+ #:
1193
+ msgid "Auto-Recharge disabled"
1194
+ msgstr "إعادة الشحن التلقائي معطلة"
1195
+
1196
+ #:
1197
+ msgid "Error. Can't disable Auto-Recharge, you can perform this action in your PayPal account."
1198
+ msgstr "خطأ. لا يمكن تعطيل إعادة التعبئة التلقائية ، يمكنك تنفيذ هذا الإجراء في حساب PayPal الخاص بك."
1199
+
1200
+ #:
1201
+ msgid "SMS has been sent successfully."
1202
+ msgstr "تم إرسال الرسالة القصيرة بنجاح."
1203
+
1204
+ #:
1205
+ msgid "We will only charge your PayPal account when your balance falls below $10."
1206
+ msgstr "سنقوم بالخصم من حساب PayPal فقط عندما يقل رصيدك عن 10 دولارات."
1207
+
1208
+ #:
1209
+ msgid "Enable Auto-Recharge"
1210
+ msgstr "تمكين إعادة الشحن التلقائي"
1211
+
1212
+ #:
1213
+ msgid "Disable Auto-Recharge"
1214
+ msgstr "تعطيل إعادة الشحن التلقائي"
1215
+
1216
+ #:
1217
+ msgid "Administrator phone"
1218
+ msgstr "هاتف المسؤول"
1219
+
1220
+ #:
1221
+ msgid "Enter a phone number in international format. E.g. for the United States a valid phone number would be +17327572923."
1222
+ msgstr "أدخل رقم الهاتف بالتنسيق الدولي. مثلا بالنسبة للولايات المتحدة ، سيكون رقم الهاتف الصحيح هو +17327572923."
1223
+
1224
+ #:
1225
+ msgid "Send test SMS"
1226
+ msgstr "إرسال اختبار SMS"
1227
+
1228
+ #:
1229
+ msgid "Country"
1230
+ msgstr "البلد"
1231
+
1232
+ #:
1233
+ msgid "Regular price"
1234
+ msgstr "السعر العادي"
1235
+
1236
+ #:
1237
+ msgid "Price with custom Sender ID"
1238
+ msgstr "السعر مع معرف مخصص للمرسل"
1239
+
1240
+ #:
1241
+ msgid "Order"
1242
+ msgstr "الطلب"
1243
+
1244
+ #:
1245
+ msgid "Please take into account that not all countries by law allow custom SMS sender ID. Please check if particular country supports custom sender ID in our price list. Also please note that prices for messages with custom sender ID are usually 20% - 25% higher than normal message price."
1246
+ msgstr "يرجى الأخذ في الاعتبار أنه لا تسمح جميع الدول بموجب القانون بموجب القانون الدولي لمعرّف هوية المرسل. يرجى التحقق مما إذا كانت دولة معينة تدعم معرف المرسل المخصص في قائمة الأسعار الخاصة بنا. يُرجى أيضًا ملاحظة أن أسعار الرسائل التي تحتوي على معرّف مرسل مخصص عادةً ما تكون أعلى بنسبة 20% - 25% من سعر الرسالة العادي."
1247
+
1248
+ #:
1249
+ msgid "Request Sender ID"
1250
+ msgstr "رقم هوية المرسل"
1251
+
1252
+ #:
1253
+ msgid "or"
1254
+ msgstr "آو"
1255
+
1256
+ #:
1257
+ msgid "Reset to default"
1258
+ msgstr "إعادة تعيين إلى الافتراضي"
1259
+
1260
+ #:
1261
+ msgid "Can only contain letters or digits (up to 11 characters)."
1262
+ msgstr "يمكن أن يحتوي فقط على أحرف أو أرقام (حتى 11 حرفًا)."
1263
+
1264
+ #:
1265
+ msgid "Request"
1266
+ msgstr "طلب"
1267
+
1268
+ #:
1269
+ msgid "Cancel request"
1270
+ msgstr "إلغاء الطلب"
1271
+
1272
+ #:
1273
+ msgid "Requested ID"
1274
+ msgstr "رقم الطلب"
1275
+
1276
+ #:
1277
+ msgid "Status Date"
1278
+ msgstr "تاريخ الحالة"
1279
+
1280
+ #:
1281
+ msgid "Sender ID"
1282
+ msgstr "هوية المرسل"
1283
+
1284
+ #:
1285
+ msgid "Cost"
1286
+ msgstr "كلفة"
1287
+
1288
+ #:
1289
+ msgid "Your balance"
1290
+ msgstr "رصيدك"
1291
+
1292
+ #:
1293
+ msgid "Send email notification to administrators at low balance"
1294
+ msgstr "إرسال إشعار عبر البريد الإلكتروني إلى المسؤولين عند انخفاض الرصيد"
1295
+
1296
+ #:
1297
+ msgid "Send weekly summary to administrators"
1298
+ msgstr "إرسال ملخص أسبوعي للمسؤولين"
1299
+
1300
+ #:
1301
+ msgid "Change"
1302
+ msgstr "تغيير"
1303
+
1304
+ #:
1305
+ msgid "Approved at"
1306
+ msgstr "تمت الموافقة عليه في"
1307
+
1308
+ #:
1309
+ msgid "Log out"
1310
+ msgstr "الخروج"
1311
+
1312
+ #:
1313
+ msgid "Notifications"
1314
+ msgstr "الإشعارات"
1315
+
1316
+ #:
1317
+ msgid "Add money"
1318
+ msgstr "أضف نقود"
1319
+
1320
+ #:
1321
+ msgid "Auto-Recharge"
1322
+ msgstr "الشحن التلقائي"
1323
+
1324
+ #:
1325
+ msgid "Purchases"
1326
+ msgstr "المشتريات"
1327
+
1328
+ #:
1329
+ msgid "SMS Details"
1330
+ msgstr "تفاصيل الرسالة القصيرة"
1331
+
1332
+ #:
1333
+ msgid "Price list"
1334
+ msgstr "قائمة الاسعار"
1335
+
1336
+ #:
1337
+ msgid "SMS Notifications (or \"Bookly SMS\") is a service for notifying your customers via text messages which are sent to mobile phones."
1338
+ msgstr "إشعارات الرسائل النصية القصيرة (أو \"Bookly SMS\") هي خدمة لإبلاغ عملائك عبر الرسائل النصية التي يتم إرسالها إلى الهواتف المحمولة."
1339
+
1340
+ #:
1341
+ msgid "It is necessary to register in order to start using this service."
1342
+ msgstr "من الضروري التسجيل للبدء في استخدام هذه الخدمة."
1343
+
1344
+ #:
1345
+ msgid "After registration you will need to configure notification messages and top up your balance in order to start sending SMS."
1346
+ msgstr "بعد التسجيل ستحتاج إلى اعداد رسائل الاخطار ورفع رصيدك من أجل البدء في إرسال الرسائل القصيرة."
1347
+
1348
+ #:
1349
+ msgid "Login"
1350
+ msgstr "تسجيل الدخول"
1351
+
1352
+ #:
1353
+ msgid "Password"
1354
+ msgstr "كلمه السر"
1355
+
1356
+ #:
1357
+ msgid "Log In"
1358
+ msgstr "تسجيل الدخول"
1359
+
1360
+ #:
1361
+ msgid "Registration"
1362
+ msgstr "التسجيل"
1363
+
1364
+ #:
1365
+ msgid "Forgot password"
1366
+ msgstr "هل نسيت كلمة المرور؟"
1367
+
1368
+ #:
1369
+ msgid "Repeat password"
1370
+ msgstr "اعد كلمة السر"
1371
+
1372
+ #:
1373
+ msgid "Register"
1374
+ msgstr "تسجيل"
1375
+
1376
+ #:
1377
+ msgid "Enter code from email"
1378
+ msgstr "أدخل الرمز من البريد الإلكتروني"
1379
+
1380
+ #:
1381
+ msgid "New password"
1382
+ msgstr "كلمة السر الجديدة"
1383
+
1384
+ #:
1385
+ msgid "Repeat new password"
1386
+ msgstr "كرر كلمة السر الجديدة"
1387
+
1388
+ #:
1389
+ msgid "Next"
1390
+ msgstr "التالي"
1391
+
1392
+ #:
1393
+ msgid "Change password"
1394
+ msgstr "تغيير كلمة السر"
1395
+
1396
+ #:
1397
+ msgid "Old password"
1398
+ msgstr "كلمة السر القديمة"
1399
+
1400
+ #:
1401
+ msgid "All locations"
1402
+ msgstr "جميع المواقع"
1403
+
1404
+ #:
1405
+ msgid "No locations selected"
1406
+ msgstr "لا توجد مواقع محددة"
1407
+
1408
+ #:
1409
+ msgid "The start time must be less than the end one"
1410
+ msgstr "يجب أن يكون وقت البدء أقل من وقت النهاية"
1411
+
1412
+ #:
1413
+ msgid "The requested interval is not available"
1414
+ msgstr "الفاصل الزمني المطلوب غير متوفر"
1415
+
1416
+ #:
1417
+ msgid "Error adding the break interval"
1418
+ msgstr "خطأ في إضافة الفاصل الزمني"
1419
+
1420
+ #:
1421
+ msgid "Delete break"
1422
+ msgstr "حذف الفاصل الزمني"
1423
+
1424
+ #:
1425
+ msgid "Breaks"
1426
+ msgstr "الفواصل الزمنية"
1427
+
1428
+ #:
1429
+ msgid "Full name"
1430
+ msgstr "الاسم الكامل"
1431
+
1432
+ #:
1433
+ msgid "If this staff member requires separate login to access personal calendar, a regular WP user needs to be created for this purpose."
1434
+ msgstr "إذا كان هذا الموظف يتطلب تسجيل دخول منفصل للوصول إلى التقويم الشخصي ، فيجب إنشاء مستخدم WP عادي لهذا الغرض."
1435
+
1436
+ #:
1437
+ msgid "User with \"Administrator\" role will have access to calendars and settings of all staff members, user with another role will have access only to personal calendar and settings."
1438
+ msgstr "يمكن للمستخدم الذي يملك دور \"المسؤول\" الوصول إلى التقويمات وإعدادات جميع الموظفين ،سيكون للمستخدم دور آخر في الوصول فقط إلى التقويم وإعدادات الشخصية."
1439
+
1440
+ #:
1441
+ msgid "If you leave this field blank, this staff member will not be able to access personal calendar using WP backend."
1442
+ msgstr "إذا تركت هذا الحقل فارغًا ، فلن يتمكن هذا الموظف من الوصول إلى التقويم الشخصي باستخدام خلفية WP."
1443
+
1444
+ #:
1445
+ msgid "Select from WP users"
1446
+ msgstr "حدد من مستخدمي الورد بريس"
1447
+
1448
+ #:
1449
+ msgid "To make staff member invisible to your customers set the visibility to \"Private\"."
1450
+ msgstr "لجعل الموظف غير مرئي لعملائك ، يمكنك تعيين مستوى الرؤية إلى \"خاص\"."
1451
+
1452
+ #:
1453
+ msgid "Schedule"
1454
+ msgstr "جدول"
1455
+
1456
+ #:
1457
+ msgid "Days off"
1458
+ msgstr "أيام العطلة"
1459
+
1460
+ #:
1461
+ msgid "add break"
1462
+ msgstr "أضف استراحة"
1463
+
1464
+ #:
1465
+ msgid "Reset"
1466
+ msgstr "إعادة تعيين"
1467
+
1468
+ #:
1469
+ msgid "All fields marked with an asterisk (*) are required."
1470
+ msgstr "جميع الحقول التي تحمل علامة النجمة (*) مطلوبة."
1471
+
1472
+ #:
1473
+ msgid "Invalid email."
1474
+ msgstr "بريد إلكتروني خاطئ."
1475
+
1476
+ #:
1477
+ msgid "Error sending support request."
1478
+ msgstr "خطأ في إرسال طلب الدعم."
1479
+
1480
+ #:
1481
+ msgid "Show all notifications"
1482
+ msgstr "عرض جميع الإشعارات"
1483
+
1484
+ #:
1485
+ msgid "Mark all notifications as read"
1486
+ msgstr "اجعل جميع الإشعارات مقروءة"
1487
+
1488
+ #:
1489
+ msgid "Documentation"
1490
+ msgstr "الوثائق"
1491
+
1492
+ #:
1493
+ msgid "Need help? Contact us here."
1494
+ msgstr "تحتاج مساعدة؟ اتصل بنا هنا."
1495
+
1496
+ #:
1497
+ msgid "Feedback"
1498
+ msgstr "تقييم"
1499
+
1500
+ #:
1501
+ msgid "Leave us a message"
1502
+ msgstr "اترك لنا رسالة"
1503
+
1504
+ #:
1505
+ msgid "Your name"
1506
+ msgstr "اسمك"
1507
+
1508
+ #:
1509
+ msgid "Email address"
1510
+ msgstr "عنوان بريد الكتروني"
1511
+
1512
+ #:
1513
+ msgid "How can we help you?"
1514
+ msgstr "كيف يمكننا مساعدتك؟"
1515
+
1516
+ #:
1517
+ msgid "How likely is it that you would recommend Bookly to a friend or colleague?"
1518
+ msgstr "ما مدى احتمالية أن توصي بـ Bookly لصديق أو زميل؟"
1519
+
1520
+ #:
1521
+ msgid "What do you think should be improved?"
1522
+ msgstr "ما رأيك يجب تحسينه؟"
1523
+
1524
+ #:
1525
+ msgid "Please enter your email (optional)"
1526
+ msgstr "يرجى إدخال البريد الإلكتروني الخاص بك (اختياري)"
1527
+
1528
+ #:
1529
+ msgid "Please leave your feedback <a href=\"%s\" target=\"_blank\">here</a>."
1530
+ msgstr "يرجى ترك تعليقاتك <a href=\"%s\" target=\"_blank\"> هنا </a>."
1531
+
1532
+ #:
1533
+ msgid "Subscribe to monthly emails about Bookly improvements and new releases."
1534
+ msgstr "اشترك في رسائل البريد الإلكتروني الشهرية حول تحسينات Bookly والإصدارات الجديدة."
1535
+
1536
+ #:
1537
+ msgid "Add Bookly booking form"
1538
+ msgstr "إضافة نموذج الحجز Bookly"
1539
+
1540
+ #:
1541
+ msgid "Staff"
1542
+ msgstr "العاملين"
1543
+
1544
+ #:
1545
+ msgid "Insert"
1546
+ msgstr "إدراج"
1547
+
1548
+ #:
1549
+ msgid "Default value for category select"
1550
+ msgstr "القيمة الافتراضية للفئة حدد"
1551
+
1552
+ #:
1553
+ msgid "Select category"
1554
+ msgstr "اختر الفئة"
1555
+
1556
+ #:
1557
+ msgid "Hide this field"
1558
+ msgstr "إخفاء هذا الحقل"
1559
+
1560
+ #:
1561
+ msgid "Default value for service select"
1562
+ msgstr "القيمة الافتراضية لاختيار الخدمة"
1563
+
1564
+ #:
1565
+ msgid "Select service"
1566
+ msgstr "اختر الخدمة"
1567
+
1568
+ #:
1569
+ msgid "Please be aware that a value in this field is required in the frontend. If you choose to hide this field, please be sure to select a default value for it"
1570
+ msgstr "يرجى الانتباه إلى أن القيمة في هذا الحقل مطلوبة في الواجهة الأمامية. إذا اخترت إخفاء هذا الحقل ، فيرجى التأكد من تحديد قيمة افتراضية له"
1571
+
1572
+ #:
1573
+ msgid "Default value for employee select"
1574
+ msgstr "القيمة الافتراضية لاختيار الموظف"
1575
+
1576
+ #:
1577
+ msgid "Any"
1578
+ msgstr "أي"
1579
+
1580
+ #:
1581
+ msgid "Week days"
1582
+ msgstr "ايام الاسبوع"
1583
+
1584
+ #:
1585
+ msgid "Time range"
1586
+ msgstr "النطاق الزمني"
1587
+
1588
+ #:
1589
+ msgid "Insert Appointment Booking Form"
1590
+ msgstr "إدراج استمارة حجز موعد"
1591
+
1592
+ #:
1593
+ msgid "Show more"
1594
+ msgstr "أظهر المزيد"
1595
+
1596
+ #:
1597
+ msgid "Session error."
1598
+ msgstr "خطأ في الجلسة."
1599
+
1600
+ #:
1601
+ msgid "Form ID error."
1602
+ msgstr "خطأ في معرف الاستمارة."
1603
+
1604
+ #:
1605
+ msgid "Pay locally is not available."
1606
+ msgstr "الدفع محليًا غير متوفر."
1607
+
1608
+ #:
1609
+ msgid "Invalid gateway."
1610
+ msgstr "بوابة غير صالحة."
1611
+
1612
+ #:
1613
+ msgid "No time is available for selected criteria."
1614
+ msgstr "لا يوجد وقت متاح لمعايير مختارة."
1615
+
1616
+ #:
1617
+ msgid "Data already in use"
1618
+ msgstr "البيانات قيد الاستخدام بالفعل"
1619
+
1620
+ #:
1621
+ msgid "Page Redirection"
1622
+ msgstr "إعادة توجيه الصفحة"
1623
+
1624
+ #:
1625
+ msgid "If you are not redirected automatically, follow the <a href=\"%s\">link</a>."
1626
+ msgstr "إذا لم تتم إعادة توجيهك تلقائيًا ، فاتبع <a href=\"%s\"> الرابط </a>."
1627
+
1628
+ #:
1629
+ msgid "Loading..."
1630
+ msgstr "جار التحميل..."
1631
+
1632
+ #:
1633
+ msgid "Error"
1634
+ msgstr "خطأ"
1635
+
1636
+ #:
1637
+ msgid " and %d more item"
1638
+ msgid_plural " and %d more items"
1639
+ msgstr[0] "و%d عنصر آخر"
1640
+ msgstr[1] "و%d عنصر آخر"
1641
+ msgstr[2] "و%d من العناصر الأخرى"
1642
+ msgstr[3] "و%d من العناصر الأخرى"
1643
+ msgstr[4] "و%d من العناصر الأخرى"
1644
+ msgstr[5] "و%d من العناصر الأخرى"
1645
+
1646
+ #:
1647
+ msgid "Your appointment information"
1648
+ msgstr "معلومات موعدك"
1649
+
1650
+ #:
1651
+ msgid "Dear {client_name}.\n"
1652
+ "\n"
1653
+ "This is a confirmation that you have booked {service_name}.\n"
1654
+ "\n"
1655
+ "We are waiting you at {company_address} on {appointment_date} at {appointment_time}.\n"
1656
+ "\n"
1657
+ "Thank you for choosing our company.\n"
1658
+ "\n"
1659
+ "{company_name}\n"
1660
+ "{company_phone}\n"
1661
+ "{company_website}"
1662
+ msgstr "عزيزي {client_name}.\n"
1663
+ "\n"
1664
+ "هذا تأكيد بأنك قد حجزت {service_name}.\n"
1665
+ "\n"
1666
+ "نحن في انتظارك في {company_address} في {date_date} في {appointment_time}.\n"
1667
+ "\n"
1668
+ "شكرا لكم لاختيار شركتنا.\n"
1669
+ "\n"
1670
+ "{company_name}\n"
1671
+ "{company_phone}\n"
1672
+ "{company_website}"
1673
+
1674
+ #:
1675
+ msgid "Dear {client_name}.\n"
1676
+ "\n"
1677
+ "This is a confirmation that you have booked the following items:\n"
1678
+ "\n"
1679
+ "{cart_info}\n"
1680
+ "\n"
1681
+ "Thank you for choosing our company.\n"
1682
+ "\n"
1683
+ "{company_name}\n"
1684
+ "{company_phone}\n"
1685
+ "{company_website}"
1686
+ msgstr "عزيزي {client_name}.\n"
1687
+ "\n"
1688
+ "هذا تأكيد على أنك قمت بحجز العناصر التالية:\n"
1689
+ "\n"
1690
+ "{cart_info}\n"
1691
+ "\n"
1692
+ "شكرا لكم لاختيار شركتنا.\n"
1693
+ "\n"
1694
+ "{company_name}\n"
1695
+ "{company_phone}\n"
1696
+ "{company_website}"
1697
+
1698
+ #:
1699
+ msgid "New booking information"
1700
+ msgstr "معلومات الحجز الجديدة"
1701
+
1702
+ #:
1703
+ msgid "Hello.\n"
1704
+ "\n"
1705
+ "You have a new booking.\n"
1706
+ "\n"
1707
+ "Service: {service_name}\n"
1708
+ "Date: {appointment_date}\n"
1709
+ "Time: {appointment_time}\n"
1710
+ "Client name: {client_name}\n"
1711
+ "Client phone: {client_phone}\n"
1712
+ "Client email: {client_email}"
1713
+ msgstr "مرحبا.\n"
1714
+ "\n"
1715
+ "لديك حجز جديد.\n"
1716
+ "\n"
1717
+ "الخدمة: {service_name}\n"
1718
+ "التاريخ: {appointment_date}\n"
1719
+ "الوقت: {appointment_time}\n"
1720
+ "اسم العميل: {client_name}\n"
1721
+ "هاتف العميل: {client_phone}\n"
1722
+ "البريد الإلكتروني للعميل: {client_email}"
1723
+
1724
+ #:
1725
+ msgid "Booking cancellation"
1726
+ msgstr "الغاء الحجز"
1727
+
1728
+ #:
1729
+ msgid "Booking rejection"
1730
+ msgstr "رفض الحجز"
1731
+
1732
+ #:
1733
+ msgid "Dear {client_name}.\n"
1734
+ "\n"
1735
+ "Your booking of {service_name} on {appointment_date} at {appointment_time} has been rejected.\n"
1736
+ "\n"
1737
+ "Reason: {cancellation_reason}\n"
1738
+ "\n"
1739
+ "Thank you for choosing our company.\n"
1740
+ "\n"
1741
+ "{company_name}\n"
1742
+ "{company_phone}\n"
1743
+ "{company_website}"
1744
+ msgstr "عزيزي {client_name}.\n"
1745
+ "\n"
1746
+ "تم رفض حجز {service_name} في {date_date} في {appointment_date}.\n"
1747
+ "\n"
1748
+ "السبب: {cancellation_reason}\n"
1749
+ "\n"
1750
+ "شكرا لكم لاختيار شركتنا.\n"
1751
+ "\n"
1752
+ "{company_name}\n"
1753
+ "{company_phone}\n"
1754
+ "{company_website}"
1755
+
1756
+ #:
1757
+ msgid "Hello.\n"
1758
+ "\n"
1759
+ "The following booking has been rejected.\n"
1760
+ "\n"
1761
+ "Reason: {cancellation_reason}\n"
1762
+ "\n"
1763
+ "Service: {service_name}\n"
1764
+ "Date: {appointment_date}\n"
1765
+ "Time: {appointment_time}\n"
1766
+ "Client name: {client_name}\n"
1767
+ "Client phone: {client_phone}\n"
1768
+ "Client email: {client_email}"
1769
+ msgstr "مرحبا.\n"
1770
+ "\n"
1771
+ "تم رفض الحجز التالي.\n"
1772
+ "\n"
1773
+ "السبب: {cancellation_reason}\n"
1774
+ "\n"
1775
+ "الخدمة: {service_name}\n"
1776
+ "التاريخ: {appointment_date}\n"
1777
+ "الوقت: {appointment_time}\n"
1778
+ "اسم العميل: {client_name}\n"
1779
+ "هاتف العميل: {client_phone}\n"
1780
+ "البريد الإلكتروني للعميل: {client_email}"
1781
+
1782
+ #:
1783
+ msgid "Hello.\n"
1784
+ "\n"
1785
+ "An account was created for you at {site_address}\n"
1786
+ "\n"
1787
+ "Your user details:\n"
1788
+ "user: {new_username}\n"
1789
+ "password: {new_password}\n"
1790
+ "\n"
1791
+ "Thanks."
1792
+ msgstr "مرحبا.\n"
1793
+ "\n"
1794
+ "تم إنشاء حساب لك في {site_address}\n"
1795
+ "\n"
1796
+ "تفاصيل المستخدم الخاصة بك:\n"
1797
+ "المستخدم: {new username}\n"
1798
+ "كلمة المرور: {new_password}\n"
1799
+ "\n"
1800
+ "شكرا."
1801
+
1802
+ #:
1803
+ msgid "Happy Birthday!"
1804
+ msgstr "عيد ميلاد سعيد!"
1805
+
1806
+ #:
1807
+ msgid "Dear {client_name},\n"
1808
+ "\n"
1809
+ "Happy birthday!\n"
1810
+ "We wish you all the best.\n"
1811
+ "May you and your family be happy and healthy.\n"
1812
+ "\n"
1813
+ "Thank you for choosing our company.\n"
1814
+ "\n"
1815
+ "{company_name}\n"
1816
+ "{company_phone}\n"
1817
+ "{company_website}"
1818
+ msgstr "عزيزي {client_name} ،\n"
1819
+ "\n"
1820
+ "عيد مولد سعيد!\n"
1821
+ "نتمنى لكم كل التوفيق.\n"
1822
+ "نرجو أن تكون أنت وعائلتك سعيدًا وصحيًا.\n"
1823
+ "\n"
1824
+ "شكرا لكم لاختيار شركتنا.\n"
1825
+ "\n"
1826
+ "{company_name}\n"
1827
+ "{company_phone}\n"
1828
+ "{company_website}"
1829
+
1830
+ #:
1831
+ msgid "Dear {client_name}.\n"
1832
+ "Your booking of {service_name} on {appointment_date} at {appointment_time} has been rejected.\n"
1833
+ "Reason: {cancellation_reason}\n"
1834
+ "Thank you for choosing our company.\n"
1835
+ "{company_name}\n"
1836
+ "{company_phone}\n"
1837
+ "{company_website}"
1838
+ msgstr "عزيزي {client_name}.\n"
1839
+ "تم رفض حجز {service_name} في {date_date} في {appointment_date}.\n"
1840
+ "السبب: {cancellation_reason}\n"
1841
+ "شكرا لكم لاختيار شركتنا.\n"
1842
+ "{company_name}\n"
1843
+ "{company_phone}\n"
1844
+ "{company_website}"
1845
+
1846
+ #:
1847
+ msgid "Hello.\n"
1848
+ "The following booking has been rejected.\n"
1849
+ "Reason: {cancellation_reason}\n"
1850
+ "Service: {service_name}\n"
1851
+ "Date: {appointment_date}\n"
1852
+ "Time: {appointment_time}\n"
1853
+ "Client name: {client_name}\n"
1854
+ "Client phone: {client_phone}\n"
1855
+ "Client email: {client_email}"
1856
+ msgstr "مرحبا.\n"
1857
+ "تم رفض الحجز التالي.\n"
1858
+ "السبب: {cancellation_reason}\n"
1859
+ "الخدمة: {service_name}\n"
1860
+ "التاريخ: {appointment_date}\n"
1861
+ "الوقت: {appointment_time}\n"
1862
+ "اسم العميل: {client_name}\n"
1863
+ "هاتف العميل: {client_phone}\n"
1864
+ "البريد الإلكتروني للعميل: {client_email}"
1865
+
1866
+ #:
1867
+ msgid "Hello.\n"
1868
+ "An account was created for you at {site_address}\n"
1869
+ "Your user details:\n"
1870
+ "user: {new_username}\n"
1871
+ "password: {new_password}\n"
1872
+ "\n"
1873
+ "Thanks."
1874
+ msgstr "مرحبا.\n"
1875
+ "تم إنشاء حساب لك في {site_address}\n"
1876
+ "تفاصيل المستخدم الخاصة بك:\n"
1877
+ "المستخدم: {new username}\n"
1878
+ "كلمة المرور: {new_password}\n"
1879
+ "شكرا."
1880
+
1881
+ #:
1882
+ msgid "Dear {client_name},\n"
1883
+ "Happy birthday!\n"
1884
+ "We wish you all the best.\n"
1885
+ "May you and your family be happy and healthy.\n"
1886
+ "Thank you for choosing our company.\n"
1887
+ "{company_name}\n"
1888
+ "{company_phone}\n"
1889
+ "{company_website}"
1890
+ msgstr "عزيزي {client_name} ،\n"
1891
+ "عيد مولد سعيد!\n"
1892
+ "نتمنى لكم كل التوفيق.\n"
1893
+ "نرجو أن تكون أنت وعائلتك سعيدًا وصحيًا.\n"
1894
+ "شكرا لكم لاختيار شركتنا.\n"
1895
+ "{company_name}\n"
1896
+ "{company_phone}\n"
1897
+ "{company_website}"
1898
+
1899
+ #:
1900
+ msgid "Back"
1901
+ msgstr "الرجوع"
1902
+
1903
+ #:
1904
+ msgid "Book More"
1905
+ msgstr "احجز اكثر"
1906
+
1907
+ #:
1908
+ msgid "Below you can find a list of services selected for booking.\n"
1909
+ "Click BOOK MORE if you want to add more services."
1910
+ msgstr "أدناه يمكنك العثور على قائمة من الخدمات المختارة للحجز.\n"
1911
+ "انقر على احجز المزيد إذا كنت ترغب في إضافة المزيد من الخدمات."
1912
+
1913
+ #:
1914
+ msgid "Thank you! Your booking is complete. An email with details of your booking has been sent to you."
1915
+ msgstr "شكرا لكم! تم اكتمال الحجز الخاص بك. تم إرسال بريد إلكتروني مع تفاصيل الحجز الخاص بك."
1916
+
1917
+ #:
1918
+ msgid "You selected a booking for {service_name} by {staff_name} at {service_time} on {service_date}. The price for the service is {service_price}.\n"
1919
+ "Please provide your details in the form below to proceed with booking."
1920
+ msgstr "لقد حددت حجزًا لـ {service_name} بواسطة {staff_name} في {service_time} في {service_date}. سعر الخدمة هو {service_price}.\n"
1921
+ "يرجى تقديم التفاصيل الخاصة بك في النموذج أدناه للمضي قدما في الحجز."
1922
+
1923
+ #:
1924
+ msgid "Please tell us how you would like to pay: "
1925
+ msgstr "من فضلك أخبرنا كيف ترغب في الدفع:"
1926
+
1927
+ #:
1928
+ msgid "Please select service: "
1929
+ msgstr "يرجى اختيار الخدمة:"
1930
+
1931
+ #:
1932
+ msgid "Below you can find a list of available time slots for {service_name} by {staff_name}.\n"
1933
+ "Click on a time slot to proceed with booking."
1934
+ msgstr "في ما يلي يمكنك العثور على قائمة من الفترات الزمنية المتاحة لـ {service_name} بواسطة {staff_name}.\n"
1935
+ "انقر على خانة الوقت للمضي قدما في الحجز."
1936
+
1937
+ #:
1938
+ msgid "Card Security Code"
1939
+ msgstr "رمز أمان البطاقة"
1940
+
1941
+ #:
1942
+ msgid "Expiration Date"
1943
+ msgstr "تاريخ إنتهاء الصلاحية"
1944
+
1945
+ #:
1946
+ msgid "Credit Card Number"
1947
+ msgstr "رقم بطاقه الائتمان"
1948
+
1949
+ #:
1950
+ msgid "Coupon"
1951
+ msgstr "كوبون"
1952
+
1953
+ #:
1954
+ msgid "Employee"
1955
+ msgstr "موظف"
1956
+
1957
+ #:
1958
+ msgid "Finish by"
1959
+ msgstr "الانتهاء من قبل"
1960
+
1961
+ #:
1962
+ msgid "I will pay now with Credit Card"
1963
+ msgstr "سوف أدفع الآن باستخدام بطاقة الائتمان"
1964
+
1965
+ #:
1966
+ msgid "I will pay locally"
1967
+ msgstr "سوف أدفع محلياً"
1968
+
1969
+ #:
1970
+ msgid "I will pay now with Mollie"
1971
+ msgstr "سوف أدفع الآن باستخدام مولي"
1972
+
1973
+ #:
1974
+ msgid "I will pay now with PayPal"
1975
+ msgstr "سوف أدفع الآن باستخدام PayPal"
1976
+
1977
+ #:
1978
+ msgid "I'm available on or after"
1979
+ msgstr "أنا متاح في أو بعد"
1980
+
1981
+ #:
1982
+ msgid "Start from"
1983
+ msgstr "يبدأ من"
1984
+
1985
+ #:
1986
+ msgid "Please tell us your email"
1987
+ msgstr "من فضلك أخبرنا عن البريد الإلكتروني الخاص بك"
1988
+
1989
+ #:
1990
+ msgid "Please select an employee"
1991
+ msgstr "يرجى اختيار موظف"
1992
+
1993
+ #:
1994
+ msgid "Please tell us your name"
1995
+ msgstr "من فضلك، أخبرنا عن اسمك"
1996
+
1997
+ #:
1998
+ msgid "Please tell us your first name"
1999
+ msgstr "من فضلك، أخبرنا عن اسمك الأول"
2000
+
2001
+ #:
2002
+ msgid "Please tell us your last name"
2003
+ msgstr "من فضلك، أخبرنا عن اسمك الأخير"
2004
+
2005
+ #:
2006
+ msgid "Please tell us your phone"
2007
+ msgstr "من فضلك، أخبرنا هاتفك"
2008
+
2009
+ #:
2010
+ msgid "The selected time is not available anymore. Please, choose another time slot."
2011
+ msgstr "الوقت المختار غير متوفر بعد الآن. من فضلك، اختار فترة زمنية أخرى."
2012
+
2013
+ #:
2014
+ msgid "The highlighted time is not available anymore. Please, choose another time slot."
2015
+ msgstr "الوقت المحدد غير متوفر بعد الآن. من فضلك، اختار فترة زمنية أخرى."
2016
+
2017
+ #:
2018
+ msgid "Done"
2019
+ msgstr "تم"
2020
+
2021
+ #:
2022
+ msgid "Signed up"
2023
+ msgstr "تم تسجيل الدخول"
2024
+
2025
+ #:
2026
+ msgid "Capacity"
2027
+ msgstr "السعه"
2028
+
2029
+ #:
2030
+ msgid "Appointment"
2031
+ msgstr "الموعد"
2032
+
2033
+ #:
2034
+ msgid "sent to our system"
2035
+ msgstr "تم ارسلها الى نظامنا"
2036
+
2037
+ #:
2038
+ msgid "more"
2039
+ msgstr "أكثر"
2040
+
2041
+ #:
2042
+ msgid "less"
2043
+ msgstr "أقل"
2044
+
2045
+ #:
2046
+ msgid "Bookly SMS weekly summary"
2047
+ msgstr "Bookly SMS موجز الأسبوع"
2048
+
2049
+ #:
2050
+ msgid "Your don't have enough Bookly SMS credits to send this message. Please add funds to your balance and try again."
2051
+ msgstr "ليس لديك ما يكفي من أرصدة Bookly SMS لإرسال هذه الرسالة. يرجى إضافة الأموال إلى رصيدك والمحاولة مرة أخرى."
2052
+
2053
+ #:
2054
+ msgid "Failed to send SMS."
2055
+ msgstr "فشل في إرسال الرسائل القصيرة."
2056
+
2057
+ #:
2058
+ msgid "Phone number is empty."
2059
+ msgstr "رقم الهاتف فارغ."
2060
+
2061
+ #:
2062
+ msgid "Queued"
2063
+ msgstr "في قائمة الانتظار"
2064
+
2065
+ #:
2066
+ msgid "Out of credit"
2067
+ msgstr "خارج من الائتمان"
2068
+
2069
+ #:
2070
+ msgid "Country out of service"
2071
+ msgstr "البلد خارج الخدمة"
2072
+
2073
+ #:
2074
+ msgid "Sending"
2075
+ msgstr "إرسال"
2076
+
2077
+ #:
2078
+ msgid "Sent"
2079
+ msgstr "أرسلت"
2080
+
2081
+ #:
2082
+ msgid "Delivered"
2083
+ msgstr "تم التوصيل"
2084
+
2085
+ #:
2086
+ msgid "Failed"
2087
+ msgstr "فشل"
2088
+
2089
+ #:
2090
+ msgid "Undelivered"
2091
+ msgstr "لم يتم الاستلام"
2092
+
2093
+ #:
2094
+ msgid "Default"
2095
+ msgstr "افتراضي"
2096
+
2097
+ #:
2098
+ msgid "Declined"
2099
+ msgstr "رفض"
2100
+
2101
+ #:
2102
+ msgid "Cancelled"
2103
+ msgstr "ألغيت"
2104
+
2105
+ #:
2106
+ msgid "Error connecting to server."
2107
+ msgstr "خطأ في الاتصال بالسيرفر."
2108
+
2109
+ #:
2110
+ msgid "Dear Bookly SMS customer.\n"
2111
+ "We would like to notify you that your Bookly SMS balance fell lower than 5 USD. To use our service without interruptions please recharge your balance by visiting Bookly SMS page <a href='%s'>here</a>.\n"
2112
+ "\n"
2113
+ "If you want to stop receiving these notifications, please update your settings <a href='%s'>here</a>."
2114
+ msgstr "عزيزي العميل SMS Bookly.\n"
2115
+ "نود أن نخطرك بأن رصيد SMS Bookly الخاص بك قد انخفض إلى أقل من 5 دولارات أمريكية. لاستخدام خدمتنا دون انقطاع ، يرجى إعادة شحن رصيدك عن طريق زيارة صفحة Bookly SMS <a href='%s'> هنا </a>.\n"
2116
+ "\n"
2117
+ "إذا كنت تريد إيقاف تلقي هذه الإشعارات ، فيرجى تحديث الإعدادات <a href='%s'> هنا </a>."
2118
+
2119
+ #:
2120
+ msgid "Bookly SMS - Low Balance"
2121
+ msgstr "SMS Bookly - رصيد منخفض"
2122
+
2123
+ #:
2124
+ msgid "Empty password."
2125
+ msgstr "كلمة السر فارغة."
2126
+
2127
+ #:
2128
+ msgid "Incorrect password."
2129
+ msgstr "كلمة سر غير صحيحة."
2130
+
2131
+ #:
2132
+ msgid "Incorrect recovery code."
2133
+ msgstr "رمز الاسترداد غير صحيح."
2134
+
2135
+ #:
2136
+ msgid "Incorrect email or password."
2137
+ msgstr "البريد الإلكتروني أو كلمة السرغير صحيحة."
2138
+
2139
+ #:
2140
+ msgid "Incorrect sender ID"
2141
+ msgstr "رقم تعريف المرسل غير صحيح"
2142
+
2143
+ #:
2144
+ msgid "Pending sender ID already exists."
2145
+ msgstr "رقم تعريف المرسل موجود بالفعل."
2146
+
2147
+ #:
2148
+ msgid "Recovery code expired."
2149
+ msgstr "رمز الاسترداد انتهت صلاحيته."
2150
+
2151
+ #:
2152
+ msgid "Error sending email."
2153
+ msgstr "خطأ في إرسال البريد الإلكتروني."
2154
+
2155
+ #:
2156
+ msgid "User not found."
2157
+ msgstr "المستخدم ليس موجود."
2158
+
2159
+ #:
2160
+ msgid "Email already in use."
2161
+ msgstr "البريد الالكتروني قيد الاستخدام."
2162
+
2163
+ #:
2164
+ msgid "Invalid email"
2165
+ msgstr "بريد إلكتروني خاطئ"
2166
+
2167
+ #:
2168
+ msgid "This email is already in use"
2169
+ msgstr "هذا البريد الالكتروني مستخدم من قبل"
2170
+
2171
+ #:
2172
+ msgid "\"%s\" is too long (%d characters max)."
2173
+ msgstr "\"%s\" طويل جدًا (%d حرف كحد أقصى)."
2174
+
2175
+ #:
2176
+ msgid "Invalid number"
2177
+ msgstr "رقم غير صحيح"
2178
+
2179
+ #:
2180
+ msgid "Invalid date"
2181
+ msgstr "تاريخ غير صحيح"
2182
+
2183
+ #:
2184
+ msgid "Invalid time"
2185
+ msgstr "وقت غير صحيح"
2186
+
2187
+ #:
2188
+ msgid "Your %s: %s is already associated with another %s.<br/>Press Update if we should update your user data, or press Cancel to edit entered data."
2189
+ msgstr "خاصة بك %s% :s مرتبط بالفعل بـ %s أخرى. <br/> اضغط على تحديث إذا كان يجب تحديث بيانات المستخدم الخاصة بك ، أو اضغط على إلغاء لتعديل البيانات المدخلة."
2190
+
2191
+ #:
2192
+ msgid "Rejected"
2193
+ msgstr "مرفوض"
2194
+
2195
+ #:
2196
+ msgid "Notification to customer about approved appointment"
2197
+ msgstr "إخطار العميل بشأن الموعد المعتمد"
2198
+
2199
+ #:
2200
+ msgid "Notification to customer about approved appointments"
2201
+ msgstr "إخطار العميل بشأن المواعيد المعتمدة"
2202
+
2203
+ #:
2204
+ msgid "Notification to customer about cancelled appointment"
2205
+ msgstr "إخطار العميل بشأن الموعد الملغاه"
2206
+
2207
+ #:
2208
+ msgid "Notification to customer about rejected appointment"
2209
+ msgstr "إخطار العميل بشأن الموعد المرفوض"
2210
+
2211
+ #:
2212
+ msgid "Follow-up message in the same day after appointment (requires cron setup)"
2213
+ msgstr "رسالة المتابعة في نفس اليوم بعد الموعد (يتطلب إعداد cron)"
2214
+
2215
+ #:
2216
+ msgid "Notification to customer about their WordPress user login details"
2217
+ msgstr "إخطار العميل عن تفاصيل تسجيل دخول مستخدم WordPress الخاصة به"
2218
+
2219
+ #:
2220
+ msgid "Notification to customer about pending appointment"
2221
+ msgstr "إخطار العميل بشأن الموعد المعلق"
2222
+
2223
+ #:
2224
+ msgid "Evening reminder to customer about next day appointment (requires cron setup)"
2225
+ msgstr "تذكير مسائي للعملاء حول موعد اليوم التالي (يتطلب إعداد cron)"
2226
+
2227
+ #:
2228
+ msgid "1st reminder to customer about upcoming appointment (requires cron setup)"
2229
+ msgstr "أول تذكير للعميل حول الموعد المرتقب (يتطلب إعداد cron)"
2230
+
2231
+ #:
2232
+ msgid "2nd reminder to customer about upcoming appointment (requires cron setup)"
2233
+ msgstr "التذكير الثاني للعميل بشأن الموعد القادم (يتطلب إعداد cron)"
2234
+
2235
+ #:
2236
+ msgid "3rd reminder to customer about upcoming appointment (requires cron setup)"
2237
+ msgstr "التذكير الثالث للعميل بشأن الموعد القادم (يتطلب إعداد cron)"
2238
+
2239
+ #:
2240
+ msgid "Customer birthday greeting (requires cron setup)"
2241
+ msgstr "تحية عيد ميلاد العميل (يتطلب إعداد cron)"
2242
+
2243
+ #:
2244
+ msgid "Evening notification with the next day agenda to staff member (requires cron setup)"
2245
+ msgstr "الإخطار المسائي مع أجندة اليوم التالي للموظف (يتطلب إعداد cron)"
2246
+
2247
+ #:
2248
+ msgid "Notification to staff member about approved appointment"
2249
+ msgstr "إخطار الموظف بشأن التعيين المعتمد"
2250
+
2251
+ #:
2252
+ msgid "Notification to staff member about cancelled appointment"
2253
+ msgstr "إخطار الموظف حول الموعد الملغي"
2254
+
2255
+ #:
2256
+ msgid "Notification to staff member about rejected appointment"
2257
+ msgstr "إخطار الموظف بشأن التعيين المرفوض"
2258
+
2259
+ #:
2260
+ msgid "Notification to staff member about pending appointment"
2261
+ msgstr "إخطار الموظف بشأن التعيين المعلق"
2262
+
2263
+ #:
2264
+ msgid "Test message"
2265
+ msgstr "رسالة اختبار"
2266
+
2267
+ #:
2268
+ msgid "Local"
2269
+ msgstr "محلي"
2270
+
2271
+ #:
2272
+ msgid "Completed"
2273
+ msgstr "منجز"
2274
+
2275
+ #:
2276
+ msgid "%d week"
2277
+ msgid_plural "%d weeks"
2278
+ msgstr[0] "%d أسبوع"
2279
+ msgstr[1] "%d أسبوع"
2280
+ msgstr[2] "%d أسابيع"
2281
+ msgstr[3] "%d أسابيع"
2282
+ msgstr[4] "%d أسابيع"
2283
+ msgstr[5] "%d أسابيع"
2284
+
2285
+ #:
2286
+ msgid "%d h"
2287
+ msgstr "%d ساعة"
2288
+
2289
+ #:
2290
+ msgid "%d min"
2291
+ msgstr "%d دقيقة"
2292
+
2293
+ #:
2294
+ msgid "Form view in case of successful booking"
2295
+ msgstr "عرض الاستمارة في حالة الحجز الناجح"
2296
+
2297
+ #:
2298
+ msgid "Form view in case the number of bookings exceeds the limit"
2299
+ msgstr "عرض الاستمارة في حال تجاوز عدد الحجوزات الحد"
2300
+
2301
+ #:
2302
+ msgid "Form view in case of payment has been accepted for processing"
2303
+ msgstr "عرض الاستمارة في حالة قبول الدفع للمعالجة"
2304
+
2305
+ #:
2306
+ msgid "No result found"
2307
+ msgstr "لم يتم العثور على نتائج"
2308
+
2309
+ #:
2310
+ msgid "Package"
2311
+ msgstr "باقة"
2312
+
2313
+ #:
2314
+ msgid "Package schedule"
2315
+ msgstr "جدول الباقات"
2316
+
2317
+ #:
2318
+ msgid "messages"
2319
+ msgstr "الرسائل"
2320
+
2321
+ #:
2322
+ msgid "First"
2323
+ msgstr "الأول"
2324
+
2325
+ #:
2326
+ msgid "Previous"
2327
+ msgstr "السابق"
2328
+
2329
+ #:
2330
+ msgid "Last"
2331
+ msgstr "الاخير"
2332
+
2333
+ #:
2334
+ msgid "URL of reject appointment link (to use inside <a> tag)"
2335
+ msgstr "رابط عنوان URL لرفض الموعد (لاستخدامه داخل علامة <a>)"
2336
+
2337
+ #:
2338
+ msgid "Custom notification"
2339
+ msgstr "إشعار مخصص"
2340
+
2341
+ #:
2342
+ msgid "Customer's birthday"
2343
+ msgstr "عيد ميلاد العميل"
2344
+
2345
+ #:
2346
+ msgid "days"
2347
+ msgstr "أيام"
2348
+
2349
+ #:
2350
+ msgid "after"
2351
+ msgstr "بعد"
2352
+
2353
+ #:
2354
+ msgid "at"
2355
+ msgstr "في"
2356
+
2357
+ #:
2358
+ msgid "before"
2359
+ msgstr "قبل"
2360
+
2361
+ #:
2362
+ msgid "Custom"
2363
+ msgstr "مخصص"
2364
+
2365
+ #:
2366
+ msgid "Start and end times of the appointment"
2367
+ msgstr "بداية ونهاية أوقات الموعد"
2368
+
2369
+ #:
2370
+ ms