/*
 * This file is part of the UX SDC Bundle
 *
 * (c) Jozef Môstka <https://github.com/tito10047/ux-sdc>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

@layer components {
  .maintenance {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-xl);
    background:
      radial-gradient(ellipse at 20% 50%, rgba(69, 123, 157, 0.15) 0%, transparent 50%),
      radial-gradient(ellipse at 80% 20%, rgba(230, 57, 70, 0.1) 0%, transparent 40%),
      var(--color-bg-deep);
    position: relative;
    overflow: hidden;

    /* Floating ice particles */
    & .maintenance__particles {
      position: absolute;
      inset: 0;
      pointer-events: none;
    }

    & .maintenance__particle {
      position: absolute;
      border-radius: 50%;
      background: var(--color-accent-blue);
      opacity: 0;
      animation: float-particle 8s ease-in-out infinite;
    }

    & .maintenance__content {
      width: 100%;
      max-width: 620px;
      position: relative;
      z-index: 1;
      animation: slide-up 0.6s cubic-bezier(0.25, 0.8, 0.25, 1) both;
    }

    & .maintenance__glass-panel {
      background: var(--color-bg-surface-glass);
      backdrop-filter: blur(var(--glass-blur));
      border: 1px solid var(--color-border-glass);
      border-radius: var(--radius-lg);
      padding: var(--space-3xl) var(--space-2xl);
      text-align: center;
      position: relative;
      overflow: hidden;
      box-shadow: var(--shadow-premium);

      &::before {
        content: '';
        position: absolute;
        inset: 0;
        background: linear-gradient(135deg, rgba(255,255,255,0.04) 0%, transparent 60%);
        pointer-events: none;
      }

      /* Blue Line top / Red Line bottom */
      &::after {
        content: '';
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        height: 3px;
        background: linear-gradient(to right, var(--color-accent-blue), var(--color-accent-red));
      }
    }

    /* Badge with pulsing dot */
    & .maintenance__badge {
      display: inline-flex;
      align-items: center;
      gap: var(--space-xs);
      font-family: var(--font-family-heading);
      font-size: 0.75rem;
      text-transform: uppercase;
      letter-spacing: 0.2em;
      color: var(--color-accent-red);
      font-weight: 700;
      margin-bottom: var(--space-md);
    }

    & .maintenance__badge-dot {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: var(--color-accent-red);
      animation: pulse-dot 1.5s ease-in-out infinite;
      flex-shrink: 0;
    }

    /* Holographic shimmer title */
    & .maintenance__title {
      font-size: clamp(2rem, 8vw, 3rem);
      margin-bottom: var(--space-md);
      letter-spacing: -0.02em;
      line-height: 1;
      background: linear-gradient(
        90deg,
        var(--color-accent-blue) 0%,
        #a8d8ea 25%,
        var(--color-accent-red) 50%,
        #a8d8ea 75%,
        var(--color-accent-blue) 100%
      );
      background-size: 200% auto;
      -webkit-background-clip: text;
      -webkit-text-fill-color: transparent;
      background-clip: text;
      animation: shimmer 4s linear infinite;
    }

    & .maintenance__subtitle {
      color: var(--color-text-main);
      font-size: 0.95rem;
      margin-bottom: var(--space-2xl);
      line-height: 1.5;
    }

    /* Zamboni rink strip */
    & .maintenance__rink {
      position: relative;
      height: 32px;
      margin: 0 calc(var(--space-2xl) * -1) var(--space-2xl);
      overflow: hidden;
    }

    & .maintenance__rink-ice {
      position: absolute;
      inset: 0;
      background: linear-gradient(
        to bottom,
        rgba(69, 123, 157, 0.08) 0%,
        rgba(69, 123, 157, 0.18) 50%,
        rgba(69, 123, 157, 0.08) 100%
      );
      border-top: 1px solid rgba(69, 123, 157, 0.3);
      border-bottom: 1px solid rgba(69, 123, 157, 0.3);

      /* Trail of fresh ice left behind zamboni */
      &::after {
        content: '';
        position: absolute;
        inset: 0;
        background: linear-gradient(to right, rgba(255,255,255,0.25) 0%, transparent 100%);
        animation: zamboni-trail 6s linear infinite;
      }
    }

    & .maintenance__rink-zamboni {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      width: 40px;
      height: 20px;
      border-radius: 4px 8px 8px 4px;
      background: linear-gradient(135deg, #ffd700 0%, #ffaa00 100%);
      animation: zamboni-move 6s linear infinite;
      box-shadow: 0 2px 8px rgba(0,0,0,0.3);

      /* Cabin */
      &::before {
        content: '';
        position: absolute;
        top: -6px;
        left: 6px;
        width: 18px;
        height: 10px;
        border-radius: 3px 3px 0 0;
        background: linear-gradient(135deg, #ffe066 0%, #ffd700 100%);
      }

      /* Wheels */
      &::after {
        content: '';
        position: absolute;
        bottom: -4px;
        left: 4px;
        width: 8px;
        height: 8px;
        border-radius: 50%;
        background: #333;
        box-shadow: 20px 0 0 #333;
      }
    }

    /* Message */
    & .maintenance__message {
      color: var(--color-text-main);
      margin-bottom: var(--space-xl);
      font-size: 0.95rem;

      & strong {
        color: var(--color-accent-red);
      }
    }

    /* Progress bar */
    & .maintenance__progress-wrap {
      margin-bottom: var(--space-2xl);
    }

    & .maintenance__progress-bar {
      height: 6px;
      background: rgba(69, 123, 157, 0.15);
      border-radius: 99px;
      overflow: hidden;
      margin-bottom: var(--space-xs);
    }

    & .maintenance__progress-fill {
      height: 100%;
      border-radius: 99px;
      background: linear-gradient(to right, var(--color-accent-blue), var(--color-accent-red));
      animation: fake-progress 14s ease-in-out infinite;
      transform-origin: left;
    }

    & .maintenance__progress-labels {
      display: flex;
      justify-content: space-between;
      font-size: 0.75rem;
      color: var(--color-text-main);
      opacity: 0.7;
      font-family: var(--font-family-heading);
      letter-spacing: 0.05em;
      text-transform: uppercase;
    }

    & .maintenance__progress-pct {
      color: var(--color-accent-blue);
      font-weight: 700;
      min-width: 3ch;
      text-align: right;
    }

    /* Quote */
    & .maintenance__quote {
      margin: 0 0 var(--space-2xl) 0;
      padding: var(--space-md) var(--space-lg);
      border-left: 2px solid var(--color-accent-blue);
      text-align: left;
      background: rgba(69, 123, 157, 0.05);
      border-radius: 0 var(--radius-md) var(--radius-md) 0;

      & p {
        font-size: 0.9rem;
        font-style: italic;
        color: var(--color-text-heading);
        margin-bottom: var(--space-2xs);
        line-height: 1.5;
      }

      & cite {
        font-family: var(--font-family-heading);
        font-size: 0.75rem;
        text-transform: uppercase;
        letter-spacing: 0.1em;
        color: var(--color-text-main);
        opacity: 0.7;
        font-style: normal;
      }
    }

    & .maintenance__divider {
      height: 1px;
      background: linear-gradient(to right, transparent, var(--color-border-glass), transparent);
      margin-bottom: var(--space-md);
    }

    & .maintenance__status {
      font-family: var(--font-family-heading);
      font-size: 0.75rem;
      text-transform: uppercase;
      letter-spacing: 0.3em;
      color: var(--color-accent-blue);
      margin: 0;
      animation: blink-status 2.5s ease-in-out infinite;
    }
  }
}

/* ---- Keyframes ---- */

@keyframes slide-up {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes float-particle {
  0%   { opacity: 0; transform: translateY(0) scale(1); }
  20%  { opacity: 0.4; }
  80%  { opacity: 0.2; }
  100% { opacity: 0; transform: translateY(-60px) scale(0.5); }
}

@keyframes shimmer {
  to { background-position: 200% center; }
}

@keyframes pulse-dot {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.4; transform: scale(0.7); }
}

@keyframes zamboni-move {
  0%   { left: -50px; }
  100% { left: calc(100% + 10px); }
}

@keyframes zamboni-trail {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}

@keyframes fake-progress {
  0%   { width: 0%; }
  15%  { width: 38%; }
  16%  { width: 25%; }   /* stall — niečo sa zaseklo */
  30%  { width: 55%; }
  45%  { width: 57%; }   /* dlhá pauza */
  46%  { width: 57%; }
  60%  { width: 79%; }
  75%  { width: 83%; }
  90%  { width: 99%; }
  91%  { width: 0%; }    /* reset – lebo prečo nie */
  100% { width: 0%; }
}

@keyframes blink-status {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.4; }
}
