/* OMNI Browser — Design Tokens
 * Apple-calm liquid glass. Deep ink, electric violet, Inter.
 */

:root {
  /* Type */
  --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  /* Ink — deep, desaturated, warm-cool neutral */
  --ink-950: #06060a;
  --ink-900: #0a0a10;
  --ink-850: #0e0e16;
  --ink-800: #13131c;
  --ink-700: #1a1a24;

  /* Paper (light theme) */
  --paper-50:  #fafafb;
  --paper-100: #f4f4f6;
  --paper-200: #e9e9ed;

  /* Signature accent — electric violet */
  --violet-400: oklch(0.78 0.18 290);
  --violet-500: oklch(0.70 0.22 290);
  --violet-600: oklch(0.60 0.24 290);
  --violet-glow: oklch(0.70 0.22 290 / 0.35);

  /* Semantic */
  --ok-400:    oklch(0.80 0.15 160);
  --warn-400:  oklch(0.82 0.14 75);
  --danger-400:oklch(0.70 0.20 25);

  /* Surface (dark default) */
  --bg: var(--ink-900);
  --bg-elev: var(--ink-850);
  --text: oklch(0.98 0.005 280);
  --text-dim: oklch(0.98 0.005 280 / 0.6);
  --text-faint: oklch(0.98 0.005 280 / 0.35);
  --text-ghost: oklch(0.98 0.005 280 / 0.18);

  /* Glass — more translucent, floating */
  --glass-bg: oklch(1 0 0 / 0.03);
  --glass-bg-strong: oklch(1 0 0 / 0.05);
  --glass-bg-hover: oklch(1 0 0 / 0.07);
  --glass-bg-active: oklch(1 0 0 / 0.10);
  --glass-border: oklch(1 0 0 / 0.09);
  --glass-border-strong: oklch(1 0 0 / 0.16);
  --glass-highlight: oklch(1 0 0 / 0.18);
  --glass-edge: oklch(1 0 0 / 0.22);

  /* Shadow */
  --shadow-sm:  0 1px 2px rgb(0 0 0 / 0.4);
  --shadow-md:  0 8px 24px rgb(0 0 0 / 0.35);
  --shadow-lg:  0 24px 60px rgb(0 0 0 / 0.5);
  --shadow-xl:  0 40px 120px rgb(0 0 0 / 0.6);

  /* Radii */
  --r-sm: 8px;
  --r-md: 14px;
  --r-lg: 20px;
  --r-xl: 28px;
  --r-2xl: 36px;

  /* Easing */
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
}

[data-theme="light"] {
  --bg: var(--paper-50);
  --bg-elev: #ffffff;
  --text: oklch(0.20 0.01 280);
  --text-dim: oklch(0.20 0.01 280 / 0.65);
  --text-faint: oklch(0.20 0.01 280 / 0.45);
  --text-ghost: oklch(0.20 0.01 280 / 0.18);

  --glass-bg: oklch(0 0 0 / 0.03);
  --glass-bg-strong: oklch(0 0 0 / 0.05);
  --glass-bg-hover: oklch(0 0 0 / 0.06);
  --glass-bg-active: oklch(0 0 0 / 0.09);
  --glass-border: oklch(0 0 0 / 0.08);
  --glass-border-strong: oklch(0 0 0 / 0.14);
  --glass-highlight: oklch(1 0 0 / 0.7);
}

/* Reset */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
  font-family: var(--font-sans);
  font-feature-settings: 'ss01', 'cv11';
  background:
    radial-gradient(ellipse at 20% 10%, oklch(0.25 0.12 290 / 0.6), transparent 50%),
    radial-gradient(ellipse at 80% 80%, oklch(0.22 0.1 240 / 0.45), transparent 50%),
    radial-gradient(ellipse at 50% 50%, oklch(0.2 0.08 330 / 0.3), transparent 60%),
    var(--bg);
  background-attachment: fixed;
  color: var(--text);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
[data-theme="light"] body {
  background:
    radial-gradient(ellipse at 20% 10%, oklch(0.9 0.08 290 / 0.5), transparent 50%),
    radial-gradient(ellipse at 80% 80%, oklch(0.9 0.08 240 / 0.4), transparent 50%),
    var(--bg);
  background-attachment: fixed;
}
button, input, textarea, select { font: inherit; color: inherit; }
button { cursor: pointer; background: none; border: none; }
a { color: inherit; text-decoration: none; }
input, textarea { outline: none; }
::selection { background: var(--violet-glow); color: white; }

/* Scrollbars */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--glass-border-strong); border-radius: 999px; }
::-webkit-scrollbar-thumb:hover { background: var(--text-ghost); }

/* Utility: subtle grain */
.grain::before {
  content: '';
  position: absolute; inset: 0;
  pointer-events: none;
  opacity: 0.3;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence baseFrequency='0.9' numOctaves='2' seed='7'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.25 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}

/* Glass primitives — highly translucent, layered highlights */
.glass {
  background: linear-gradient(180deg, oklch(1 0 0 / 0.045), oklch(1 0 0 / 0.015));
  backdrop-filter: blur(28px) saturate(170%);
  -webkit-backdrop-filter: blur(28px) saturate(170%);
  border: 1px solid var(--glass-border);
  box-shadow:
    0 1px 0 var(--glass-highlight) inset,
    0 -1px 0 oklch(0 0 0 / 0.15) inset,
    0 20px 50px oklch(0 0 0 / 0.35),
    0 2px 6px oklch(0 0 0 / 0.2);
  transition: transform .4s var(--ease-out), box-shadow .4s var(--ease-out), background .3s var(--ease-out), border-color .3s var(--ease-out);
}
/* Default hover-lift for interactive glass cards (anything inside .main-wrap) */
.main-wrap .glass:not(.no-lift):hover {
  transform: translateY(-3px);
  border-color: var(--glass-border-strong);
  background: linear-gradient(180deg, oklch(1 0 0 / 0.08), oklch(1 0 0 / 0.03));
  box-shadow:
    0 1px 0 var(--glass-edge) inset,
    0 -1px 0 oklch(0 0 0 / 0.2) inset,
    0 30px 80px oklch(0 0 0 / 0.5),
    0 0 40px var(--violet-glow);
}
.glass-strong {
  background: linear-gradient(180deg, oklch(1 0 0 / 0.07), oklch(1 0 0 / 0.025));
  backdrop-filter: blur(40px) saturate(180%);
  -webkit-backdrop-filter: blur(40px) saturate(180%);
  border: 1px solid var(--glass-border-strong);
  box-shadow:
    0 1px 0 var(--glass-edge) inset,
    0 -1px 0 oklch(0 0 0 / 0.2) inset,
    0 30px 70px oklch(0 0 0 / 0.45),
    0 4px 12px oklch(0 0 0 / 0.25);
}
.glass-lift {
  transition: transform .35s var(--ease-out), box-shadow .35s var(--ease-out), border-color .35s var(--ease-out), background .3s var(--ease-out);
}
.glass-lift:hover {
  transform: translateY(-3px);
  border-color: var(--glass-border-strong);
  background: linear-gradient(180deg, oklch(1 0 0 / 0.075), oklch(1 0 0 / 0.03));
  box-shadow:
    0 1px 0 var(--glass-edge) inset,
    0 -1px 0 oklch(0 0 0 / 0.2) inset,
    0 30px 80px oklch(0 0 0 / 0.5),
    0 0 40px var(--violet-glow);
}
.hairline { border: 1px solid var(--glass-border); }

/* Light theme glass overrides */
[data-theme="light"] .glass {
  background: linear-gradient(180deg, oklch(1 0 0 / 0.55), oklch(1 0 0 / 0.3));
  box-shadow:
    0 1px 0 oklch(1 0 0 / 0.8) inset,
    0 20px 50px oklch(0 0 0 / 0.08),
    0 2px 6px oklch(0 0 0 / 0.04);
}
[data-theme="light"] .glass-strong {
  background: linear-gradient(180deg, oklch(1 0 0 / 0.7), oklch(1 0 0 / 0.4));
  box-shadow:
    0 1px 0 oklch(1 0 0 / 0.9) inset,
    0 30px 70px oklch(0 0 0 / 0.1);
}
[data-theme="light"] .glass-lift:hover {
  box-shadow:
    0 1px 0 oklch(1 0 0 / 0.9) inset,
    0 30px 80px oklch(0 0 0 / 0.15),
    0 0 40px var(--violet-glow);
}

/* Ambient background — rich multi-blob to show through glass */
.ambient {
  position: fixed; inset: 0; z-index: -1;
  overflow: hidden;
  pointer-events: none;
}
.ambient::before, .ambient::after {
  content: '';
  position: absolute;
  border-radius: 50%;
  filter: blur(140px);
  opacity: 0.9;
}
.ambient::before {
  width: 1200px; height: 1200px;
  top: -400px; left: -300px;
  background: radial-gradient(circle, var(--violet-500) 0%, transparent 65%);
  animation: blob-drift-a 26s ease-in-out infinite;
}
.ambient::after {
  width: 1000px; height: 1000px;
  bottom: -300px; right: -200px;
  background: radial-gradient(circle, oklch(0.6 0.22 240) 0%, transparent 65%);
  animation: blob-drift-b 32s ease-in-out infinite;
}
.ambient-extra {
  position: fixed; inset: 0; z-index: -1;
  pointer-events: none;
  overflow: hidden;
}
.ambient-extra::before {
  content: '';
  position: absolute;
  width: 800px; height: 800px;
  top: 20%; left: 35%;
  border-radius: 50%;
  filter: blur(160px);
  opacity: 0.6;
  background: radial-gradient(circle, oklch(0.65 0.22 330) 0%, transparent 65%);
  animation: blob-drift-c 40s ease-in-out infinite;
}
@keyframes blob-drift-a {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(60px, 40px) scale(1.1); }
}
@keyframes blob-drift-b {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(-50px, -30px) scale(1.08); }
}
@keyframes blob-drift-c {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(-80px, 60px) scale(0.9); }
  66% { transform: translate(70px, -40px) scale(1.1); }
}
[data-theme="light"] .ambient::before {
  background: radial-gradient(circle, oklch(0.75 0.18 290) 0%, transparent 70%);
  opacity: 0.4;
}
[data-theme="light"] .ambient::after {
  background: radial-gradient(circle, oklch(0.75 0.16 230) 0%, transparent 70%);
  opacity: 0.3;
}
[data-theme="light"] .ambient-extra::before {
  background: radial-gradient(circle, oklch(0.78 0.15 330) 0%, transparent 70%);
  opacity: 0.25;
}

/* Typography helpers */
.display {
  font-weight: 500;
  letter-spacing: -0.035em;
  line-height: 1.02;
}
.eyebrow {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-weight: 500;
  color: var(--text-faint);
}
.num { font-variant-numeric: tabular-nums; }

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 16px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: -0.005em;
  transition: all 0.2s var(--ease-out);
  border: 1px solid transparent;
  white-space: nowrap;
}
.btn-primary {
  background: linear-gradient(180deg, var(--violet-400), var(--violet-600));
  color: white;
  border-color: oklch(1 0 0 / 0.1);
  box-shadow: 0 1px 0 oklch(1 0 0 / 0.18) inset, 0 0 0 1px var(--violet-600), 0 10px 30px var(--violet-glow);
}
.btn-primary:hover { filter: brightness(1.08); transform: translateY(-1px); }
.btn-primary:active { transform: translateY(0); filter: brightness(0.98); }
.btn-glass {
  background: var(--glass-bg);
  border-color: var(--glass-border);
  color: var(--text);
  backdrop-filter: blur(20px);
}
.btn-glass:hover { background: var(--glass-bg-hover); border-color: var(--glass-border-strong); }
.btn-ghost { color: var(--text-dim); }
.btn-ghost:hover { background: var(--glass-bg); color: var(--text); }

.btn-lg { padding: 14px 22px; font-size: 14px; border-radius: 999px; }
.btn-sm { padding: 7px 12px; font-size: 12px; }

/* Chip */
.chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 500;
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  color: var(--text-dim);
}
.chip .dot { width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
.chip-violet { color: var(--violet-400); border-color: oklch(0.7 0.22 290 / 0.25); background: oklch(0.7 0.22 290 / 0.08); }
.chip-ok { color: var(--ok-400); border-color: oklch(0.8 0.15 160 / 0.25); background: oklch(0.8 0.15 160 / 0.08); }
.chip-warn { color: var(--warn-400); border-color: oklch(0.82 0.14 75 / 0.25); background: oklch(0.82 0.14 75 / 0.08); }
.chip-danger { color: var(--danger-400); border-color: oklch(0.7 0.2 25 / 0.25); background: oklch(0.7 0.2 25 / 0.08); }

/* Inputs */
.field {
  width: 100%;
  padding: 14px 18px;
  border-radius: 14px;
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  color: var(--text);
  font-size: 14px;
  transition: all 0.2s var(--ease-out);
}
.field::placeholder { color: var(--text-faint); }
.field:focus {
  background: var(--glass-bg-hover);
  border-color: var(--violet-500);
  box-shadow: 0 0 0 4px oklch(0.7 0.22 290 / 0.15);
}

/* Pulse */
@keyframes pulse-dot {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.5; transform: scale(1.4); }
}
.pulse { animation: pulse-dot 1.8s ease-in-out infinite; }

/* Focus-visible */
:focus-visible { outline: 2px solid var(--violet-400); outline-offset: 2px; border-radius: 10px; }

/* hidden scrollbars utility */
.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { scrollbar-width: none; }
