@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 */
@tailwind base;
@tailwind components;
@tailwind utilities;
: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: 14px;
  --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;
}
@layer components {
  .glass {
    background: var(--glass-bg);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--glass-border);
  }
  .glass-card {
    @apply glass rounded-squircle shadow-glass;
  }
  .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 {
    @apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2 focus-visible:ring-offset-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;
  }
}
::selection {
  background: rgba(var(--glow-color), 0.25);
}
#root {
  animation: fadeIn 0.2s ease-out;
}
@keyframes floatOrb {
  0%, 100% {
    transform: translate(0, 0) scale(1);
    opacity: 0.3;
  }
  33% {
    transform: translate(30px, -30px) scale(1.1);
    opacity: 0.5;
  }
  66% {
    transform: translate(-20px, -60px) scale(0.9);
    opacity: 0.2;
  }
}
@keyframes pulseGlow {
  0%, 100% {
    box-shadow: 0 0 20px rgba(220, 38, 38, 0.3), 0 0 60px rgba(220, 38, 38, 0.1);
  }
  50% {
    box-shadow: 0 0 40px rgba(220, 38, 38, 0.5), 0 0 100px rgba(220, 38, 38, 0.2);
  }
}
@keyframes shimmerSlow {
  0% {
    background-position: -200% 0;
  }
  100% {
    background-position: 200% 0;
  }
}
@keyframes drawLine {
  from {
    transform: scaleX(0);
  }
  to {
    transform: scaleX(1);
  }
}
html {
  scroll-behavior: smooth;
  overflow-x: hidden;
}
body {
  overflow-x: hidden;
  background: #0a0a0a;
}
.card-stagger > * {
  opacity: 0;
  animation: fadeUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.card-stagger > *:nth-child(1) {
  animation-delay: 0.1s;
}
.card-stagger > *:nth-child(2) {
  animation-delay: 0.2s;
}
.card-stagger > *:nth-child(3) {
  animation-delay: 0.3s;
}
.card-stagger > *:nth-child(4) {
  animation-delay: 0.4s;
}
.card-stagger > *:nth-child(5) {
  animation-delay: 0.5s;
}
.card-stagger > *:nth-child(6) {
  animation-delay: 0.6s;
}
.btn-glow {
  animation: pulseGlow 3s ease-in-out infinite;
}
.gradient-border {
  position: relative;
  background: #0a0a0a;
  border-radius: 24px;
}
.gradient-border::before {
  content: "";
  position: absolute;
  inset: -1px;
  border-radius: 25px;
  background:
    linear-gradient(
      135deg,
      rgba(220, 38, 38, 0.4),
      rgba(220, 38, 38, 0.1),
      rgba(220, 38, 38, 0.4));
  z-index: -1;
  animation: shimmerSlow 3s linear infinite;
  background-size: 200% 100%;
}
.text-reveal {
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}
.frame-indicator {
  position: fixed;
  bottom: 24px;
  right: 24px;
  z-index: 100;
  background: rgba(0, 0, 0, 0.6);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 100px;
  padding: 6px 14px;
  font-size: 11px;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.4);
  font-family: "JetBrains Mono", monospace;
}
.parallax-slow {
  transform: translateZ(-2px) scale(1.5);
}
.parallax-fast {
  transform: translateZ(1px) scale(0.5);
}
