/* ═══════════════════════════════════════════════════════════════
   9Captcha Design System v2 — Premium Enterprise Dark
   Inspired by: Linear, Vercel, Stripe
   ═══════════════════════════════════════════════════════════════ */
@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap');

/* ── Tokens ── */
:root {
  --bg-primary: #000000;
  --bg-secondary: #09090b;
  --bg-tertiary: #18181b;
  --bg-elevated: #111113;

  --zinc-50: #fafafa;  --zinc-100: #f4f4f5;
  --zinc-200: #e4e4e7;  --zinc-300: #d4d4d8;
  --zinc-400: #a1a1aa;  --zinc-500: #71717a;
  --zinc-600: #52525b;  --zinc-700: #3f3f46;
  --zinc-800: #27272a;  --zinc-900: #18181b;
  --zinc-950: #09090b;

  --accent: #8b5cf6;
  --accent-hover: #7c3aed;
  --accent-muted: #6d28d9;
  --accent-surface: rgba(139,92,246,.08);
  --accent-glow: rgba(139,92,246,.25);

  --border-subtle: rgba(255,255,255,.06);
  --border-strong: rgba(255,255,255,.12);

  --success: #10b981;  --error: #ef4444;  --warning: #f59e0b;
  --info: #3b82f6;

  --font-sans: 'Inter',-apple-system,system-ui,sans-serif;
  --font-mono: 'JetBrains Mono',ui-monospace,monospace;

  --ease: cubic-bezier(.4,0,.2,1);
  --ease-spring: cubic-bezier(.16,1,.3,1);
  --t-fast: 150ms var(--ease);
  --t-smooth: 400ms var(--ease-spring);
  --t-premium: 700ms var(--ease-spring);

  --shadow-sm: 0 1px 2px rgba(0,0,0,.5);
  --shadow-md: 0 4px 12px rgba(0,0,0,.25);
  --shadow-lg: 0 12px 40px rgba(0,0,0,.4);
  --shadow-glass: 0 0 0 1px rgba(255,255,255,.04),0 20px 50px -12px rgba(0,0,0,.5);
  --shadow-glow: 0 0 40px rgba(139,92,246,.08);

  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 20px;
  --radius-full: 9999px;
}

/* ── Resets ── */
*,*::before,*::after { margin:0; padding:0; box-sizing:border-box; }

html { scroll-behavior: smooth; }

body {
  font-family: var(--font-sans);
  background: var(--bg-primary);
  color: var(--zinc-100);
  line-height: 1.6;
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}

/* ── Scrollbar ── */
::-webkit-scrollbar { width:6px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:var(--zinc-800); border-radius:var(--radius-full); }
::-webkit-scrollbar-thumb:hover { background:var(--zinc-600); }

/* ── Selection ── */
::selection { background:var(--accent-surface); color:#fff; }

/* ── Links ── */
a { color:inherit; text-decoration:none; }

/* ── Layout ── */
.container { width:100%; max-width:1200px; margin:0 auto; padding:0 24px; }

.auth-layout {
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  position:relative;
  overflow:hidden;
}

.auth-layout::before {
  content:'';
  position:absolute;
  top:-40%; left:50%; transform:translateX(-50%);
  width:800px; height:800px;
  background:radial-gradient(circle,rgba(139,92,246,.15) 0%,transparent 70%);
  pointer-events:none;
}

.dashboard-layout {
  width:100%; max-width:1100px;
  margin:0 auto; padding:32px 24px;
}

/* ── Typography ── */
h1,h2,h3,h4 { letter-spacing:-.03em; font-weight:700; color:#fff; line-height:1.2; }
.text-secondary { color:var(--zinc-400); }
.text-sm { font-size:.875rem; }
.text-xs { font-size:.75rem; }
.mono { font-family:var(--font-mono); }

.gradient-text {
  background:linear-gradient(135deg,#fff 0%,var(--zinc-400) 100%);
  -webkit-background-clip:text; -webkit-text-fill-color:transparent;
  background-clip:text;
}

/* ── Glass Card ── */
.glass-card {
  background:rgba(255,255,255,.03);
  border:1px solid var(--border-subtle);
  border-radius:var(--radius-lg);
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  box-shadow:var(--shadow-glass);
  transition:border-color var(--t-smooth),box-shadow var(--t-smooth);
}
.glass-card:hover {
  border-color:var(--border-strong);
  box-shadow:var(--shadow-glass),var(--shadow-glow);
}

/* ── Buttons ── */
.btn-primary {
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  background:#fff; color:#000;
  padding:10px 22px; border-radius:var(--radius-sm);
  font-size:.875rem; font-weight:600; font-family:var(--font-sans);
  cursor:pointer; border:none;
  transition:all var(--t-fast);
  position:relative; overflow:hidden;
}
.btn-primary:hover { background:var(--zinc-200); transform:translateY(-1px); box-shadow:var(--shadow-md); }
.btn-primary:active { transform:translateY(0); }

.btn-secondary {
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  background:rgba(255,255,255,.04); color:var(--zinc-300);
  border:1px solid var(--border-subtle);
  padding:10px 22px; border-radius:var(--radius-sm);
  font-size:.875rem; font-weight:500; font-family:var(--font-sans);
  cursor:pointer;
  transition:all var(--t-fast);
}
.btn-secondary:hover {
  background:rgba(255,255,255,.08); border-color:var(--border-strong);
  color:#fff; transform:translateY(-1px);
}

.btn-accent {
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  background:var(--accent); color:#fff;
  padding:10px 22px; border-radius:var(--radius-sm);
  font-size:.875rem; font-weight:600; font-family:var(--font-sans);
  cursor:pointer; border:none;
  transition:all var(--t-fast);
}
.btn-accent:hover { background:var(--accent-hover); transform:translateY(-1px); box-shadow:0 4px 20px var(--accent-glow); }

.btn-sm { padding:6px 14px; font-size:13px; }

/* ── Inputs ── */
.custom-input {
  width:100%; padding:12px 16px;
  background:rgba(255,255,255,.03);
  border:1px solid var(--border-subtle);
  border-radius:var(--radius-sm);
  color:#fff; font-size:.875rem; font-family:var(--font-sans);
  transition:all var(--t-fast);
  outline:none;
}
.custom-input::placeholder { color:var(--zinc-600); }
.custom-input:focus {
  border-color:var(--accent);
  box-shadow:0 0 0 3px var(--accent-surface),0 0 20px rgba(139,92,246,.06);
  background:rgba(255,255,255,.05);
}
.custom-input option {
  background:var(--bg-secondary);
  color:#fff;
}

/* ── Badges ── */
.badge {
  display:inline-flex; align-items:center; gap:4px;
  padding:3px 10px; border-radius:var(--radius-full);
  font-size:11px; font-weight:600;
  text-transform:uppercase; letter-spacing:.06em;
  border:1px solid transparent;
}
.badge-green { background:rgba(16,185,129,.1); color:#34d399; border-color:rgba(16,185,129,.2); }
.badge-red { background:rgba(239,68,68,.1); color:#f87171; border-color:rgba(239,68,68,.2); }
.badge-purple { background:rgba(139,92,246,.1); color:#a78bfa; border-color:rgba(139,92,246,.2); }
.badge-blue { background:rgba(59,130,246,.1); color:#60a5fa; border-color:rgba(59,130,246,.2); }

/* ── Navbar ── */
.navbar {
  height:60px;
  border-bottom:1px solid var(--border-subtle);
  background:rgba(0,0,0,.7);
  backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px);
  position:sticky; top:0; z-index:100;
}
.navbar .container {
  height:100%; display:flex; align-items:center; justify-content:space-between;
}
.brand-logo {
  font-size:1.1rem; font-weight:700;
  display:flex; align-items:center; gap:10px;
  color:#fff;
}
.brand-icon {
  width:28px; height:28px;
  display:flex; align-items:center; justify-content:center;
  flex-shrink:0;
}
.nav-actions { display:flex; align-items:center; gap:8px; }

/* ── Auth Card ── */
.auth-card {
  width:100%; max-width:420px;
  padding:40px 36px;
  position:relative; z-index:1;
}
.auth-header {
  text-align:center; margin-bottom:28px;
}
.auth-header .brand-logo { justify-content:center; margin-bottom:8px; }
.auth-form { display:flex; flex-direction:column; gap:18px; }
.input-group { display:flex; flex-direction:column; gap:6px; }
.input-group label { font-size:.8125rem; font-weight:500; color:var(--zinc-400); }
.auth-footer {
  display:flex; align-items:center; justify-content:center; gap:8px;
  margin-top:24px; padding-top:20px;
  border-top:1px solid var(--border-subtle);
}
.text-accent { color:var(--accent); font-weight:500; }
.text-accent:hover { color:var(--accent-hover); }

/* ── Animations ── */
@keyframes fadeInUp {
  from { opacity:0; transform:translateY(24px); }
  to { opacity:1; transform:translateY(0); }
}
@keyframes float {
  0%,100% { transform:translateY(0); }
  50% { transform:translateY(-8px); }
}
@keyframes shimmer {
  0% { background-position:-200% 0; }
  100% { background-position:200% 0; }
}
@keyframes pulse-glow {
  0%,100% { opacity:.5; }
  50% { opacity:1; }
}
@keyframes beam {
  0% { transform:translateX(-100%) rotate(45deg); opacity:0; }
  50% { opacity:.15; }
  100% { transform:translateX(200%) rotate(45deg); opacity:0; }
}
@keyframes spin { to { transform:rotate(360deg); } }

.animate-fade-in-up { animation:fadeInUp .6s var(--ease-spring) both; }
.animate-float { animation:float 6s ease-in-out infinite; }
.stagger-1 { animation-delay:.1s; }
.stagger-2 { animation-delay:.2s; }
.stagger-3 { animation-delay:.3s; }
.stagger-4 { animation-delay:.4s; }
.stagger-5 { animation-delay:.5s; }

/* ── Background Effects ── */
.beam-container {
  position:fixed; inset:0;
  overflow:hidden; pointer-events:none; z-index:-1;
}
.beam {
  position:absolute;
  width:120px; height:100vh;
  background:linear-gradient(90deg,transparent,rgba(139,92,246,.04),transparent);
  animation:beam 10s infinite linear;
}

/* Ambient glow orbs */
.bg-glow {
  position:fixed; pointer-events:none; z-index:-1;
  border-radius:50%;
  filter:blur(120px);
  opacity:.35;
}
.bg-glow-1 {
  width:600px; height:600px;
  top:-200px; left:-100px;
  background:radial-gradient(circle,rgba(139,92,246,.2),transparent 70%);
}
.bg-glow-2 {
  width:500px; height:500px;
  bottom:-150px; right:-100px;
  background:radial-gradient(circle,rgba(59,130,246,.12),transparent 70%);
}

/* Grid pattern overlay */
.bg-grid {
  position:fixed; inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);
  background-size:64px 64px;
  pointer-events:none; z-index:-1;
}

/* ── Utilities ── */
.w-full { width:100%; }
.mt-2 { margin-top:.5rem; }
.mt-4 { margin-top:1rem; }
.mt-8 { margin-top:2rem; }
.mb-2 { margin-bottom:.5rem; }
.mb-4 { margin-bottom:1rem; }
.mb-6 { margin-bottom:1.5rem; }
.mb-8 { margin-bottom:2rem; }
.flex { display:flex; }
.items-center { align-items:center; }
.justify-between { justify-content:space-between; }
.justify-center { justify-content:center; }
.justify-end { justify-content:flex-end; }
.gap-2 { gap:.5rem; }
.gap-3 { gap:.75rem; }
.gap-4 { gap:1rem; }
.text-center { text-align:center; }
.hidden { display:none !important; }
.py-8 { padding-top:2rem; padding-bottom:2rem; }
.font-medium { font-weight:500; }
.uppercase { text-transform:uppercase; }
.tracking-wider { letter-spacing:.05em; }

/* ── Responsive ── */
@media (max-width:768px) {
  html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
  body { overflow-x:hidden; width:100vw; }
  .container { padding:0 12px; }
  .nav-actions { gap:4px; }
  .auth-card { padding:28px 20px; }
  .dashboard-layout { padding:16px 10px; max-width:100vw; overflow-x:hidden; }

  /* Prevent iOS zoom on input focus */
  input, select, textarea { font-size:16px !important; }

  /* Table overflow containment */
  .glass-card { overflow-x:auto; -webkit-overflow-scrolling:touch; max-width:100vw; }
  table { font-size:.72rem; }
  th, td { padding:8px 6px !important; white-space:nowrap; }

  /* Navbar compact */
  .navbar .container { padding:0 10px; }
  .brand-logo { font-size:.95rem; gap:6px; }
  .brand-icon { width:24px; height:24px; }

  /* Button sizing */
  .btn-accent, .btn-primary, .btn-secondary { padding:8px 14px; font-size:.78rem; }
  .btn-sm { padding:5px 10px; font-size:.7rem; }
}