@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500&display=swap";

/* vfs:src/styles/globals.css */
:root,
[data-theme=midnight] {
  --color-bg: #0a0b0f;
  --color-surface: #10121a;
  --color-surface-2: #16192a;
  --color-text: #f0f2ff;
  --color-text-muted: #8b91b8;
  --color-text-faint: #3d4268;
  --color-primary: #7c6af7;
  --color-primary-hover: #9082ff;
  --color-accent: #00d1ff;
  --color-border: rgba(120, 130, 200, 0.12);
  --color-border-strong: rgba(120, 130, 200, 0.25);
  --color-success: #22c55e;
  --color-warning: #f59e0b;
  --color-error: #ef4444;
  --color-info: #3b82f6;
  --radius: 0px;
  --glow-color:
    124,
    106,
    247;
  --accent-glow:
    0,
    209,
    255;
  --glass-bg: rgba(16, 18, 26, 0.7);
  --glass-border: rgba(120, 130, 200, 0.15);
}
[data-theme=ocean] {
  --color-bg: #050e1a;
  --color-surface: #091524;
  --color-surface-2: #102030;
  --color-text: #e0f0ff;
  --color-text-muted: #7aa8cc;
  --color-text-faint: #2a4a66;
  --color-primary: #0ea5e9;
  --color-primary-hover: #38bdf8;
  --color-accent: #06ffc8;
  --color-border: rgba(14, 165, 233, 0.15);
  --color-border-strong: rgba(14, 165, 233, 0.3);
  --glow-color:
    14,
    165,
    233;
  --accent-glow:
    6,
    255,
    200;
  --glass-bg: rgba(9, 21, 36, 0.7);
  --glass-border: rgba(14, 165, 233, 0.18);
}
[data-theme=forest] {
  --color-bg: #050f08;
  --color-surface: #091a0d;
  --color-surface-2: #0f2614;
  --color-text: #e0ffe8;
  --color-text-muted: #6dbb85;
  --color-text-faint: #234033;
  --color-primary: #22c55e;
  --color-primary-hover: #4ade80;
  --color-accent: #86efac;
  --color-border: rgba(34, 197, 94, 0.15);
  --color-border-strong: rgba(34, 197, 94, 0.3);
  --glow-color:
    34,
    197,
    94;
  --accent-glow:
    134,
    239,
    172;
  --glass-bg: rgba(9, 26, 13, 0.7);
  --glass-border: rgba(34, 197, 94, 0.18);
}
[data-theme=sunset] {
  --color-bg: #0f0807;
  --color-surface: #1a0e0a;
  --color-surface-2: #251510;
  --color-text: #fff0e8;
  --color-text-muted: #cc8c70;
  --color-text-faint: #4a2519;
  --color-primary: #f97316;
  --color-primary-hover: #fb923c;
  --color-accent: #fbbf24;
  --color-border: rgba(249, 115, 22, 0.15);
  --color-border-strong: rgba(249, 115, 22, 0.3);
  --glow-color:
    249,
    115,
    22;
  --accent-glow:
    251,
    191,
    36;
  --glass-bg: rgba(26, 14, 10, 0.7);
  --glass-border: rgba(249, 115, 22, 0.18);
}
[data-theme=neon] {
  --color-bg: #04000a;
  --color-surface: #0a0516;
  --color-surface-2: #120a24;
  --color-text: #f5e6ff;
  --color-text-muted: #a876db;
  --color-text-faint: #3a1a5e;
  --color-primary: #d946ef;
  --color-primary-hover: #e879f9;
  --color-accent: #06ffc8;
  --color-border: rgba(217, 70, 239, 0.15);
  --color-border-strong: rgba(217, 70, 239, 0.3);
  --glow-color:
    217,
    70,
    239;
  --accent-glow:
    6,
    255,
    200;
  --glass-bg: rgba(10, 5, 22, 0.7);
  --glass-border: rgba(217, 70, 239, 0.2);
}
[data-theme=rose] {
  --color-bg: #0f0508;
  --color-surface: #1a0810;
  --color-surface-2: #250d18;
  --color-text: #ffe8ef;
  --color-text-muted: #cc7090;
  --color-text-faint: #4a1a28;
  --color-primary: #f43f5e;
  --color-primary-hover: #fb7185;
  --color-accent: #fda4af;
  --color-border: rgba(244, 63, 94, 0.15);
  --color-border-strong: rgba(244, 63, 94, 0.3);
  --glow-color:
    244,
    63,
    94;
  --accent-glow:
    253,
    164,
    175;
  --glass-bg: rgba(26, 8, 16, 0.7);
  --glass-border: rgba(244, 63, 94, 0.18);
}
[data-theme=earth] {
  --color-bg: #faf8f5;
  --color-surface: #ffffff;
  --color-surface-2: #f4f0ea;
  --color-text: #1c1814;
  --color-text-muted: #6b5c4a;
  --color-text-faint: #bfb0a0;
  --color-primary: #92400e;
  --color-primary-hover: #78350f;
  --color-accent: #d97706;
  --color-border: rgba(146, 64, 14, 0.12);
  --color-border-strong: rgba(146, 64, 14, 0.25);
  --color-success: #15803d;
  --color-warning: #b45309;
  --color-error: #dc2626;
  --color-info: #1d4ed8;
  --glow-color:
    146,
    64,
    14;
  --accent-glow:
    217,
    119,
    6;
  --glass-bg: rgba(255, 255, 255, 0.85);
  --glass-border: rgba(146, 64, 14, 0.1);
}
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
html {
  font-family:
    Inter,
    system-ui,
    sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  scroll-behavior: smooth;
}
body {
  background-color: var(--color-bg);
  color: var(--color-text);
  min-height: 100vh;
  line-height: 1.6;
}
.glass {
  background: var(--glass-bg);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid var(--glass-border);
}
.glass-card {
  background: var(--glass-bg);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 1px 0 rgba(255, 255, 255, 0.05) inset;
}
.gradient-text {
  background:
    linear-gradient(
      135deg,
      var(--color-primary) 0%,
      var(--color-accent) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.glow {
  box-shadow: 0 0 20px rgba(var(--glow-color), 0.4), 0 0 60px rgba(var(--glow-color), 0.1);
}
.mesh-bg {
  background-image:
    radial-gradient(
      ellipse at 20% 50%,
      rgba(var(--glow-color), 0.15) 0%,
      transparent 50%),
    radial-gradient(
      ellipse at 80% 20%,
      rgba(var(--accent-glow), 0.1) 0%,
      transparent 50%);
}
.noise::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");
  pointer-events: none;
  z-index: 0;
  opacity: 0.4;
}
.focus-ring:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--color-primary), 0 0 0 4px var(--color-bg);
}
.skeleton {
  background:
    linear-gradient(
      90deg,
      var(--color-surface) 25%,
      var(--color-surface-2) 50%,
      var(--color-surface) 75%);
  background-size: 200% 100%;
  animation: shimmer 1.8s linear infinite;
}
.scrollbar-thin {
  scrollbar-width: thin;
  scrollbar-color: var(--color-border-strong) transparent;
}
.scrollbar-thin::-webkit-scrollbar {
  width: 5px;
  height: 5px;
}
.scrollbar-thin::-webkit-scrollbar-track {
  background: transparent;
}
.scrollbar-thin::-webkit-scrollbar-thumb {
  background: var(--color-border-strong);
  border-radius: 999px;
}
@keyframes shimmer {
  from {
    background-position: -200% 0;
  }
  to {
    background-position: 200% 0;
  }
}
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
::selection {
  background: rgba(var(--glow-color), 0.25);
}
#root {
  animation: fadeIn 0.2s ease-out;
}
