@use 'sass:math';

@mixin loading-screen-dark {
  --loading-screen-ol-logo-empty-url: url(../../../../public/img/ol-brand/overleaf-o-grey.svg);
  --loading-screen-ol-logo-full-url: url(../../../../public/img/ol-brand/overleaf-o-white.svg);
  --loading-screen-bg-color: var(--bg-dark-primary);
  --loading-screen-color: var(--content-secondary-dark);
  --loading-screen-danger-color: var(--content-danger-dark);
}

@mixin loading-screen-light {
  --loading-screen-ol-logo-empty-url: url(../../../../public/img/ol-brand/overleaf-o-grey.svg);
  --loading-screen-ol-logo-full-url: url(../../../../public/img/ol-brand/overleaf-o.svg);
  --loading-screen-bg-color: var(--bg-light-primary);
  --loading-screen-color: var(--content-secondary);
  --loading-screen-danger-color: var(--content-danger);
}

:root {
  @include loading-screen-light;

  @include theme('default') {
    @include loading-screen-dark;
  }

  .loading-screen-init-system {
    @include loading-screen-light;

    @media (prefers-color-scheme: dark) {
      @include loading-screen-dark;
    }
  }

  .loading-screen-init-light {
    @include loading-screen-light;
  }

  .loading-screen-init-dark {
    @include loading-screen-dark;
  }
}

@keyframes blink {
  0% {
    opacity: 0.2;
  }

  20% {
    opacity: 1;
  }

  100% {
    opacity: 0.2;
  }
}

.loading-screen {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  background-color: var(--loading-screen-bg-color);

  .loading-screen-brand-container {
    min-width: 200px;
  }

  .loading-screen-brand {
    position: relative;
    padding-top: math.percentage(math.div(150, 130)); // dimensions of the SVG
    height: 0;
    background: var(--loading-screen-ol-logo-empty-url) no-repeat bottom / 100%;

    &::after {
      content: '';
      position: absolute;
      height: inherit;
      right: 0;
      bottom: 0;
      left: 0;
      background: var(--loading-screen-ol-logo-full-url) no-repeat bottom / 100%;
      transition: height 0.5s;
    }
  }

  .loading-screen-label {
    margin: 0;
    padding-top: var(--spacing-09);
    font-family: $font-family-serif;
    font-size: var(--font-size-07);
    color: var(--loading-screen-color);
  }

  .loading-screen-ellip {
    animation: blink 1.4s both infinite;

    &:nth-child(2) {
      animation-delay: 0.2s;
    }

    &:nth-child(3) {
      animation-delay: 0.4s;
    }
  }

  .loading-screen-error {
    margin: 0;
    padding-top: var(--spacing-06);
    color: var(--loading-screen-danger-color);
  }
}
