/*
 * Button Components
 *
 * Unified button system that works across all hubs (CV, LinkedIn, Admin).
 * Uses CSS custom properties for theming to avoid duplication.
 */

/* ========================================================================
   BASE BUTTON
   ======================================================================== */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: var(--btn-padding-y) var(--btn-padding-x);
  font-weight: var(--font-weight-semibold);
  font-size: 0.9rem;
  border-radius: var(--radius-lg);
  text-decoration: none;
  transition: var(--transition-all);
  cursor: pointer;
  border: none;
  text-align: center;
  white-space: nowrap;
}

.btn:hover {
  text-decoration: none;
  transform: translateY(-1px);
}

.btn:active {
  transform: translateY(0);
}

/* ========================================================================
   BUTTON SIZES
   ======================================================================== */
.btn--small {
  padding: var(--btn-padding-y-sm) var(--btn-padding-x-sm);
  font-size: var(--font-size-sm);
  border-radius: var(--radius-md);
  gap: 6px;
}

.btn--large {
  padding: var(--btn-padding-y-lg) var(--btn-padding-x-lg);
  font-size: 1.1rem;
  border-radius: 14px;
  gap: 12px;
}

.btn--extra-large {
  flex-direction: column;
  padding: 20px 40px;
  font-size: 1.1rem;
  border-radius: var(--radius-xl);
  gap: 5px;
}

/* ========================================================================
   PRIMARY BUTTONS (Themed)
   ======================================================================== */

/* LinkedIn Primary */
.btn--linkedin {
  background: var(--gradient-linkedin);
  color: white;
  box-shadow: var(--shadow-linkedin);
}

.btn--linkedin:hover {
  background: var(--gradient-linkedin-hover);
  box-shadow: 0 6px 20px rgba(0, 119, 181, 0.4);
  color: white;
}

/* CV Primary */
.btn--cv {
  background: var(--gradient-cv);
  color: white;
  box-shadow: var(--shadow-cv);
}

.btn--cv:hover {
  background: var(--gradient-cv-hover);
  box-shadow: 0 6px 20px rgba(220, 38, 38, 0.4);
  color: white;
}

/* Success/Green */
.btn--success {
  background: var(--gradient-success);
  color: white;
  box-shadow: var(--shadow-success);
}

.btn--success:hover {
  background: linear-gradient(135deg, var(--color-success-dark), #047857);
  box-shadow: 0 6px 20px rgba(16, 185, 129, 0.4);
  color: white;
}

/* Warning/Optimization */
.btn--warning {
  background: var(--gradient-warning);
  color: white;
  box-shadow: var(--shadow-warning);
}

.btn--warning:hover {
  background: linear-gradient(135deg, var(--color-warning-dark), #b45309);
  box-shadow: 0 6px 20px rgba(245, 158, 11, 0.4);
  color: white;
}

/* Premium */
.btn--premium {
  background: var(--gradient-premium);
  color: white;
  box-shadow: var(--shadow-premium);
  position: relative;
  overflow: hidden;
}

.btn--premium:hover {
  background: linear-gradient(135deg, var(--color-premium-darker), var(--color-premium-dark));
  box-shadow: 0 6px 20px rgba(139, 92, 246, 0.4);
  color: white;
}

/* Primary Blue */
.btn--primary {
  background: var(--gradient-primary);
  color: white;
  box-shadow: var(--shadow-primary);
}

.btn--primary:hover {
  background: linear-gradient(135deg, var(--color-primary-dark), #1e40af);
  box-shadow: 0 6px 20px rgba(59, 130, 246, 0.4);
  color: white;
}

/* ========================================================================
   SECONDARY BUTTONS (Outlined)
   ======================================================================== */
.btn--secondary {
  background: white;
  color: var(--color-gray-600);
  border: 2px solid var(--color-gray-300);
}

.btn--secondary:hover {
  background: var(--color-gray-50);
  color: var(--color-gray-700);
  border-color: var(--color-gray-400);
}

/* Secondary with theme colors */
.btn--secondary-linkedin {
  background: white;
  color: var(--color-linkedin-primary);
  border: 2px solid var(--color-linkedin-primary);
}

.btn--secondary-linkedin:hover {
  background: #f0f9ff;
  color: var(--color-linkedin-dark);
  border-color: var(--color-linkedin-dark);
}

.btn--secondary-cv {
  background: white;
  color: var(--color-cv-primary);
  border: 2px solid var(--color-cv-primary);
}

.btn--secondary-cv:hover {
  background: #fef2f2;
  color: var(--color-cv-dark);
  border-color: var(--color-cv-dark);
}

/* ========================================================================
   TERTIARY BUTTONS (Subtle/Light)
   ======================================================================== */
.btn--tertiary {
  background: white;
  color: var(--color-text-muted);
  border: 2px solid var(--color-border);
}

.btn--tertiary:hover {
  background: var(--color-bg-light);
  color: var(--color-gray-700);
  border-color: var(--color-gray-300);
}

/* ========================================================================
   SPECIALIZED BUTTONS
   ======================================================================== */

/* Copy Button */
.copy-button {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background: linear-gradient(135deg, var(--color-gray-500), var(--color-gray-600));
  color: white;
  border: none;
  border-radius: var(--radius-md);
  font-weight: var(--font-weight-medium);
  font-size: var(--font-size-sm);
  cursor: pointer;
  transition: var(--transition-all);
  box-shadow: var(--shadow-sm);
}

.copy-button:hover {
  background: linear-gradient(135deg, var(--color-gray-600), var(--color-gray-700));
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}

.copy-button.copied {
  background: var(--gradient-success);
}

/* Back Button */
.btn--back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  background: white;
  color: var(--color-text-muted);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-md);
  font-weight: var(--font-weight-medium);
  font-size: 0.95rem;
  cursor: pointer;
  transition: var(--transition-all);
  text-decoration: none;
}

.btn--back:hover {
  background: var(--color-bg-light);
  color: var(--color-gray-700);
  border-color: var(--color-gray-300);
  text-decoration: none;
}

/* Refresh Button (Small) */
.btn--refresh {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  background: var(--gradient-success);
  color: white;
  border-radius: var(--radius-md);
  font-weight: var(--font-weight-medium);
  font-size: var(--font-size-sm);
  text-decoration: none;
  transition: var(--transition-all);
  border: none;
  cursor: pointer;
}

.btn--refresh:hover {
  background: linear-gradient(135deg, var(--color-success-dark), #047857);
  transform: translateY(-1px);
  box-shadow: var(--shadow-success);
  text-decoration: none;
  color: white;
}

/* ========================================================================
   BUTTON STATES
   ======================================================================== */
.btn:disabled,
.btn.disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none !important;
}

.btn:disabled:hover,
.btn.disabled:hover {
  transform: none !important;
}

.btn--loading {
  position: relative;
  color: transparent;
  pointer-events: none;
}

.btn--loading::after {
  content: "";
  position: absolute;
  width: 16px;
  height: 16px;
  top: 50%;
  left: 50%;
  margin-left: -8px;
  margin-top: -8px;
  border: 2px solid rgba(255, 255, 255, 0.3);
  border-radius: 50%;
  border-top-color: white;
  animation: button-spin 0.6s linear infinite;
}

@keyframes button-spin {
  to { transform: rotate(360deg); }
}

/* ========================================================================
   BUTTON GROUPS
   ======================================================================== */
.btn-group {
  display: inline-flex;
  gap: var(--spacing-2);
}

.btn-group--vertical {
  flex-direction: column;
}

/* ========================================================================
   ICON BUTTONS
   ======================================================================== */
.btn--icon-only {
  padding: 10px;
  width: 40px;
  height: 40px;
  justify-content: center;
}

.btn--icon-only.btn--small {
  padding: 6px;
  width: 32px;
  height: 32px;
}

.btn--icon-only.btn--large {
  padding: 14px;
  width: 48px;
  height: 48px;
}

/* ========================================================================
   LEGACY BUTTON CLASS SUPPORT
   ======================================================================== */

/* Legacy CV Hub button classes */
.btn-cv {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  font-weight: 600;
  font-size: 0.9rem;
  border-radius: 12px;
  text-decoration: none;
  transition: all 0.2s ease;
  cursor: pointer;
  border: none;
  text-align: center;
  white-space: nowrap;
  background: var(--gradient-cv, linear-gradient(135deg, #dc2626, #b91c1c));
  color: white;
  box-shadow: var(--shadow-cv, 0 4px 12px rgba(220, 38, 38, 0.3));
}

.btn-cv:hover {
  text-decoration: none;
  transform: translateY(-1px);
  background: var(--gradient-cv-hover, linear-gradient(135deg, #b91c1c, #991b1b));
  box-shadow: 0 6px 20px rgba(220, 38, 38, 0.4);
  color: white;
}

.btn-secondary {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  font-weight: 600;
  font-size: 0.9rem;
  border-radius: 12px;
  text-decoration: none;
  transition: all 0.2s ease;
  cursor: pointer;
  text-align: center;
  white-space: nowrap;
  background: white;
  color: var(--color-gray-600, #475569);
  border: 2px solid var(--color-gray-300, #cbd5e1);
}

.btn-secondary:hover {
  text-decoration: none;
  transform: translateY(-1px);
  background: var(--color-gray-50, #f8fafc);
  color: var(--color-gray-700, #334155);
  border-color: var(--color-gray-400, #94a3b8);
}

.btn-refresh-small {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  background: var(--gradient-success, linear-gradient(135deg, #10b981, #059669));
  color: white;
  border-radius: 8px;
  font-weight: 500;
  font-size: 0.875rem;
  text-decoration: none;
  transition: all 0.2s ease;
  border: none;
  cursor: pointer;
}

.btn-refresh-small:hover {
  background: linear-gradient(135deg, #059669, #047857);
  transform: translateY(-1px);
  box-shadow: var(--shadow-success, 0 4px 12px rgba(16, 185, 129, 0.3));
  text-decoration: none;
  color: white;
}

.btn-view-cv {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  font-weight: 600;
  font-size: 0.875rem;
  border-radius: 8px;
  text-decoration: none;
  transition: all 0.2s ease;
  cursor: pointer;
  text-align: center;
  white-space: nowrap;
  background: white;
  color: var(--color-cv-primary, #dc2626);
  border: 2px solid var(--color-cv-primary, #dc2626);
}

.btn-view-cv:hover {
  text-decoration: none;
  transform: translateY(-1px);
  background: #fef2f2;
  color: var(--color-cv-dark, #b91c1c);
  border-color: var(--color-cv-dark, #b91c1c);
}

.btn-ai-review-large {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 20px 40px;
  font-weight: 600;
  font-size: 1.1rem;
  border-radius: 16px;
  text-decoration: none;
  transition: all 0.2s ease;
  cursor: pointer;
  border: none;
  text-align: center;
  white-space: normal;
  word-wrap: break-word;
  line-height: 1.3;
  background: var(--gradient-cv, linear-gradient(135deg, #dc2626, #b91c1c));
  color: white;
  box-shadow: var(--shadow-cv, 0 4px 12px rgba(220, 38, 38, 0.3));
}

.btn-ai-review-large:hover {
  text-decoration: none;
  transform: translateY(-1px);
  background: var(--gradient-cv-hover, linear-gradient(135deg, #b91c1c, #991b1b));
  box-shadow: 0 6px 20px rgba(220, 38, 38, 0.4);
  color: white;
}

.btn-generate-optimization {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 14px 28px;
  font-weight: 600;
  font-size: 1.1rem;
  border-radius: 14px;
  text-decoration: none;
  transition: all 0.2s ease;
  cursor: pointer;
  border: none;
  text-align: center;
  white-space: normal;
  word-wrap: break-word;
  line-height: 1.3;
  background: var(--gradient-warning, linear-gradient(135deg, #f59e0b, #d97706));
  color: white;
  box-shadow: var(--shadow-warning, 0 4px 12px rgba(245, 158, 11, 0.3));
}

.btn-generate-optimization:hover {
  text-decoration: none;
  transform: translateY(-1px);
  background: linear-gradient(135deg, #d97706, #b45309);
  box-shadow: 0 6px 20px rgba(245, 158, 11, 0.4);
  color: white;
}

.btn-generate-optimized {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 16px 32px;
  background: white;
  color: #b45309;
  border: none;
  border-radius: 14px;
  font-weight: 700;
  font-size: 1.1rem;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
  text-decoration: none;
}

.btn-generate-optimized:hover {
  background: #fff7ed;
  transform: translateY(-3px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.2);
  color: #92400e;
  text-decoration: none;
}

.btn-back-analysis,
.btn-back-review {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  background: white;
  color: var(--color-text-muted, #64748b);
  border: 2px solid var(--color-border, #e2e8f0);
  border-radius: 8px;
  font-weight: 500;
  font-size: 0.95rem;
  cursor: pointer;
  transition: all 0.2s ease;
  text-decoration: none;
}

.btn-back-analysis:hover,
.btn-back-review:hover {
  background: var(--color-bg-light, #f8fafc);
  color: var(--color-gray-700, #334155);
  border-color: var(--color-gray-300, #cbd5e1);
  text-decoration: none;
}

.btn-regenerate {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  font-weight: 600;
  font-size: 0.9rem;
  border-radius: 12px;
  text-decoration: none;
  transition: all 0.2s ease;
  cursor: pointer;
  border: none;
  text-align: center;
  white-space: nowrap;
  background: var(--gradient-warning, linear-gradient(135deg, #f59e0b, #d97706));
  color: white;
  box-shadow: var(--shadow-warning, 0 4px 12px rgba(245, 158, 11, 0.3));
}

.btn-regenerate:hover {
  text-decoration: none;
  transform: translateY(-1px);
  background: linear-gradient(135deg, #d97706, #b45309);
  box-shadow: 0 6px 20px rgba(245, 158, 11, 0.4);
  color: white;
}

.btn-retry {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  font-weight: 600;
  font-size: 0.9rem;
  border-radius: 12px;
  text-decoration: none;
  transition: all 0.2s ease;
  cursor: pointer;
  border: none;
  text-align: center;
  white-space: nowrap;
  background: var(--gradient-cv, linear-gradient(135deg, #dc2626, #b91c1c));
  color: white;
  box-shadow: var(--shadow-cv, 0 4px 12px rgba(220, 38, 38, 0.3));
}

.btn-retry:hover {
  text-decoration: none;
  transform: translateY(-1px);
  background: var(--gradient-cv-hover, linear-gradient(135deg, #b91c1c, #991b1b));
  box-shadow: 0 6px 20px rgba(220, 38, 38, 0.4);
  color: white;
}

.btn-cv-premium {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 14px 28px;
  font-weight: 600;
  font-size: 1.1rem;
  border-radius: 14px;
  text-decoration: none;
  transition: all 0.2s ease;
  cursor: pointer;
  border: none;
  text-align: center;
  white-space: normal;
  word-wrap: break-word;
  line-height: 1.3;
  background: var(--gradient-premium, linear-gradient(135deg, #8b5cf6, #7c3aed));
  color: white;
  box-shadow: var(--shadow-premium, 0 4px 12px rgba(139, 92, 246, 0.3));
  position: relative;
}

.btn-cv-premium:hover {
  text-decoration: none;
  transform: translateY(-1px);
  background: linear-gradient(135deg, #7c3aed, #6d28d9);
  box-shadow: 0 6px 20px rgba(139, 92, 246, 0.4);
  color: white;
}

.btn-cv-custom {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 28px;
  background: white;
  color: var(--color-cv-primary, #dc2626);
  border: 2px solid var(--color-cv-primary, #dc2626);
  border-radius: var(--radius-lg, 12px);
  font-weight: 600;
  font-size: 1rem;
  cursor: pointer;
  transition: all 0.2s ease;
  text-decoration: none;
}

.btn-cv-custom:hover {
  background: #fef2f2;
  color: var(--color-cv-dark, #b91c1c);
  border-color: var(--color-cv-dark, #b91c1c);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(220, 38, 38, 0.2);
  text-decoration: none;
}

.btn-cv-secondary {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  background: white;
  color: var(--color-cv-primary, #dc2626);
  border: 2px solid var(--color-cv-primary, #dc2626);
  border-radius: var(--radius-lg, 12px);
  font-weight: 600;
  font-size: 0.95rem;
  cursor: pointer;
  transition: all 0.2s ease;
  text-decoration: none;
}

.btn-cv-secondary:hover {
  background: #fef2f2;
  color: var(--color-cv-dark, #b91c1c);
  border-color: var(--color-cv-dark, #b91c1c);
  transform: translateY(-1px);
  text-decoration: none;
}

.btn-ai-review {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 28px;
  background: linear-gradient(135deg, #10b981, #059669);
  color: white;
  border: none;
  border-radius: var(--radius-lg, 12px);
  font-weight: 600;
  font-size: 1rem;
  cursor: pointer;
  transition: all 0.2s ease;
  text-decoration: none;
  box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);
}

.btn-ai-review:hover {
  background: linear-gradient(135deg, #059669, #047857);
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(16, 185, 129, 0.4);
  color: white;
  text-decoration: none;
}

.btn-continue-journey {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 16px 32px;
  background: linear-gradient(135deg, var(--color-premium, #8b5cf6), var(--color-premium-dark, #7c3aed));
  color: white;
  border: none;
  border-radius: var(--radius-lg, 12px);
  font-weight: 700;
  font-size: 1.1rem;
  cursor: pointer;
  transition: all 0.2s ease;
  text-decoration: none;
  box-shadow: 0 4px 15px rgba(139, 92, 246, 0.3);
}

.btn-continue-journey:hover {
  background: linear-gradient(135deg, var(--color-premium-dark, #7c3aed), var(--color-premium-darker, #6d28d9));
  transform: translateY(-3px);
  box-shadow: 0 8px 25px rgba(139, 92, 246, 0.4);
  color: white;
  text-decoration: none;
}

/* LinkedIn Primary Button */
.btn-linkedin {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 24px;
  background: linear-gradient(135deg, #0077b5, #005885);
  color: white;
  border-radius: 12px;
  font-weight: 600;
  font-size: 0.95rem;
  text-decoration: none;
  transition: all 0.2s ease;
  border: none;
  cursor: pointer;
  white-space: nowrap;
  box-shadow: 0 4px 12px rgba(0, 119, 181, 0.3);
}

.btn-linkedin:hover {
  background: linear-gradient(135deg, #005885, #004165);
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(0, 119, 181, 0.4);
  text-decoration: none;
  color: white;
}

.btn-linkedin:disabled {
  background: #9ca3af;
  box-shadow: none;
  cursor: not-allowed;
  transform: none;
}

/* LinkedIn Secondary Button */
.btn-linkedin-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 24px;
  background: white;
  color: #0077b5;
  border: 2px solid #0077b5;
  border-radius: 12px;
  font-weight: 600;
  font-size: 0.95rem;
  text-decoration: none;
  transition: all 0.2s ease;
  cursor: pointer;
  white-space: nowrap;
}

.btn-linkedin-secondary:hover {
  background: #f0f9ff;
  color: #005885;
  border-color: #005885;
  transform: translateY(-1px);
  text-decoration: none;
}

/* ========================================================================
   RESPONSIVE
   ======================================================================== */
@media (max-width: 768px) {
  .btn--large {
    padding: 12px 24px;
    font-size: 1rem;
  }

  .btn--extra-large {
    padding: 16px 32px;
    font-size: 1rem;
  }

  .btn-group {
    flex-direction: column;
    width: 100%;
  }

  .btn-group .btn {
    width: 100%;
    justify-content: center;
  }

  /* Allow text wrapping on mobile for all large/primary buttons */
  .btn,
  .btn-cv,
  .btn-cv-premium,
  .btn-cv-custom,
  .btn-linkedin-primary,
  .btn-linkedin-secondary,
  .btn-ai-review,
  .btn-ai-review-large,
  .btn-generate-optimization,
  .btn-generate-optimized,
  .btn-request-revision,
  .btn-continue-journey {
    white-space: normal;
    word-wrap: break-word;
    line-height: 1.3;
  }
}
