● Zion Boggan
repos/Stepping App/apps/web/src/app/globals.css
zionboggan.com ↗
215 lines · css
History for this file →
1
@import "tailwindcss";
2
 
3
 
4
:root {
5
  --stage: #0a0a0b;
6
  --bone: #f4f1ea;
7
  --gold: #3d5afe;
8
  --gold-bright: #6e86ff;
9
  --ash: #9aa1b0;
10
  --line: rgba(244, 241, 234, 0.12);
11
}
12
 
13
@theme inline {
14
  --color-stage: var(--stage);
15
  --color-bone: var(--bone);
16
  --color-gold: var(--gold);
17
  --color-gold-bright: var(--gold-bright);
18
  --color-ash: var(--ash);
19
  --font-display: var(--font-bricolage);
20
  --font-serif: var(--font-instrument);
21
  --font-mono: var(--font-space-mono);
22
}
23
 
24
* {
25
  box-sizing: border-box;
26
}
27
 
28
html {
29
  -webkit-font-smoothing: antialiased;
30
  text-rendering: optimizeLegibility;
31
}
32
 
33
body {
34
  background: var(--stage);
35
  color: var(--bone);
36
  font-family: var(--font-bricolage), system-ui, sans-serif;
37
  overflow-x: hidden;
38
}
39
 
40
::selection {
41
  background: var(--gold);
42
  color: var(--stage);
43
}
44
 
45
 
46
.kicker {
47
  font-family: var(--font-space-mono), monospace;
48
  font-size: 0.8rem;
49
  letter-spacing: 0.22em;
50
  text-transform: uppercase;
51
  color: var(--ash);
52
}
53
 
54
.display {
55
  font-family: var(--font-bricolage), sans-serif;
56
  font-weight: 800;
57
  line-height: 0.86;
58
  letter-spacing: -0.03em;
59
}
60
 
61
.serif {
62
  font-family: var(--font-instrument), Georgia, serif;
63
}
64
 
65
@keyframes marquee {
66
  from {
67
    transform: translateX(0);
68
  }
69
  to {
70
    transform: translateX(-50%);
71
  }
72
}
73
 
74
.marquee-track {
75
  animation: marquee 38s linear infinite;
76
}
77
 
78
@keyframes beatIn {
79
  0% {
80
    opacity: 0;
81
    transform: translateY(20px);
82
  }
83
  100% {
84
    opacity: 1;
85
    transform: translateY(0);
86
  }
87
}
88
 
89
.beat-in {
90
  animation: beatIn 0.55s cubic-bezier(0.2, 0.85, 0.2, 1) both;
91
}
92
 
93
.b1 { animation-delay: 0.02s; }
94
.b2 { animation-delay: 0.1s; }
95
.b3 { animation-delay: 0.26s; }
96
.b4 { animation-delay: 0.34s; }
97
.b5 { animation-delay: 0.46s; }
98
 
99
.emblem-float {
100
  animation: emblemFloat 9s ease-in-out infinite alternate;
101
}
102
 
103
.emblem-sway {
104
  transform-origin: 50% 86%;
105
  animation: emblemSway 11s ease-in-out infinite alternate;
106
}
107
 
108
.emblem-in {
109
  opacity: 0;
110
  animation: emblemIn 0.9s cubic-bezier(0.2, 0.85, 0.2, 1) forwards;
111
}
112
 
113
.emblem-draw {
114
  stroke-dasharray: 1;
115
  stroke-dashoffset: 1;
116
  animation: emblemDraw 1.1s cubic-bezier(0.4, 0, 0.2, 1) forwards;
117
}
118
 
119
.emblem-pop {
120
  opacity: 0;
121
  transform-box: fill-box;
122
  transform-origin: center;
123
  animation:
124
    emblemPop 0.5s cubic-bezier(0.2, 0.85, 0.3, 1.3) forwards,
125
    emblemPulse 4s ease-in-out 1.6s infinite;
126
}
127
 
128
.emblem-glint {
129
  animation: emblemGlint 5s ease-in-out infinite alternate;
130
}
131
 
132
.e1 { animation-delay: 0.15s; }
133
.e2 { animation-delay: 0.3s; }
134
.e3 { animation-delay: 0.55s; }
135
.e4 { animation-delay: 0.7s; }
136
.e5 { animation-delay: 0.85s; }
137
.e6 { animation-delay: 1.05s, 1.6s; }
138
 
139
@keyframes emblemFloat {
140
  from { transform: translateY(0); }
141
  to { transform: translateY(-8px); }
142
}
143
 
144
@keyframes emblemSway {
145
  from { transform: rotate(-0.7deg); }
146
  to { transform: rotate(0.7deg); }
147
}
148
 
149
@keyframes emblemIn {
150
  from { opacity: 0; transform: translateY(14px); }
151
  to { opacity: 1; transform: translateY(0); }
152
}
153
 
154
@keyframes emblemDraw {
155
  to { stroke-dashoffset: 0; }
156
}
157
 
158
@keyframes emblemPop {
159
  from { opacity: 0; transform: scale(0); }
160
  to { opacity: 1; transform: scale(1); }
161
}
162
 
163
@keyframes emblemPulse {
164
  0%, 100% { opacity: 1; }
165
  50% { opacity: 0.55; }
166
}
167
 
168
@keyframes emblemGlint {
169
  from { opacity: 0.55; }
170
  to { opacity: 1; }
171
}
172
 
173
.skeleton {
174
  background: linear-gradient(
175
    90deg,
176
    rgba(242, 236, 224, 0.05) 0%,
177
    rgba(242, 236, 224, 0.12) 50%,
178
    rgba(242, 236, 224, 0.05) 100%
179
  );
180
  background-size: 200% 100%;
181
  border-radius: 2px;
182
  animation: skeletonShimmer 1.4s ease-in-out infinite;
183
}
184
 
185
@keyframes skeletonShimmer {
186
  0% {
187
    background-position: 200% 0;
188
  }
189
  100% {
190
    background-position: -200% 0;
191
  }
192
}
193
 
194
@media (prefers-reduced-motion: reduce) {
195
  .marquee-track,
196
  .beat-in,
197
  .skeleton,
198
  .emblem-float,
199
  .emblem-sway,
200
  .emblem-in,
201
  .emblem-draw,
202
  .emblem-pop,
203
  .emblem-glint {
204
    animation: none;
205
  }
206
 
207
  .emblem-in,
208
  .emblem-pop {
209
    opacity: 1;
210
  }
211
 
212
  .emblem-draw {
213
    stroke-dashoffset: 0;
214
  }
215
}