File size: 1,971 Bytes
47b056e
 
 
 
16533c4
 
 
 
 
 
47b056e
16533c4
 
 
 
 
47b056e
16533c4
 
 
 
 
 
47b056e
16533c4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47b056e
16533c4
 
 
 
 
47b056e
16533c4
 
 
 
 
 
47b056e
16533c4
 
 
 
47b056e
 
16533c4
 
 
47b056e
16533c4
 
 
47b056e
16533c4
 
 
 
 
 
 
 
 
 
 
47b056e
16533c4
 
 
 
 
47b056e
16533c4
 
 
 
47b056e
16533c4
 
 
47b056e
 
16533c4
 
 
 
47b056e
16533c4
 
 
47b056e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
@tailwind base;
@tailwind components;
@tailwind utilities;

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

html {
  scroll-behavior: smooth;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  background-color: #0a0c10;
  color: #f8fafc;
  font-family: 'Inter', system-ui, sans-serif;
  min-height: 100vh;
}

/* ── Custom scrollbar ── */
::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}
::-webkit-scrollbar-track {
  background: #0f1218;
}
::-webkit-scrollbar-thumb {
  background: #2e3847;
  border-radius: 999px;
}
::-webkit-scrollbar-thumb:hover {
  background: #3d4d60;
}

/* ── Selection ── */
::selection {
  background: rgba(26, 107, 255, 0.35);
  color: #fff;
}

/* ── Focus visible ── */
:focus-visible {
  outline: 2px solid rgba(26, 107, 255, 0.6);
  outline-offset: 2px;
  border-radius: 4px;
}

/* ── Utility classes ── */
@layer utilities {
  .text-balance {
    text-wrap: balance;
  }

  .glow-brand {
    box-shadow: 0 0 30px rgba(26, 107, 255, 0.25);
  }

  .glow-emerald {
    box-shadow: 0 0 30px rgba(16, 185, 129, 0.2);
  }

  .shimmer {
    background: linear-gradient(
      90deg,
      rgba(255, 255, 255, 0) 0%,
      rgba(255, 255, 255, 0.05) 50%,
      rgba(255, 255, 255, 0) 100%
    );
    background-size: 200% 100%;
    animation: shimmer 2s linear infinite;
  }
}

/* ── Animations ── */
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes slideUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes bounceSubtle {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-6px); }
}

@keyframes shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position:  200% 0; }
}

/* Smooth number transitions */
.tabular-nums {
  font-variant-numeric: tabular-nums;
}