@charset "UTF-8";
/* ----------------------------------------------------------------------------
 * Easy!Appointments - Online Appointment Scheduler
 *
 * @package     EasyAppointments
 * @author      A.Tselegidis <alextselegidis@gmail.com>
 * @copyright   Copyright (c) Alex Tselegidis
 * @license     https://opensource.org/licenses/GPL-3.0 - GPLv3
 * @link        https://easyappointments.org
 * @since       v1.5.0
 * ---------------------------------------------------------------------------- */
html {
  height: 100%;
}

select {
  -webkit-appearance: none;
}

@-moz-document url-prefix() {
  body .checkbox input[type=checkbox] {
    float: left;
  }
}
body .ui-widget {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 1.1em;
}

body .ui-widget-overlay {
  background: #000 50% 50% repeat-x;
  opacity: 0.5;
  filter: Alpha(Opacity=50);
}

body .ui-dialog .ui-dialog-titlebar-close {
  display: none;
}

body .ui-draggable .ui-dialog-titlebar {
  background: #429a82;
  color: #fff;
  font-size: 1.2em;
  font-weight: lighter;
  padding: 12px 10px;
  margin-bottom: 10px;
  border: none;
  border-top-left-radius: 0.25rem;
  border-top-right-radius: 0.25rem;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}

body .ui-dialog {
  padding: 0;
  z-index: 2000;
  border: none !important;
  box-shadow: 0 0 10px #333;
}

body .ui-dialog .ui-dialog-buttonpane {
  padding: 0.3em 1em 0.3em 0.4em;
  border: none;
}

body .ui-button .ui-icon,
body .ui-button:hover .ui-icon {
  background-image: url("../ext/jquery-ui/images/ui-icons_222222_256x240.png");
}

body .ui-dialog #error-technical {
  max-width: 500px;
}

body .ui-widget.ui-widget-content {
  border: 1px solid #429a82;
  padding: 0;
}

body .ui-dialog-buttons {
  border-radius: 0.25rem;
}

body #ui-datepicker-div {
  margin-top: 5px;
  z-index: 1100 !important;
}

body .ui-datepicker {
  width: auto;
  max-width: 288px;
}

body .ui-datepicker .ui-widget-header {
  border: none;
  background: #429a82;
  border-radius: 0;
}

body .ui-datepicker .ui-widget-header .ui-icon {
  background-image: url("../vendor/jquery-ui-dist/images/ui-icons_ffffff_256x240.png");
}

body .ui-datepicker .ui-datepicker-title {
  color: white;
  padding: 8px 5px;
}

body .ui-datepicker th {
  background: #429a82;
  color: #fff;
}

body .ui-datepicker tbody tr:first-child td {
  margin-top: 5px;
}

body .ui-datepicker td a,
body .ui-datepicker td span {
  border: none !important;
  background: none !important;
  color: #1a865f !important;
  text-align: center !important;
  width: 32px;
  height: 32px;
  line-height: 2;
}

html body .ui-datepicker td a.ui-state-active {
  color: #fff !important;
  font-weight: bold !important;
  background: #429a82 !important;
  border-radius: 50px;
  width: 24px;
  height: 24px;
  line-height: 1.2;
  margin: 4px;
}

body .ui-datepicker td a.ui-state-highlight {
  background: #80e3ad !important;
  border-radius: 67px;
  color: #fff !important;
  width: 24px;
  height: 24px;
  line-height: 1.2;
  margin: 4px;
}

body .ui-datepicker .ui-datepicker-prev-hover {
  top: 2px !important;
  left: 2px !important;
  background: #80e1ac;
  border-color: #80e1ac;
  border-radius: 0;
  cursor: pointer;
}

body .ui-datepicker .ui-datepicker-next-hover {
  top: 2px !important;
  right: 2px !important;
  background: #80e1ac;
  border-color: #80e1ac;
  border-radius: 0;
  cursor: pointer;
}

body .ui-datepicker .ui-slider-handle {
  border-radius: 0;
  border-color: #429a82;
  background-color: #429a82;
}

body .ui-priority-primary,
body .ui-widget-content .ui-priority-primary,
body .ui-widget-header .ui-priority-primary {
  font-weight: normal;
}

body .ui-widget input,
.ui-widget select,
body .ui-widget textarea,
body .ui-widget button {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 1rem;
}

body .ui-datepicker .ui-datepicker-buttonpane button {
  padding: 6px 16px;
}

.breaks tr:hover td {
  background: #ffffc2 !important;
}

.working-plan td {
  vertical-align: middle;
}

.breaks td {
  vertical-align: middle;
}

li.language {
  cursor: pointer;
}

li.language:hover {
  color: #005580;
}

#select-language {
  cursor: pointer;
  display: inline-block;
  padding: 5px;
}

#language-list {
  list-style: none;
  padding-left: 0;
  max-height: 500px;
  overflow-y: auto;
}

/* JQUERY UI DATETIME PICKER ADDON
   ------------------------------------------------------------------------- */
.ui-timepicker-div .ui-widget-header {
  margin-bottom: 8px;
}

.ui-timepicker-div dl {
  text-align: left;
}

.ui-timepicker-div dl dt {
  float: left;
  clear: left;
  padding: 0 0 0 5px;
}

.ui-timepicker-div dl dd {
  margin: 0 10px 10px 40%;
}

.ui-timepicker-div dl dd.ui_tpicker_time {
  margin-bottom: 4px;
}

.ui-timepicker-div dl dd.ui_tpicker_hour,
.ui-timepicker-div dl dd.ui_tpicker_minute {
  padding-top: 8px;
}

.ui-timepicker-div td {
  font-size: 90%;
}

.ui-tpicker-grid-label {
  background: none;
  border: none;
  margin: 0;
  padding: 0;
}

.ui-timepicker-div .ui_tpicker_unit_hide {
  display: none;
}

.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input {
  background: none;
  color: inherit;
  border: none;
  outline: none;
  width: 95%;
}

.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input:focus {
  border-bottom-color: #aaa;
}

.ui-timepicker-rtl {
  direction: rtl;
}

.ui-timepicker-rtl dl {
  text-align: right;
  padding: 0 5px 0 0;
}

.ui-timepicker-rtl dl dt {
  float: right;
  clear: right;
}

.ui-timepicker-rtl dl dd {
  margin: 0 40% 10px 10px;
}

/* Shortened version style */
.ui-timepicker-div.ui-timepicker-oneLine {
  padding-right: 2px;
}

.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time,
.ui-timepicker-div.ui-timepicker-oneLine dt {
  display: none;
}

.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time_label {
  display: block;
  padding-top: 2px;
}

.ui-timepicker-div.ui-timepicker-oneLine dl {
  text-align: right;
}

.ui-timepicker-div.ui-timepicker-oneLine dl dd,
.ui-timepicker-div.ui-timepicker-oneLine dl dd > div {
  display: inline-block;
  margin: 0;
}

.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_minute:before,
.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_second:before {
  content: ":";
  display: inline-block;
}

.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_millisec:before,
.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_microsec:before {
  content: ".";
  display: inline-block;
}

.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide,
.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide:before {
  display: none;
}

/* LOADING SPINNER
   ------------------------------------------------------------------------- */
.is-loading {
  position: relative;
}

.is-loading:before,
.is-loading:after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
}

.animation:after {
  width: 60px;
  height: 60px;
  margin: -25px 0 0 -25px;
  border: 5px solid rgba(0, 0, 0, 0.4);
  border-radius: 50px;
}

.animation:after {
  border-bottom-color: transparent;
  animation: spin 1s infinite linear;
}

@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
@keyframes spin-reverse {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(-360deg);
  }
}
.any-element {
  width: 60px;
  height: 60px;
  position: fixed;
  left: 50vw;
  top: 50vh;
  margin-left: -30px;
  margin-bottom: -30px;
}

#message-box pre,
#message-box .card {
  max-height: 250px;
  max-width: 500px;
}

body .popover {
  max-width: 430px;
}

body .popover-body strong {
  min-width: 90px;
  display: inline-block;
}

body .popover-body button {
  font-size: 1em;
  box-sizing: border-box;
  margin: 0;
  height: 2.1em;
  padding: 0 0.6em;
}

body .popover-body a {
  margin-right: 5px;
}

.has-error .control-label,
.has-error label {
  color: #dc3545;
}

.has-error .form-control,
.has-error .form-select {
  border-color: #dc3545;
}

body .clearfix {
  clear: both;
}

.flatpickr-wrapper {
  width: 100%;
}

.flatpickr-calendar {
  box-shadow: none;
}
.flatpickr-calendar .flatpickr-monthDropdown-months:hover {
  background: rgba(0, 0, 0, 0.05) !important;
}
.flatpickr-calendar .flatpickr-months {
  padding: 10px 0;
  background: #449a82;
  border-top-left-radius: 3px;
  border-top-right-radius: 3px;
}
.flatpickr-calendar .flatpickr-current-month {
  padding: 3px;
}
.flatpickr-calendar .flatpickr-innerContainer {
  border-bottom-left-radius: 3px;
  border-bottom-right-radius: 3px;
}
.flatpickr-calendar .dayContainer {
  padding: 10px 0;
}
.flatpickr-calendar .flatpickr-months .flatpickr-month,
.flatpickr-calendar .flatpickr-weekdays,
.flatpickr-calendar .flatpickr-current-month .flatpickr-monthDropdown-months,
.flatpickr-calendar span.flatpickr-weekday {
  background: #429a82;
  color: white;
  -webkit-appearance: none;
}
.flatpickr-calendar .flatpickr-day.endRange,
.flatpickr-calendar .flatpickr-day.endRange.inRange,
.flatpickr-calendar .flatpickr-day.endRange.nextMonthDay,
.flatpickr-calendar .flatpickr-day.endRange.prevMonthDay,
.flatpickr-calendar .flatpickr-day.endRange:focus,
.flatpickr-calendar .flatpickr-day.endRange:hover,
.flatpickr-calendar .flatpickr-day.selected,
.flatpickr-calendar .flatpickr-day.selected.inRange,
.flatpickr-calendar .flatpickr-day.selected.nextMonthDay,
.flatpickr-calendar .flatpickr-day.selected.prevMonthDay,
.flatpickr-calendar .flatpickr-day.selected:focus,
.flatpickr-calendar .flatpickr-day.selected:hover,
.flatpickr-calendar .flatpickr-day.startRange,
.flatpickr-calendar .flatpickr-day.startRange.inRange,
.flatpickr-calendar .flatpickr-day.startRange.nextMonthDay,
.flatpickr-calendar .flatpickr-day.startRange.prevMonthDay,
.flatpickr-calendar .flatpickr-day.startRange:focus,
.flatpickr-calendar .flatpickr-day.startRange:hover {
  background: #429a82;
  border-color: #429a82;
  color: white;
}
.flatpickr-calendar .flatpickr-day.prevMonthDay,
.flatpickr-calendar .flatpickr-day.nextMonthDay {
  height: 0;
  width: 0;
  visibility: hidden;
}

.cc-revoke,
.cc-window {
  z-index: 999 !important;
}

/* Bouton de fermeture en croix */
.modal-header .close {
  position: absolute;
  top: 10px;
  right: 15px;
  font-size: 24px;
  background: none;
  border: none;
  cursor: pointer;
}

/* ========================================================================
   SYSTÈME DE NOTIFICATIONS AMÉLIORÉ - BestLiberal Custom
   ======================================================================== */
/* Animation d'entrée pour les notifications */
@keyframes slideInRight {
  0% {
    transform: translateX(100%);
    opacity: 0;
  }
  100% {
    transform: translateX(0);
    opacity: 1;
  }
}
@keyframes slideOutRight {
  0% {
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    transform: translateX(100%);
    opacity: 0;
  }
}
/* Animations pour différents états */
@keyframes bounceIn {
  0% {
    transform: scale(0.3) translateX(100%);
    opacity: 0;
  }
  50% {
    transform: scale(1.05) translateX(-10px);
    opacity: 0.9;
  }
  70% {
    transform: scale(0.9) translateX(0);
    opacity: 1;
  }
  100% {
    transform: scale(1) translateX(0);
    opacity: 1;
  }
}
@keyframes pulse {
  0% {
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
  }
  50% {
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25);
  }
  100% {
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
  }
}
/* Conteneur de notification */
.backend-notification {
  transition: all 0.3s ease-out;
  backdrop-filter: blur(10px);
  position: relative;
  overflow: hidden;
}

.backend-notification::before {
  content: "";
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
  transition: left 0.6s ease;
}

.backend-notification:hover::before {
  left: 100%;
}

/* Effet hover sur les notifications */
.backend-notification:hover {
  transform: translateX(-5px);
  animation: pulse 2s infinite;
}

/* Styles spécifiques pour chaque type de notification */
.backend-notification.bg-success {
  background: linear-gradient(135deg, #198754 0%, #20c997 100%) !important;
}

.backend-notification.bg-danger {
  background: linear-gradient(135deg, #dc3545 0%, #fd7e14 100%) !important;
}

.backend-notification.bg-warning {
  background: linear-gradient(135deg, #ffc107 0%, #ffed4e 100%) !important;
}

.backend-notification.bg-info {
  background: linear-gradient(135deg, #0dcaf0 0%, #4dabf7 100%) !important;
}

/* Animation des icônes */
.backend-notification .fas {
  animation: bounceIn 0.6s ease-out 0.2s both;
}

/* Styles pour les boutons d'action */
.backend-notification .btn-outline-light {
  border: 1px solid rgba(255, 255, 255, 0.3);
  color: rgba(255, 255, 255, 0.9);
  background: rgba(255, 255, 255, 0.1);
  transition: all 0.2s ease;
}

.backend-notification .btn-outline-light:hover {
  background: rgba(255, 255, 255, 0.2);
  border-color: rgba(255, 255, 255, 0.5);
  color: white;
  transform: translateY(-1px);
}

/* Animation du bouton de fermeture */
.backend-notification .btn-close {
  transition: all 0.2s ease;
  opacity: 0.7;
}

.backend-notification .btn-close:hover {
  opacity: 1;
  transform: scale(1.1);
}

/* Responsive design pour mobile */
@media (max-width: 768px) {
  .backend-notification {
    right: 10px !important;
    left: 10px !important;
    min-width: auto !important;
    max-width: none !important;
  }
  @keyframes slideInRight {
    0% {
      transform: translateY(100%);
      opacity: 0;
    }
    100% {
      transform: translateY(0);
      opacity: 1;
    }
  }
}
/* Stacking des notifications multiples */
.backend-notification:nth-child(n+2) {
  bottom: calc(20px + 80px * var(--notification-index, 0)) !important;
}

/* Animation de disparition */
.backend-notification.hide {
  animation: slideOutRight 0.3s ease-out forwards;
}

/* Effet de brillance pour les notifications de succès */
.backend-notification.bg-success::after {
  content: "";
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: radial-gradient(circle, rgba(255, 255, 255, 0.1) 0%, transparent 70%);
  animation: shine 3s ease-in-out infinite;
  pointer-events: none;
}

@keyframes shine {
  0%, 100% {
    opacity: 0;
    transform: scale(0.5);
  }
  50% {
    opacity: 1;
    transform: scale(1);
  }
}
/* ========================================================================
   LOGO SELECTOR - Amélioration de l'expérience utilisateur
   ======================================================================== */
/* Logo Selector Styles - Utilise le PopupManager */
.logo-selector-popup .popup-body {
  padding: 0 !important;
}

.logo-selector-content .logo-categories .nav-tabs {
  background: white;
  padding: 1rem 1.5rem 0;
  margin-bottom: 0 !important;
  border-bottom: 1px solid #dee2e6;
}
@media (max-width: 768px) {
  .logo-selector-content .logo-categories .nav-tabs {
    padding: 0.8rem 1rem 0;
  }
}
.logo-selector-content .logo-categories .nav-tabs .nav-link {
  border-radius: 8px 8px 0 0;
  padding: 0.8rem 1.5rem;
  font-weight: 500;
  color: #6c757d;
  border: 1px solid transparent;
}
@media (max-width: 768px) {
  .logo-selector-content .logo-categories .nav-tabs .nav-link {
    padding: 0.6rem 1rem;
    font-size: 0.9rem;
  }
}
.logo-selector-content .logo-categories .nav-tabs .nav-link.active {
  background: #f8f9fa;
  border-color: #dee2e6 #dee2e6 #f8f9fa;
  color: #495057;
}
.logo-selector-content .logo-categories .nav-tabs .nav-link:hover:not(.active) {
  background: #e9ecef;
  color: #495057;
}
.logo-selector-content .logo-categories .tab-content {
  background: #f8f9fa;
  min-height: 400px;
  max-height: 50vh;
  overflow-y: auto;
}
.logo-selector-content .logo-categories .tab-pane {
  padding: 0.5rem;
}
@media (max-width: 768px) {
  .logo-selector-content .logo-categories .tab-pane {
    padding: 0.25rem;
  }
}
.logo-selector-content .logo-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
  gap: 1rem;
}
@media (max-width: 768px) {
  .logo-selector-content .logo-grid {
    grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
    gap: 0.8rem;
  }
}
.logo-selector-content .logo-grid .logo-option {
  background: white;
  border: 2px solid #e9ecef;
  border-radius: 12px;
  padding: 1rem 0.6rem;
  text-align: center;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 90px;
}
.logo-selector-content .logo-grid .logo-option:hover {
  border-color: #007bff;
  transform: translateY(-2px);
  box-shadow: 0 4px 15px rgba(0, 123, 255, 0.15);
}
.logo-selector-content .logo-grid .logo-option.selected {
  border-color: #007bff;
  background: #f0f8ff;
  box-shadow: 0 4px 20px rgba(0, 123, 255, 0.2);
}
.logo-selector-content .logo-grid .logo-option.selected i {
  color: #007bff !important;
}
.logo-selector-content .logo-grid .logo-option i {
  font-size: 1.6rem;
  color: #6c757d;
  margin-bottom: 0.5rem;
  transition: color 0.2s ease;
}
@media (max-width: 768px) {
  .logo-selector-content .logo-grid .logo-option i {
    font-size: 1.4rem;
  }
}
.logo-selector-content .logo-grid .logo-option .logo-name {
  display: block;
  font-size: 0.75rem;
  color: #6c757d;
  font-weight: 500;
  text-align: center;
  line-height: 1.2;
  word-wrap: break-word;
}
@media (max-width: 768px) {
  .logo-selector-content .logo-grid .logo-option .logo-name {
    font-size: 0.7rem;
  }
}
.logo-selector-content .logo-selector-actions {
  padding: 1rem 1.5rem;
  background: white;
  border-top: 1px solid #dee2e6;
  text-align: right;
}
@media (max-width: 768px) {
  .logo-selector-content .logo-selector-actions {
    padding: 1rem;
  }
}

/* Amélioration de la prévisualisation du logo */
.logo-selector .logo-preview {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  padding: 0.8rem 1rem;
  background: white;
  border: 2px solid #e9ecef;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.2s ease;
}
.logo-selector .logo-preview:hover {
  border-color: #007bff;
  background: #f8f9ff;
}
.logo-selector .logo-preview i {
  font-size: 1.5rem;
  transition: all 0.2s ease;
}
.logo-selector .logo-preview .change-text {
  color: #6c757d;
  font-size: 0.9rem;
  font-weight: 500;
}

/* Animation pour le changement de logo */
.logo-preview i.logo-changed {
  animation: logoChange 0.4s ease;
}

@keyframes logoChange {
  0% {
    transform: scale(1);
    opacity: 1;
  }
  25% {
    transform: scale(0.8);
    opacity: 0.7;
  }
  75% {
    transform: scale(1.1);
    opacity: 1;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}