/**
 * Modern Progress Navigation — 2025 Design
 * Professional glassmorphism with smooth animations
 * WCAG 2.2 AA compliant, performance-optimized
 */

/* ========================================
   Container & Layout
   ======================================== */

.progress-nav {
  position: fixed;
  top: 50%;
  right: 1.5rem;
  transform: translateY(-50%);
  z-index: 50;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  pointer-events: all;

  /* Performance optimization */
  will-change: transform;
  backface-visibility: hidden;
  -webkit-font-smoothing: antialiased;
}

/* Hide on mobile and tablets for better UX */
@media (max-width: 768px) {
  .progress-nav {
    display: none;
  }
}

/* ========================================
   Progress Track (Connecting Line)
   ======================================== */

.progress-nav__track {
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 2px;
  height: calc(100% - 24px);
  margin-top: 12px;
  background: linear-gradient(
    to bottom,
    rgba(232, 168, 124, 0.15) 0%,
    rgba(168, 181, 160, 0.15) 100%
  );
  border-radius: 1px;
  overflow: hidden;
  pointer-events: none;
}

/* Animated progress fill */
.progress-nav__progress {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 0%;
  background: linear-gradient(
    to bottom,
    var(--accent, #e8a87c) 0%,
    var(--accent-sage, #a8b5a0) 100%
  );
  transition: height 600ms cubic-bezier(0.4, 0, 0.2, 1);
  border-radius: 1px;

  /* Subtle glow effect */
  box-shadow: 0 0 8px rgba(232, 168, 124, 0.3);
}

/* ========================================
   Navigation Dots
   ======================================== */

.progress-nav__list {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding: 0;
  margin: 0;
  list-style: none;
}

.progress-nav__item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* ========================================
   Dot Button Styling
   ======================================== */

.progress-nav__dot {
  position: relative;
  display: block;
  width: 44px; /* WCAG touch target minimum */
  height: 44px;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
  transition: all 350ms cubic-bezier(0.4, 0, 0.2, 1);

  /* Remove default button styles */
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;

  /* Accessibility */
  outline: none;
}

/* Dot visual element (inner circle) */
.progress-nav__dot::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 12px;
  height: 12px;
  border-radius: 50%;

  /* Glassmorphism effect */
  background: rgba(255, 255, 255, 0.2);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);

  /* Gradient border */
  border: 2px solid;
  border-color: var(--accent, #e8a87c);

  /* Smooth transitions */
  transition: all 350ms cubic-bezier(0.4, 0, 0.2, 1);

  /* Subtle shadow */
  box-shadow:
    0 2px 8px rgba(232, 168, 124, 0.15),
    inset 0 1px 2px rgba(255, 255, 255, 0.3);
}

/* Hover state */
.progress-nav__dot:hover::before {
  width: 14px;
  height: 14px;
  background: rgba(255, 255, 255, 0.35);
  border-color: var(--accent-hover, #d4956b);
  box-shadow:
    0 4px 12px rgba(232, 168, 124, 0.25),
    inset 0 1px 2px rgba(255, 255, 255, 0.4);
}

/* Active state */
.progress-nav__dot--active::before {
  width: 16px;
  height: 16px;

  /* Filled gradient */
  background: linear-gradient(135deg, var(--accent, #e8a87c) 0%, var(--accent-sage, #a8b5a0) 100%);

  border-color: transparent;

  /* Enhanced shadow */
  box-shadow:
    0 4px 16px rgba(232, 168, 124, 0.35),
    0 2px 8px rgba(168, 181, 160, 0.2),
    inset 0 1px 2px rgba(255, 255, 255, 0.5);
}

/* Active state pulse animation */
@keyframes progress-nav-pulse {
  0%,
  100% {
    transform: translate(-50%, -50%) scale(1);
    opacity: 1;
  }
  50% {
    transform: translate(-50%, -50%) scale(1.15);
    opacity: 0.9;
  }
}

.progress-nav__dot--active::before {
  animation: progress-nav-pulse 2000ms cubic-bezier(0.4, 0, 0.2, 1) infinite;
}

/* Disable animation for users who prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
  .progress-nav__dot--active::before {
    animation: none;
  }
}

/* Focus state (keyboard navigation) */
.progress-nav__dot:focus-visible {
  outline: 3px solid var(--accent, #e8a87c);
  outline-offset: 4px;
  border-radius: 50%;
}

/* ========================================
   Tooltips
   ======================================== */

.progress-nav__tooltip {
  position: absolute;
  right: calc(100% + 12px);
  top: 50%;
  transform: translateY(-50%) translateX(8px);
  padding: 6px 12px;

  /* Glassmorphism */
  background: rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(12px) saturate(180%);
  -webkit-backdrop-filter: blur(12px) saturate(180%);

  /* Styling */
  border: 1px solid rgba(232, 168, 124, 0.2);
  border-radius: 8px;
  box-shadow:
    0 4px 16px rgba(0, 0, 0, 0.08),
    0 2px 8px rgba(0, 0, 0, 0.04);

  /* Typography */
  font-family: 'Montserrat', system-ui, sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--fg, #3d3d3d);
  white-space: nowrap;

  /* Initial state */
  opacity: 0;
  visibility: hidden;
  pointer-events: none;

  /* Transition */
  transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);

  /* Prevent text selection */
  user-select: none;
  -webkit-user-select: none;
}

/* Tooltip arrow */
.progress-nav__tooltip::after {
  content: '';
  position: absolute;
  right: -5px;
  top: 50%;
  transform: translateY(-50%) rotate(45deg);
  width: 10px;
  height: 10px;
  background: rgba(255, 255, 255, 0.95);
  border-right: 1px solid rgba(232, 168, 124, 0.2);
  border-bottom: 1px solid rgba(232, 168, 124, 0.2);
}

/* Show tooltip on hover */
.progress-nav__dot:hover + .progress-nav__tooltip,
.progress-nav__dot:focus-visible + .progress-nav__tooltip {
  opacity: 1;
  visibility: visible;
  transform: translateY(-50%) translateX(0);
}

/* ========================================
   Responsive Adjustments
   ======================================== */

/* Tablet */
@media (max-width: 1024px) {
  .progress-nav {
    right: 1rem;
  }

  .progress-nav__list {
    gap: 0.875rem;
  }
}

/* Large screens */
@media (min-width: 1920px) {
  .progress-nav {
    right: 2rem;
  }

  .progress-nav__dot::before {
    width: 14px;
    height: 14px;
  }

  .progress-nav__dot:hover::before {
    width: 16px;
    height: 16px;
  }

  .progress-nav__dot--active::before {
    width: 18px;
    height: 18px;
  }
}

/* ========================================
   Reduced Motion Support
   ======================================== */

@media (prefers-reduced-motion: reduce) {
  .progress-nav__dot,
  .progress-nav__dot::before,
  .progress-nav__progress,
  .progress-nav__tooltip {
    transition-duration: 0.01ms !important;
    animation: none !important;
  }
}

/* ========================================
   High Contrast Mode Support
   ======================================== */

@media (prefers-contrast: high) {
  .progress-nav__dot::before {
    background: transparent;
    border-width: 3px;
  }

  .progress-nav__dot--active::before {
    background: var(--accent, #e8a87c);
    border-color: var(--fg, #3d3d3d);
  }

  .progress-nav__tooltip {
    background: white;
    border: 2px solid var(--fg, #3d3d3d);
  }
}

/* ========================================
   Forced Colors Mode (Windows High Contrast)
   ======================================== */

@media (forced-colors: active) {
  .progress-nav__dot::before {
    border-color: ButtonText;
  }

  .progress-nav__dot--active::before {
    background: Highlight;
    border-color: Highlight;
  }

  .progress-nav__tooltip {
    background: Canvas;
    border-color: ButtonText;
    color: CanvasText;
  }
}

/* ========================================
   Print Styles
   ======================================== */

@media print {
  .progress-nav {
    display: none;
  }
}
