/* ============================================
   theme.css — HidrogenONE Unified Design Tokens
   Single source of truth for all website pages.
   
   Usage: Add <link rel="stylesheet" href="/css/theme.css"> to every page
   Variants: <html data-theme="auth"> or <html data-theme="dashboard">
   ============================================ */

:root {
  /* ── Backgrounds ── */
  --color-bg:              #0f172a;
  --color-bg-secondary:    #161b22;
  --color-bg-elevated:     #1e293b;

  --color-surface:         rgba(255, 255, 255, 0.04);
  --color-surface-hover:   rgba(255, 255, 255, 0.08);
  --color-glass:           rgba(255, 255, 255, 0.1);

  /* ── Borders ── */
  --color-border:          rgba(255, 255, 255, 0.08);
  --color-border-strong:   rgba(255, 255, 255, 0.15);
  --color-border-solid:    #30363d;

  /* ── Text ── */
  --color-text:            #f5f5f7;
  --color-text-secondary:  #94a3b8;
  --color-text-muted:      #64748b;

  /* ── Brand / Primary ── */
  --color-primary:         #6366f1;
  --color-primary-dark:    #4f46e5;
  --color-primary-light:   #818cf8;

  /* ── Secondary ── */
  --color-secondary:       #8b5cf6;
  --color-accent:          #06b6d4;

  /* ── Semantic ── */
  --color-success:         #10b981;
  --color-success-dark:    #059669;
  --color-warning:         #f59e0b;
  --color-warning-dark:    #d97706;
  --color-danger:          #ef4444;
  --color-danger-dark:     #dc2626;
  --color-info:            #58a6ff;

  /* ── Gradients ── */
  --gradient-primary:      linear-gradient(135deg, var(--color-primary), var(--color-secondary));
  --gradient-brand:        linear-gradient(135deg, var(--color-primary), var(--color-secondary) 50%, #ec4899);
  --gradient-bg:           linear-gradient(135deg, #0f0c29, #302b63 50%, #24243e);
  --gradient-success:      linear-gradient(135deg, var(--color-success), var(--color-success-dark));
  --gradient-danger:       linear-gradient(135deg, var(--color-danger), var(--color-danger-dark));

  /* ── Typography ── */
  --font-sans:             'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-mono:             'JetBrains Mono', 'Fira Code', monospace;

  /* ── Border Radius ── */
  --radius-sm:             8px;
  --radius-md:             12px;
  --radius-lg:             16px;
  --radius-xl:             24px;
  --radius-2xl:            32px;
  --radius-full:           9999px;

  /* ── Shadows ── */
  --shadow-sm:             0 4px 6px rgba(0, 0, 0, 0.1);
  --shadow-md:             0 8px 30px rgba(99, 102, 241, 0.3);
  --shadow-lg:             0 12px 40px rgba(99, 102, 241, 0.4);
  --shadow-glow:           0 0 60px rgba(99, 102, 241, 0.3);
  --shadow-card:           0 20px 60px rgba(0, 0, 0, 0.3);
  --shadow-elevated:       0 40px 80px rgba(0, 0, 0, 0.5);

  /* ── Layout ── */
  --container-xs:          440px;
  --container-sm:          520px;
  --container-md:          960px;
  --container-lg:          1200px;
  --container-xl:          1400px;

  --sidebar-width:         260px;
  --sidebar-collapsed:     70px;
  --header-height:         60px;

  /* ── Transitions ── */
  --transition-fast:       all 0.2s ease;
  --transition:            all 0.3s ease;
  --transition-slow:       all 0.6s ease;

  /* ── Backdrop ── */
  --backdrop-blur:         blur(20px);
  --backdrop-blur-heavy:   blur(40px);
}


/* ── Auth pages variant (login, register, forgot/reset-password, verify-email) ── */
[data-theme="auth"] {
  --color-bg:              #0a0a0f;
  --color-primary:         #007AFF;
  --color-primary-dark:    #0056CC;
  --color-primary-light:   #5AC8FA;
  --color-secondary:       #5856D6;
  --color-success:         #34C759;
  --color-success-dark:    #28A745;
  --color-danger:          #FF3B30;
  --color-danger-dark:     #CC2F26;
  --color-warning:         #FF9500;
  --color-warning-dark:    #CC7700;
  --shadow-md:             0 8px 30px rgba(0, 122, 255, 0.3);
  --shadow-lg:             0 15px 40px rgba(0, 122, 255, 0.3);
  --shadow-glow:           0 0 60px rgba(0, 122, 255, 0.3);
  --gradient-primary:      linear-gradient(135deg, #007AFF, #5856D6);
  --gradient-brand:        linear-gradient(135deg, #007AFF, #5856D6 50%, #AF52DE);
}

/* ── Dashboard variant (customer-dashboard) ── */
[data-theme="dashboard"] {
  --color-bg:              #0d1117;
  --color-bg-secondary:    #161b22;
  --color-bg-elevated:     #21262d;
  --color-primary:         #58a6ff;
  --color-primary-dark:    #388bfd;
  --color-primary-light:   #79c0ff;
  --color-secondary:       #a371f7;
  --color-success:         #3fb950;
  --color-success-dark:    #2ea043;
  --color-danger:          #f85149;
  --color-danger-dark:     #da3633;
  --color-warning:         #d29922;
  --color-warning-dark:    #bb8009;
  --color-text:            #f0f6fc;
  --color-text-secondary:  #8b949e;
  --color-text-muted:      #6e7681;
  --color-border:          rgba(48, 54, 61, 0.8);
  --color-border-solid:    #30363d;
  --shadow-md:             0 8px 30px rgba(88, 166, 255, 0.2);
  --shadow-glow:           0 0 20px rgba(88, 166, 255, 0.3);
}


/* ============================================
   Base Reset & Common Styles
   ============================================ */

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-family: var(--font-sans);
  color: var(--color-text);
  background-color: var(--color-bg);
  line-height: 1.6;
  min-height: 100vh;
}

a {
  color: var(--color-primary);
  text-decoration: none;
  transition: var(--transition-fast);
}

a:hover {
  color: var(--color-primary-light);
}


/* ============================================
   Common UI Components
   ============================================ */

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 24px;
  border: none;
  border-radius: var(--radius-md);
  font-family: var(--font-sans);
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  transition: var(--transition);
  text-decoration: none;
}

.btn-primary {
  background: var(--gradient-primary);
  color: #fff;
  box-shadow: var(--shadow-md);
}

.btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}

.btn-secondary {
  background: var(--color-surface);
  color: var(--color-text);
  border: 1px solid var(--color-border);
}

.btn-secondary:hover {
  background: var(--color-surface-hover);
  border-color: var(--color-border-strong);
  transform: translateY(-2px);
}

.btn-success {
  background: var(--gradient-success);
  color: #fff;
}

.btn-danger {
  background: var(--gradient-danger);
  color: #fff;
}

.btn-sm {
  padding: 8px 16px;
  font-size: 13px;
  border-radius: var(--radius-sm);
}

.btn-lg {
  padding: 16px 32px;
  font-size: 17px;
  border-radius: var(--radius-lg);
}

.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none !important;
}


/* Form Inputs */
.input {
  width: 100%;
  padding: 14px 18px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  color: var(--color-text);
  font-family: var(--font-sans);
  font-size: 15px;
  transition: var(--transition-fast);
  outline: none;
}

.input:focus {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
}

.input::placeholder {
  color: var(--color-text-muted);
}


/* Cards */
.card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  padding: 32px;
  backdrop-filter: var(--backdrop-blur);
  -webkit-backdrop-filter: var(--backdrop-blur);
}

.card-elevated {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  padding: 40px;
  box-shadow: var(--shadow-card);
  backdrop-filter: var(--backdrop-blur-heavy);
  -webkit-backdrop-filter: var(--backdrop-blur-heavy);
}


/* Status Badges */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border-radius: var(--radius-full);
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.badge-success {
  background: rgba(16, 185, 129, 0.15);
  color: var(--color-success);
  border: 1px solid rgba(16, 185, 129, 0.3);
}

.badge-warning {
  background: rgba(245, 158, 11, 0.15);
  color: var(--color-warning);
  border: 1px solid rgba(245, 158, 11, 0.3);
}

.badge-danger {
  background: rgba(239, 68, 68, 0.15);
  color: var(--color-danger);
  border: 1px solid rgba(239, 68, 68, 0.3);
}

.badge-info {
  background: rgba(99, 102, 241, 0.15);
  color: var(--color-primary);
  border: 1px solid rgba(99, 102, 241, 0.3);
}


/* Alerts / Notifications */
.alert {
  padding: 16px 20px;
  border-radius: var(--radius-md);
  font-size: 14px;
  display: flex;
  align-items: center;
  gap: 12px;
}

.alert-success {
  background: rgba(16, 185, 129, 0.1);
  border: 1px solid rgba(16, 185, 129, 0.2);
  color: var(--color-success);
}

.alert-error {
  background: rgba(239, 68, 68, 0.1);
  border: 1px solid rgba(239, 68, 68, 0.2);
  color: var(--color-danger);
}

.alert-warning {
  background: rgba(245, 158, 11, 0.1);
  border: 1px solid rgba(245, 158, 11, 0.2);
  color: var(--color-warning);
}

.alert-info {
  background: rgba(99, 102, 241, 0.1);
  border: 1px solid rgba(99, 102, 241, 0.2);
  color: var(--color-primary-light);
}


/* Utility Classes */
.text-center { text-align: center; }
.text-secondary { color: var(--color-text-secondary); }
.text-muted { color: var(--color-text-muted); }
.text-success { color: var(--color-success); }
.text-danger { color: var(--color-danger); }
.text-warning { color: var(--color-warning); }

.mt-1 { margin-top: 8px; }
.mt-2 { margin-top: 16px; }
.mt-3 { margin-top: 24px; }
.mt-4 { margin-top: 32px; }
.mb-1 { margin-bottom: 8px; }
.mb-2 { margin-bottom: 16px; }
.mb-3 { margin-bottom: 24px; }
.mb-4 { margin-bottom: 32px; }

.flex { display: flex; }
.flex-col { flex-direction: column; }
.items-center { align-items: center; }
.justify-center { justify-content: center; }
.gap-1 { gap: 8px; }
.gap-2 { gap: 16px; }
.gap-3 { gap: 24px; }


/* Loading spinner (used across auth pages) */
.spinner {
  width: 24px;
  height: 24px;
  border: 3px solid var(--color-border);
  border-top-color: var(--color-primary);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}


/* Responsive */
@media (max-width: 768px) {
  .card, .card-elevated {
    padding: 24px;
    border-radius: var(--radius-lg);
  }

  .btn-lg {
    padding: 14px 24px;
    font-size: 15px;
  }
}
