[Back]
@keyframes os-loading {
  0% {
    transform: translate(-50%, -50%) rotate(0deg);
    opacity: 1;
  }
  50% {
    transform: translate(-50%, -50%) rotate(180deg);
    opacity: 0.2;
  }
  100% {
    transform: translate(-50%, -50%) rotate(360deg);
    opacity: 1;
  }
}

@keyframes osTextUpdated {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.2);
  }
  100% {
    transform: scale(1);
  }
}
@keyframes os-rotating {
  0% {
    transform: rotate(0deg);
    opacity: 1;
  }
  100% {
    transform: rotate(360deg);
    opacity: 0.5;
  }
}

@keyframes animate_appointment_small_box{
  0%{
    opacity: 0.8;
  }
  50%{
    opacity: 0.4;
  }
  100%{
    opacity: 0.8;
  }
}


@keyframes toolTipOpen {
  0% { transform: translate3d(-50%, -30%, 0); opacity: 0; }
  100% { transform: translate3d(-50%, -50%, 0); opacity: 1; }
}

@keyframes notificationAnimation {
  0% { transform: translate3d(0, -30px, 0) scale(0.6); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0) scale(1); opacity: 1; }
}

@keyframes quickAvailability {
  0% { transform: translate3d(40px, 0px, 0); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0); opacity: 1; }
}

@keyframes wizardWrapperAnimation {
  0% { transform: translate3d(0, 30px, 0); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0); opacity: 1; }
}

@keyframes contentUp {
  0% { transform: translate3d(0, 20px, 0); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0); opacity: 1; }
}

@keyframes right20 {
  0% { transform: translate3d(-20px, 0px, 0); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0); opacity: 1; }
}


@keyframes up20 {
  0% { transform: translate3d(0, 20px, 0); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0); opacity: 1; }
}


@keyframes up20o {
  0% { transform: translate3d(0, 20px, 0); }
  100% { transform: translate3d(0, 0px, 0); }
}

@keyframes up10 {
  0% { transform: translate3d(0, 10px, 0); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0); opacity: 1; }
}


@keyframes down20 {
  0% { transform: translate3d(0, -20px, 0); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0); opacity: 1; }
}

@keyframes down10 {
  0% { transform: translate3d(0, -10px, 0); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0); opacity: 1; }
}

@keyframes upcomingBoxAnimation {
  0% { transform: translate3d(40px, 0px, 0); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0); opacity: 1; }
}

@keyframes calendarOpenAnimation {
  0% { transform: translate3d(0, -15px, 0px); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0); opacity: 1; }
}

@keyframes timePeriodAnimation {
  0% { transform: translate3d(0, -70px, 0px) scaleY(0.2); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0) scaleY(1); opacity: 1; }
}

@keyframes textAnimations {
  0% { transform: translate3d(0, 30px, 0); opacity: 0; }
  100% { transform: translate3d(0, 0px, 0); opacity: 1; }
}

@keyframes genericLabelAnimation {
  0% { transform: translate3d(-50%, -15px, 0); opacity: 0; }
  100% { transform: translate3d(-50%, 0px, 0); opacity: 1; }
}

@keyframes inputPop{
  50%  {
    transform: scale(1.3);
  }
}

@keyframes selectedCheckmark{
  0% { transform: translate3d(0, -50%px, 0) rotate(30deg); opacity: 0; }
  100% { transform: translate3d(0, -50%, 0) rotate(0deg); opacity: 1; }
}

@keyframes successCheckmark{
  0% { transform:  rotate(-90deg) scale(0.5); opacity: 0; }
  100% { transform:  rotate(0deg) scale(1); opacity: 1; }
}

.latepoint-user-info-dropdown {
  animation: 0.2s cubic-bezier(0.05, 0.45, 0.1, 1.1) 0s down10;
  animation-fill-mode: both;
}

.order-item-booking-data-form-inner {
  animation: 0.2s cubic-bezier(0.05, 0.45, 0.1, 1.1) 0s down10;
  animation-fill-mode: both;
}

.step-drag span {
  animation: 0.2s cubic-bezier(0.05, 0.45, 0.1, 1.1) 0s genericLabelAnimation;
  animation-fill-mode: both;
}

.step-body {
  animation: 0.2s cubic-bezier(0.05, 0.45, 0.1, 1) 0s down10;
  animation-fill-mode: both;
}

.os-wizard-setup-w .os-form-w{
  animation: 0.3s cubic-bezier(0.05, 0.45, 0.1, 1.2) 0s textAnimations;
  animation-fill-mode: both;
}

.os-wizard-complete-btn {
  animation: 0.3s cubic-bezier(0.05, 0.45, 0.1, 1.2) 0.15s textAnimations;
  animation-fill-mode: both;
}

.os-wizard-sub-header {
  animation: 0.3s cubic-bezier(0.05, 0.45, 0.1, 1.2) 0s textAnimations;
  animation-fill-mode: both;
}
.os-wizard-header {
  animation: 0.3s cubic-bezier(0.05, 0.45, 0.1, 1.2) 0.05s textAnimations;
  animation-fill-mode: both;
}
.os-wizard-desc {
  animation: 0.3s cubic-bezier(0.05, 0.45, 0.1, 1.2) 0.1s textAnimations;
  animation-fill-mode: both;
}

.os-wizard-complete-icon-w {
  animation: 1s cubic-bezier(0.05, 0.45, 0.1, 1.4) 0.2s successCheckmark;
  animation-fill-mode: both;
}

.os-wizard-step-content-i {
  animation: 0.3s cubic-bezier(0.05, 0.45, 0.1, 1.2) 0.15s textAnimations;
  animation-fill-mode: both;
}

.ws-period {
    animation: 0.2s cubic-bezier(0.05, 0.45, 0.1, 1.2) 0s timePeriodAnimation;
    animation-fill-mode: both;
}

.ws-period.animate-filled-in {
  .os-form-control {
    animation: inputPop 0.4s ease 1;
  }
}
.as-period.animate-filled-in {
  .os-form-control {
    animation: inputPop 0.4s ease 1;
  }
}

.quick-order-form-w {
  .ws-period {
    animation: none;
  }
}

.latepoint-content-w {
  &.os-loading {
    &:after {
      @include loading-circle($brand-primary);
    }
    animation:animate_appointment_small_box 0.8s ease infinite;
  }
}

.daterangepicker {
  animation: 0.25s cubic-bezier(.45,1.1,.4,1) 0s calendarOpenAnimation;
  animation-fill-mode: both;
}

.os-widget-upcoming-appointments {
}


.appointment-box-large {
  animation: 0.25s cubic-bezier(.45,1.1,.4,1) 0s wizardWrapperAnimation;
  animation-fill-mode: both; 
  $count: 5;
  @for $i from 0 to $count {
    &:nth-child(#{$i + 1}) {
      animation: 0.6s cubic-bezier(.45,1.1,.4,1) #{$i*100}ms wizardWrapperAnimation;
      animation-fill-mode: both;
    }
  }
}

.os-booking-tiny-boxes-w {
}

.addons-boxes-w {
  animation: 0.4s cubic-bezier(.45,1.1,.4,1) 0s wizardWrapperAnimation;
  animation-fill-mode: both;
}

@keyframes osSidePanelAnimation {
  0% { transform: translateX(120px); opacity: 0; }
  100% { transform: translateX(0px); opacity: 1; }
}

@keyframes right10 {
  0% { transform: translateX(-10px); opacity: 0; }
  100% { transform: translateX(0px); opacity: 1; }
}
@keyframes right40 {
  0% { transform: translateX(-40px); opacity: 0; }
  100% { transform: translateX(0px); opacity: 1; }
}

@keyframes left20 {
  0% { transform: translateX(20px);  }
  100% { transform: translateX(0px);  }
}


.latepoint-side-panel-w {
  .latepoint-side-panels {
    transform-origin: center center;
    animation: 0.5s cubic-bezier(0, 1, 0.51, 1) 0s both osSidePanelAnimation;
  }
}

.latepoint-template-variables,
.latepoint-layout-template-variables {
  transform-origin: center center;
  animation: 0.4s cubic-bezier(0, 1, 0.51, 1) 0s both right40;
}

.os-notifications:not(.os-relative) .item {
    animation: 0.25s cubic-bezier(0, 1, 0.51, 1.1) 0s notificationAnimation;
    animation-fill-mode: both;
}

.os-widget-top-agents {
}

.table-with-pagination-w {
    animation: 0.4s cubic-bezier(0.45, 1.1, 0.4, 1) 0s wizardWrapperAnimation;
    animation-fill-mode: both;
}

.os-widget-animated {
  animation: 0.4s cubic-bezier(.45,1.1,.4,1) 0s wizardWrapperAnimation;
  animation-fill-mode: both;
}

.white-box, .os-togglable-item-w {
  animation: 0.4s cubic-bezier(0.45, 1, 0.2, 1) 0s up20;
  animation-fill-mode: both;
}

.quick-order-form-w {
}

.os-resources-grid .os-resource-grid-item, .os-resources-grid .create-resource-link-w {
  animation: 0.4s cubic-bezier(.45,1.1,.4,1) 0s wizardWrapperAnimation;
  animation-fill-mode: both;
  $count: 10;
  @for $i from 0 to $count {
    &:nth-child(#{$i + 1}) {
      animation: 0.4s cubic-bezier(.45,1.2,.8,1) #{$i*30}ms wizardWrapperAnimation;
      animation-fill-mode: both;
    }
  }
}

.os-item-category-w {
  animation: 0.6s cubic-bezier(.45,1.1,.4,1) 0s wizardWrapperAnimation;
  animation-fill-mode: both;
  $count: 3;
  @for $i from 0 to $count {
    &:nth-child(#{$i + 1}) {
      animation: 0.6s cubic-bezier(.45,1.1,.4,1) #{$i*100}ms wizardWrapperAnimation;
      animation-fill-mode: both;
    }
  }
}

@keyframes osLightboxAnimation {
  0% { transform: translate3d(0, 10%, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

.latepoint-lightbox-i {
  transform-origin: center center;
  animation: 0.5s cubic-bezier(0, 1, 0.2, 1) 0s both osLightboxAnimation;
}
.os-custom-field-form-i {
}

.os-custom-field-form-params {
  animation: 0.2s cubic-bezier(0, 1, 0.51, 1) 0s down10;
  animation-fill-mode: both;
}



/* Form Blocks */

.os-section-header, .os-notifications-control-bar {
  animation: 0.4s cubic-bezier(0.45, 1, 0.2, 1) 0s wizardWrapperAnimation;
  animation-fill-mode: both;
}

.os-default-fields {
  animation: 0.4s cubic-bezier(0.45, 1, 0.2, 1) 0s wizardWrapperAnimation;
  animation-fill-mode: both;
}

.os-form-blocks-w {
  animation: 0.4s cubic-bezier(0.45, 1, 0.2, 1) 0s wizardWrapperAnimation;
  animation-fill-mode: both;
}

.process-action-form.is-editing {
  animation: 0.4s cubic-bezier(0.45, 1, 0.2, 1) 0s up20;
  animation-fill-mode: both;
}

.os-togglable-item-body {
  animation: 0.3s cubic-bezier(0.45, 1, 0.2, 1) 0s down10;
  animation-fill-mode: both;
}

.os-add-box {
  animation: 0.4s cubic-bezier(0.45, 1, 0.2, 1) 0s wizardWrapperAnimation;
  animation-fill-mode: both;
}

.os-form-block-params {
  animation: 0.4s cubic-bezier(0.45, 1, 0.2, 1) 0s down20;
  animation-fill-mode: both;
}



@keyframes pulseInUse {
  0% {
    background-color: #fff;
    box-shadow: 0px 0px 0px 4px #d5ffe8;
  }
  100% {
    background-color: #dbffee;
    box-shadow: 0px 0px 0px 0px #b7ffd8;
  }
}

.os-table-w .in-table-time-left {
  .time-left {
    &.is-now {
      animation: 1s ease 0s pulseInUse infinite;
    }
  }
}



@keyframes lateTooltipDown {
  0% { transform: translate3d(-50%, -120%, 0); opacity: 0; }
  100% { transform: translate3d(-50%, -100%, 0); opacity: 1; }
}

.late-tooltip {
  animation: 0.15s cubic-bezier(.45,1.1,.7,1) 0s lateTooltipDown;
  animation-fill-mode: both;
}

.lp_iti__country-list {
  animation: 0.15s cubic-bezier(.45,1.1,.7,1) 0s right10;
  animation-fill-mode: both;
}

.new-version-message, .active-license-info {
  animation: 0.25s cubic-bezier(.45,1.1,.7,1.1) 0s up10;
  animation-fill-mode: both;
}

.invoice-settings-wrapper {
  animation: 0.25s cubic-bezier(.45,1.1,.7,1.1) 0s up20;
  animation-fill-mode: both;
}

.list-upcoming-bookings-w,
.calendar-wrapper,
.calendar-week-agent-w,
.monthly-calendar-wrapper
{
}


@keyframes rotateScale {
  0% { transform: scale(0.4) rotate(-90deg); opacity: 0 }
  100% { transform: scale(1) rotate(0deg); opacity: 1 }
}


@keyframes pulseErrorPill {
  0% {
    background-color: #ff9784;
    box-shadow: 0px 1px 0px 0px rgba(#ff8a8a, 0.5),
                0px 0px 0px 0px rgba(#ff8a8a, 0.55),
                0px 0px 0px 0px rgba(#ff8a8a, 0.5),
                inset 0px 2px 0px 0px rgba(255, 255, 255, 0.2);
  }
  100% {
    background-color: #ff320c;
    box-shadow: 0px 1px 0px 0px rgba(#ff8a8a, 0.5),
                0px 0px 0px 7px rgba(#ff8a8a, 0.0),
                0px 0px 0px 12px rgba(#ff8a8a, 0.0),
                inset 0px 2px 0px 0px rgba(255, 255, 255, 0.2);
  }
}

@keyframes pulseSuccessBtn {
  0% {
    background-color: #79b512;
    box-shadow: 0px 1px 0px 0px rgba(#8be78d, 0.5),
                0px 0px 0px 0px rgba(#8be78d, 0.55),
                0px 0px 0px 0px rgba(#8be78d, 0.55);
  }
  100% {
    background-color: #8aca1c;
    box-shadow: 0px 1px 0px 0px rgba(#8be78d, 0.5),
                0px 0px 0px 7px rgba(#8be78d, 0.0),
                0px 0px 0px 12px rgba(#8be78d, 0.0);
  }
}

@keyframes pulseUnlockLink {
  0% {
    background-color: #ffeb8b;
    box-shadow: 0px 1px 0px 0px rgba(#eccf33, 0.5),
    0px 0px 0px 0px rgba(#ffeb8b, 0.55),
                0px 0px 0px 0px rgba(#ffeb8b, 0.55);
  }
  100% {
    background-color: #fff5ca;
    box-shadow: 0px 1px 0px 0px rgba(#eccf33, 0.5),
    0px 0px 0px 7px rgba(#fff5ca, 0.0),
                0px 0px 0px 12px rgba(#fff5ca, 0.0);
  }
}

@keyframes pulseSuccessPill {
  0% {
    background-color: #c0ffcb;
    box-shadow: 0px 1px 0px 0px rgba(#8be78d, 0.5),
                0px 0px 0px 0px rgba(#8be78d, 0.55),
                0px 0px 0px 0px rgba(#8be78d, 0.55),
                inset 0px 2px 0px 0px rgba(255, 255, 255, 0.4);
  }
  100% {
    background-color: #28ff4f;
    box-shadow: 0px 1px 0px 0px rgba(#8be78d, 0.5),
                0px 0px 0px 7px rgba(#8be78d, 0.0),
                0px 0px 0px 12px rgba(#8be78d, 0.0),
                inset 0px 2px 0px 0px rgba(255, 255, 255, 0.4);
  }
}
@keyframes pulseInfoPill {
  0% {
    background-color: #c0d9ff;
    box-shadow: 0px 1px 0px 0px rgba(#8ba8e7, 0.5),
                0px 0px 0px 0px rgba(#8ba8e7, 0.55),
                0px 0px 0px 0px rgba(#8ba8e7, 0.55),
                inset 0px 2px 0px 0px rgba(255, 255, 255, 0.4);
  }
  100% {
    background-color: #288cff;
    box-shadow: 0px 1px 0px 0px rgba(#8ba8e7, 0.5),
                0px 0px 0px 7px rgba(#8ba8e7, 0.0),
                0px 0px 0px 12px rgba(#8ba8e7, 0.0),
                inset 0px 2px 0px 0px rgba(255, 255, 255, 0.4);
  }
}

.os-form-message-w.status-error {
  &:before {
    animation: 1s ease 0s pulseErrorPill infinite;
  }
}

.os-form-message-w.status-success {
  &:before {
    animation: 1s ease 0s pulseSuccessPill infinite;
  }
}

.os-notifications .item {
  &.item-type-error:before {
    animation: 1s ease 0s pulseErrorPill infinite;
  }
  &.item-type-success:before {
    animation: 1s ease 0s pulseSuccessPill infinite;
  }
}

body.latepoint-admin .new-version-message .version-check-icon,
body.latepoint-admin .active-license-info .version-check-icon {
  animation: 1s ease 0s pulseSuccessPill infinite;
}


.a-rotate-scale {
  animation: 0.7s cubic-bezier(.25, 1.4, .5, 1.15) 0s rotateScale;
  animation-fill-mode: both;
}