/* ═══════════════════════════════════════════════════════════
   WasteWise — Auth & Paywall Styles
   Uses the app's existing design system (neutral-*, primary-*)
   ═══════════════════════════════════════════════════════════ */

/* ─── Auth Modal Overlay ─────────────────────────────────── */
.auth-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: hsla(210, 28%, 7%, 0.75);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  opacity: 0;
  visibility: hidden;
  transition: all var(--duration-slow) var(--ease-default);
  padding: var(--space-4);
}
.auth-overlay.active {
  opacity: 1;
  visibility: visible;
}

.auth-modal {
  background: var(--neutral-800);
  border: 1px solid var(--neutral-700);
  border-radius: var(--radius-2xl);
  padding: var(--space-8);
  width: 100%;
  max-width: 420px;
  position: relative;
  transform: translateY(20px) scale(0.95);
  transition: transform var(--duration-slow) var(--ease-spring);
  box-shadow: var(--shadow-xl), var(--glow-primary);
}
.auth-overlay.active .auth-modal {
  transform: translateY(0) scale(1);
}

.auth-close {
  position: absolute;
  top: var(--space-4);
  right: var(--space-4);
  background: var(--neutral-850);
  border: 1px solid var(--neutral-700);
  border-radius: var(--radius-full);
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--neutral-300);
  transition: all var(--duration-fast);
}
.auth-close:hover {
  background: var(--color-error);
  color: white;
  border-color: var(--color-error);
}

/* ─── Auth Header ────────────────────────────────────────── */
.auth-header {
  text-align: center;
  margin-bottom: var(--space-6);
}
.auth-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  margin-bottom: var(--space-4);
  font-family: var(--font-heading);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--neutral-0);
}
.auth-header h2 {
  font-family: var(--font-heading);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--neutral-0);
  margin-bottom: var(--space-1);
}
.auth-header p {
  font-size: var(--text-sm);
  color: var(--neutral-300);
}

/* ─── Auth Form ──────────────────────────────────────────── */
.auth-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.auth-field label {
  display: block;
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--neutral-200);
  margin-bottom: var(--space-1);
}
.auth-input-wrap {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  background: var(--neutral-850);
  border: 1px solid var(--neutral-700);
  border-radius: var(--radius-lg);
  padding: 0 var(--space-4);
  transition: all var(--duration-fast);
}
.auth-input-wrap:focus-within {
  border-color: var(--primary-400);
  box-shadow: 0 0 0 3px hsla(152, 56%, 40%, 0.15);
}
.auth-input-wrap svg,
.auth-input-wrap .lucide-icon {
  width: 18px;
  height: 18px;
  color: var(--neutral-400);
  flex-shrink: 0;
}
.auth-input-wrap input {
  flex: 1;
  background: transparent;
  border: none;
  outline: none;
  padding: var(--space-3) 0;
  font-size: var(--text-base);
  color: var(--neutral-100);
  font-family: var(--font-sans);
}
.auth-input-wrap input::placeholder {
  color: var(--neutral-400);
}
.auth-hidden {
  display: none !important;
}

.auth-error {
  background: hsla(0, 72%, 55%, 0.1);
  border: 1px solid hsla(0, 72%, 55%, 0.3);
  color: var(--color-error);
  padding: var(--space-3);
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  text-align: center;
}

.auth-submit {
  position: relative;
  background: var(--gradient-accent);
  color: white;
  border: none;
  border-radius: var(--radius-lg);
  padding: var(--space-3) var(--space-6);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  cursor: pointer;
  transition: all var(--duration-normal) var(--ease-default);
  font-family: var(--font-sans);
  min-height: 48px;
  box-shadow: var(--shadow-md);
}
.auth-submit:hover:not(:disabled) {
  background: var(--gradient-accent-hover);
  transform: translateY(-1px);
  box-shadow: var(--shadow-lg), var(--glow-primary);
}
.auth-submit:disabled {
  opacity: 0.7;
  cursor: not-allowed;
}

.auth-spinner {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 22px;
  height: 22px;
  border: 3px solid rgba(255, 255, 255, 0.3);
  border-top-color: white;
  border-radius: 50%;
  animation: spin 0.6s linear infinite;
}

.auth-switch {
  text-align: center;
  margin-top: var(--space-5);
  font-size: var(--text-sm);
  color: var(--neutral-300);
}
.auth-switch-btn {
  background: none;
  border: none;
  color: var(--primary-400);
  font-weight: var(--weight-semibold);
  cursor: pointer;
  font-size: var(--text-sm);
  font-family: var(--font-sans);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.auth-switch-btn:hover {
  color: var(--primary-300);
}

/* ─── Header Auth Area ───────────────────────────────────── */
.header-auth-area {
  display: flex;
  align-items: center;
  margin-left: var(--space-3);
}

.header-auth-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  background: var(--gradient-accent);
  color: white;
  border: none;
  border-radius: var(--radius-full);
  padding: var(--space-2) var(--space-4);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  cursor: pointer;
  font-family: var(--font-sans);
  transition: all var(--duration-normal) var(--ease-default);
  white-space: nowrap;
  box-shadow: var(--shadow-sm);
}
.header-auth-btn:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-md), var(--glow-primary);
}
.header-auth-btn svg {
  width: 16px;
  height: 16px;
}

.header-user-info {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  position: relative;
}
.header-user-avatar {
  width: 34px;
  height: 34px;
  border-radius: var(--radius-full);
  background: var(--gradient-accent);
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-weight: var(--weight-bold);
  font-size: var(--text-sm);
  cursor: pointer;
  border: 2px solid transparent;
  transition: all var(--duration-fast);
  box-shadow: var(--shadow-sm);
}
.header-user-avatar:hover {
  border-color: var(--primary-400);
  box-shadow: var(--glow-primary);
}

.header-premium-badge {
  background: linear-gradient(135deg, #fbbf24, #f59e0b);
  color: #1a1a1a;
  font-size: 10px;
  font-weight: var(--weight-bold);
  padding: 2px 6px;
  border-radius: var(--radius-full);
  letter-spacing: 0.5px;
}

.header-user-dropdown {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  background: var(--neutral-800);
  border: 1px solid var(--neutral-700);
  border-radius: var(--radius-lg);
  padding: var(--space-2);
  min-width: 180px;
  box-shadow: var(--shadow-xl);
  z-index: 200;
  display: none;
  animation: fadeInUp var(--duration-normal) var(--ease-out);
}
.header-user-dropdown.show {
  display: block;
}
.header-user-dropdown a,
.header-user-dropdown button {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  color: var(--neutral-100);
  text-decoration: none;
  border: none;
  background: none;
  width: 100%;
  cursor: pointer;
  font-family: var(--font-sans);
  transition: background var(--duration-fast);
}
.header-user-dropdown a:hover,
.header-user-dropdown button:hover {
  background: var(--neutral-700);
  color: var(--neutral-0);
}
.header-user-dropdown .dropdown-divider {
  height: 1px;
  background: var(--neutral-700);
  margin: var(--space-1) 0;
}
.dropdown-logout {
  color: var(--color-error) !important;
}

/* ═══════════════════════════════════════════════════════════
   PAYWALL MODAL
   ═══════════════════════════════════════════════════════════ */

.paywall-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: flex-start; /* Prevent top cutoff on small screens */
  justify-content: center;
  background: hsla(210, 28%, 7%, 0.8);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  opacity: 0;
  visibility: hidden;
  transition: all var(--duration-slow) var(--ease-default);
  padding: var(--space-4);
  overflow-y: auto;
}
.paywall-overlay.active {
  opacity: 1;
  visibility: visible;
}

.paywall-modal {
  background: var(--neutral-800);
  border: 1px solid var(--neutral-700);
  border-radius: var(--radius-2xl);
  padding: var(--space-8);
  width: 100%;
  max-width: 520px;
  margin: auto; /* Center when possible, but allow scrolling when tall */
  position: relative;
  transform: translateY(30px) scale(0.95);
  transition: transform var(--duration-slow) var(--ease-spring);
  box-shadow: var(--shadow-xl), var(--glow-strong);
  overflow: hidden;
}
.paywall-overlay.active .paywall-modal {
  transform: translateY(0) scale(1);
}

.paywall-close {
  position: absolute;
  top: var(--space-4);
  right: var(--space-4);
  background: var(--neutral-850);
  border: 1px solid var(--neutral-700);
  border-radius: var(--radius-full);
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--neutral-300);
  transition: all var(--duration-fast);
  z-index: 2;
}
.paywall-close:hover {
  background: var(--color-error);
  color: white;
}

/* Particles */
.paywall-particles {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
}
.paywall-particle {
  position: absolute;
  border-radius: 50%;
  opacity: 0.25;
  animation: paywall-float linear infinite;
}
@keyframes paywall-float {
  0%, 100% { transform: translateY(0) scale(1); opacity: 0.2; }
  50% { transform: translateY(-30px) scale(1.2); opacity: 0.5; }
}

/* Header */
.paywall-header {
  text-align: center;
  margin-bottom: var(--space-6);
  position: relative;
  z-index: 1;
}
.paywall-badge-premium {
  display: inline-block;
  background: linear-gradient(135deg, #fbbf24, #f59e0b, #d97706);
  color: #1a1a1a;
  font-size: 11px;
  font-weight: var(--weight-black);
  padding: 4px 14px;
  border-radius: var(--radius-full);
  letter-spacing: 1.5px;
  margin-bottom: var(--space-3);
  animation: premium-shimmer 2s ease-in-out infinite;
}
@keyframes premium-shimmer {
  0%, 100% { box-shadow: 0 0 15px rgba(251, 191, 36, 0.3); }
  50% { box-shadow: 0 0 30px rgba(251, 191, 36, 0.5); }
}

.paywall-title {
  font-family: var(--font-heading);
  font-size: var(--text-2xl);
  font-weight: var(--weight-black);
  background: linear-gradient(135deg, var(--primary-400), var(--primary-300), #fbbf24);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  margin-bottom: var(--space-2);
}
.paywall-subtitle {
  font-size: var(--text-sm);
  color: var(--neutral-300);
  max-width: 380px;
  margin: 0 auto;
  line-height: var(--leading-relaxed);
}

/* Plans */
.paywall-plans {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
  margin-bottom: var(--space-6);
  position: relative;
  z-index: 1;
}
.paywall-plan {
  background: var(--neutral-850);
  border: 2px solid var(--neutral-700);
  border-radius: var(--radius-xl);
  padding: var(--space-5);
  text-align: center;
  position: relative;
  transition: all var(--duration-normal) var(--ease-default);
}
.paywall-plan:hover {
  border-color: var(--primary-500);
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}
.paywall-plan-featured {
  border-color: var(--primary-400);
  box-shadow: var(--glow-primary);
}
.paywall-plan-ribbon {
  position: absolute;
  top: -1px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--gradient-accent);
  color: white;
  font-size: 10px;
  font-weight: var(--weight-bold);
  padding: 3px 12px;
  border-radius: 0 0 var(--radius-md) var(--radius-md);
  letter-spacing: 0.5px;
}
.paywall-plan-name {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--neutral-300);
  margin-bottom: var(--space-2);
  margin-top: var(--space-2);
}
.paywall-plan-price {
  font-family: var(--font-heading);
  font-size: var(--text-xl);
  font-weight: var(--weight-black);
  color: var(--neutral-0);
}
.paywall-plan-period {
  font-size: var(--text-xs);
  color: var(--neutral-400);
  margin-bottom: var(--space-1);
}
.paywall-plan-equiv {
  font-size: var(--text-xs);
  color: var(--primary-400);
  font-weight: var(--weight-medium);
  margin-bottom: var(--space-3);
}
.paywall-plan-btn {
  width: 100%;
  padding: var(--space-2) var(--space-4);
  border: 2px solid var(--neutral-600);
  background: transparent;
  color: var(--neutral-100);
  border-radius: var(--radius-lg);
  font-weight: var(--weight-semibold);
  font-size: var(--text-sm);
  cursor: pointer;
  transition: all var(--duration-normal) var(--ease-default);
  font-family: var(--font-sans);
  margin-top: var(--space-3);
}
.paywall-plan-btn:hover {
  border-color: var(--primary-400);
  color: var(--primary-400);
}
.paywall-plan-btn-primary {
  background: var(--gradient-accent);
  border-color: transparent;
  color: white;
  box-shadow: var(--shadow-sm);
  animation: pulseGlow 2s var(--ease-default) infinite;
}
.paywall-plan-btn-primary:hover {
  background: var(--gradient-accent-hover);
  color: white;
  transform: translateY(-1px);
  box-shadow: var(--shadow-md), var(--glow-primary);
  animation: none;
}

/* Features */
.paywall-features {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--space-5);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-2);
  position: relative;
  z-index: 1;
}
.paywall-features li {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  color: var(--neutral-200);
  padding: var(--space-1) 0;
}
.paywall-features li svg {
  width: 16px;
  height: 16px;
  color: var(--primary-400);
  flex-shrink: 0;
}

.paywall-secure {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  font-size: var(--text-xs);
  color: var(--neutral-400);
  margin-bottom: var(--space-4);
  position: relative;
  z-index: 1;
}
.paywall-secure svg {
  width: 14px;
  height: 14px;
}

.paywall-later {
  display: block;
  width: 100%;
  background: none;
  border: none;
  color: var(--neutral-500);
  font-size: var(--text-sm);
  cursor: pointer;
  padding: var(--space-2);
  font-family: var(--font-sans);
  transition: color var(--duration-fast);
  position: relative;
  z-index: 1;
}
.paywall-later:hover {
  color: var(--neutral-300);
}

/* ─── Usage Badge ────────────────────────────────────────── */
.usage-badge {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  background: var(--neutral-850);
  border: 1px solid var(--neutral-700);
  border-radius: var(--radius-md);
  font-size: var(--text-xs);
  margin-bottom: var(--space-3);
}
.usage-badge-bar {
  flex: 1;
  height: 4px;
  background: var(--neutral-900);
  border-radius: var(--radius-full);
  overflow: hidden;
}
.usage-badge-fill {
  height: 100%;
  border-radius: var(--radius-full);
  transition: width var(--duration-slower) var(--ease-default);
}
.usage-badge-text {
  color: var(--neutral-300);
  font-weight: var(--weight-medium);
  white-space: nowrap;
}

/* ═══════════════════════════════════════════════════════════
   REDEEM PAGE
   ═══════════════════════════════════════════════════════════ */

.redeem-balance-card {
  background: var(--gradient-accent);
  border-radius: var(--radius-2xl);
  padding: var(--space-8);
  text-align: center;
  color: white;
  position: relative;
  overflow: hidden;
  box-shadow: var(--shadow-lg), var(--glow-strong);
}
.redeem-balance-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 30% 50%, rgba(255,255,255,0.1) 0%, transparent 60%);
}
.redeem-balance-label {
  font-size: var(--text-sm);
  opacity: 0.9;
  margin-bottom: var(--space-2);
  font-weight: var(--weight-medium);
  position: relative;
}
.redeem-balance-value {
  font-family: var(--font-heading);
  font-size: 3rem;
  font-weight: var(--weight-black);
  line-height: 1.1;
  margin-bottom: var(--space-1);
  position: relative;
}
.redeem-balance-equiv {
  font-size: var(--text-sm);
  opacity: 0.85;
  position: relative;
}

.redeem-wallet-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-2);
}
.redeem-wallet-btn {
  background: var(--neutral-850);
  border: 2px solid var(--neutral-700);
  border-radius: var(--radius-lg);
  padding: var(--space-3) var(--space-2);
  cursor: pointer;
  transition: all var(--duration-normal) var(--ease-default);
  font-family: var(--font-sans);
  text-align: center;
}
.redeem-wallet-btn:hover {
  border-color: var(--primary-500);
}
.redeem-wallet-btn.active {
  border-color: var(--primary-400);
  background: hsla(152, 56%, 40%, 0.1);
  box-shadow: 0 0 0 3px hsla(152, 56%, 40%, 0.1);
}

.redeem-history-item {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-4);
  background: var(--neutral-800);
  border: 1px solid hsla(152, 40%, 50%, 0.08);
  border-radius: var(--radius-lg);
  margin-bottom: var(--space-2);
  transition: background var(--duration-fast);
}
.redeem-history-item:hover {
  background: var(--neutral-850);
}

.redeem-status {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  white-space: nowrap;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-md);
}
.redeem-status-pending {
  color: var(--color-warning);
  background: hsla(38, 92%, 55%, 0.1);
}
.redeem-status-approved {
  color: var(--color-info);
  background: hsla(210, 70%, 55%, 0.1);
}
.redeem-status-completed {
  color: var(--color-success);
  background: hsla(142, 60%, 45%, 0.1);
}
.redeem-status-rejected {
  color: var(--color-error);
  background: hsla(0, 72%, 55%, 0.1);
}

/* ─── Spin Keyframe ──────────────────────────────────────── */
@keyframes spin {
  to { transform: rotate(360deg); }
}

/* ─── Responsive ─────────────────────────────────────────── */
@media (max-width: 480px) {
  .auth-modal, .paywall-modal {
    padding: var(--space-6);
    margin: var(--space-2);
  }
  .paywall-plans {
    grid-template-columns: 1fr;
  }
  .paywall-features {
    grid-template-columns: 1fr;
  }
  .paywall-title {
    font-size: var(--text-xl);
  }
  .redeem-wallet-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .redeem-balance-value {
    font-size: 2.2rem;
  }
}

@media (min-width: 768px) {
  .header-auth-area {
    display: flex;
  }
}
