sitcod3 commited on
Commit
6d34e90
·
verified ·
1 Parent(s): e17f794

Upload src/pages/gate.css with huggingface_hub

Browse files
Files changed (1) hide show
  1. src/pages/gate.css +420 -0
src/pages/gate.css ADDED
@@ -0,0 +1,420 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * BRIDGE Modul E — gate, "Moss & Ember Press" system
3
+ * Scoped strictly under .gate; global app tokens untouched.
4
+ *
5
+ * Token source (user-specified palette):
6
+ * moss ramp #394319 #637330 #8CA14A #ABBB77 #C7D0A9 #D6DCC1 #E4E8D9
7
+ * forest ink #13301E
8
+ * ember #C66306 (vibrant accent)
9
+ * Text-contrast notes (verified):
10
+ * #13301E on #E4E8D9 ≈ 11.5:1 (AAA) · #394319 on #E4E8D9 ≈ 8.5:1 (AAA)
11
+ * #9C4A03 on #E4E8D9 ≈ 5.0:1 (AA small text) · #C66306 reserved for
12
+ * fills / focus / large marks · white on #B45A05 ≈ 4.8:1 (AA)
13
+ */
14
+
15
+ .gate {
16
+ --g-paper: #e4e8d9;
17
+ --g-mist: #d6dcc1;
18
+ --g-sage: #c7d0a9;
19
+ --g-moss-l: #abbb77;
20
+ --g-moss: #8ca14a;
21
+ --g-olive: #637330;
22
+ --g-olive-d: #394319;
23
+ --g-ink: #13301e;
24
+ --g-ember: #c66306;
25
+ --g-ember-press: #b45a05;
26
+ --g-ember-text: #9c4a03;
27
+ --g-card: color-mix(in srgb, #e4e8d9 52%, #ffffff 48%);
28
+
29
+ --g-pad: 30px;
30
+
31
+ display: grid;
32
+ place-items: center;
33
+ min-height: 100vh;
34
+ min-height: 100dvh;
35
+ padding: 24px;
36
+ background:
37
+ radial-gradient(52rem 30rem at 86% -10%, color-mix(in srgb, var(--g-ember) 13%, transparent), transparent 62%),
38
+ radial-gradient(46rem 32rem at -10% 108%, color-mix(in srgb, var(--g-moss) 20%, transparent), transparent 58%),
39
+ repeating-linear-gradient(0deg, transparent 0 31px, color-mix(in srgb, var(--g-sage) 40%, transparent) 31px 32px),
40
+ repeating-linear-gradient(90deg, transparent 0 31px, color-mix(in srgb, var(--g-sage) 40%, transparent) 31px 32px),
41
+ linear-gradient(170deg, var(--g-paper) 0%, var(--g-mist) 100%);
42
+ color: var(--g-ink);
43
+ font-family: var(--font-sans);
44
+ }
45
+
46
+ .gate ::selection {
47
+ background: var(--g-moss);
48
+ color: var(--g-paper);
49
+ }
50
+
51
+ /* ---------------------------------- screen-reader-only h1 ---------------------------------- */
52
+
53
+ .gate-sr {
54
+ position: absolute;
55
+ width: 1px;
56
+ height: 1px;
57
+ padding: 0;
58
+ margin: -1px;
59
+ overflow: hidden;
60
+ clip: rect(0 0 0 0);
61
+ white-space: nowrap;
62
+ border: 0;
63
+ }
64
+
65
+ /* ---------------------------------- desk trim ---------------------------------- */
66
+
67
+ .gate-cropmark {
68
+ position: fixed;
69
+ width: 18px;
70
+ height: 18px;
71
+ pointer-events: none;
72
+ opacity: 0.55;
73
+ }
74
+
75
+ .gate-cropmark.tl {
76
+ top: 16px;
77
+ left: 16px;
78
+ border-top: 1.5px solid var(--g-olive);
79
+ border-left: 1.5px solid var(--g-olive);
80
+ }
81
+
82
+ .gate-cropmark.tr {
83
+ top: 16px;
84
+ right: 16px;
85
+ border-top: 1.5px solid var(--g-olive);
86
+ border-right: 1.5px solid var(--g-olive);
87
+ }
88
+
89
+ .gate-cropmark.bl {
90
+ bottom: 16px;
91
+ left: 16px;
92
+ border-bottom: 1.5px solid var(--g-olive);
93
+ border-left: 1.5px solid var(--g-olive);
94
+ }
95
+
96
+ .gate-cropmark.br {
97
+ bottom: 16px;
98
+ right: 16px;
99
+ border-bottom: 1.5px solid var(--g-olive);
100
+ border-right: 1.5px solid var(--g-olive);
101
+ }
102
+
103
+ /* ---------------------------------- the slip ---------------------------------- */
104
+
105
+ .gate-formwrap {
106
+ position: relative;
107
+ width: min(430px, 100%);
108
+ }
109
+
110
+ .gate-card {
111
+ position: relative;
112
+ background: var(--g-card);
113
+ border: 1px solid color-mix(in srgb, var(--g-sage) 80%, transparent);
114
+ border-radius: 10px;
115
+ padding: var(--g-pad);
116
+ box-shadow:
117
+ 0 1px 0 rgba(19, 48, 30, 0.04),
118
+ 0 24px 48px -28px rgba(19, 48, 30, 0.35);
119
+ }
120
+
121
+ /* ---------------------------------- fields ---------------------------------- */
122
+
123
+ .gate-field {
124
+ margin-bottom: 20px;
125
+ }
126
+
127
+ .gate-field label {
128
+ display: block;
129
+ font-family: var(--font-mono);
130
+ font-size: 10.5px;
131
+ font-weight: 600;
132
+ letter-spacing: 0.18em;
133
+ text-transform: uppercase;
134
+ color: var(--g-olive);
135
+ margin-bottom: 4px;
136
+ }
137
+
138
+ .gate-field input,
139
+ .gate-field select {
140
+ width: 100%;
141
+ background: transparent;
142
+ border: 0;
143
+ border-bottom: 1.5px solid color-mix(in srgb, var(--g-olive) 55%, transparent);
144
+ border-radius: 0;
145
+ padding: 8px 1px;
146
+ font-family: var(--font-sans);
147
+ font-size: 15px;
148
+ color: var(--g-ink);
149
+ caret-color: var(--g-ink);
150
+ }
151
+
152
+ .gate-field select {
153
+ appearance: none;
154
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' stroke='%2313301e' stroke-width='1.8' fill='none'/%3E%3C/svg%3E");
155
+ background-repeat: no-repeat;
156
+ background-position: right 2px center;
157
+ padding-right: 24px;
158
+ cursor: pointer;
159
+ }
160
+
161
+ .gate-field input.gate-key-input {
162
+ font-family: var(--font-mono);
163
+ font-size: 13.5px;
164
+ }
165
+
166
+ .gate-field input::placeholder {
167
+ color: color-mix(in srgb, var(--g-olive) 75%, transparent);
168
+ }
169
+
170
+ .gate-field input:focus,
171
+ .gate-field select:focus {
172
+ outline: none;
173
+ border-bottom-color: var(--g-ember);
174
+ box-shadow: 0 1.5px 0 var(--g-ember);
175
+ }
176
+
177
+ .gate-field input:disabled,
178
+ .gate-field select:disabled {
179
+ opacity: 0.55;
180
+ }
181
+
182
+ .gate-key-row {
183
+ display: flex;
184
+ align-items: center;
185
+ gap: 10px;
186
+ }
187
+
188
+ .gate-key-row input {
189
+ flex: 1;
190
+ min-width: 0;
191
+ }
192
+
193
+ .gate-peek {
194
+ flex: none;
195
+ border: 0;
196
+ background: none;
197
+ padding: 2px 0;
198
+ font-family: var(--font-mono);
199
+ font-size: 10.5px;
200
+ font-weight: 600;
201
+ letter-spacing: 0.14em;
202
+ color: var(--g-olive);
203
+ cursor: pointer;
204
+ border-bottom: 1px solid transparent;
205
+ }
206
+
207
+ .gate-peek:hover:not(:disabled) {
208
+ color: var(--g-ink);
209
+ border-bottom-color: color-mix(in srgb, var(--g-olive) 70%, transparent);
210
+ }
211
+
212
+ /* ---------------------------------- actions ---------------------------------- */
213
+
214
+ .gate-cta {
215
+ width: 100%;
216
+ border: 0;
217
+ border-radius: 7px;
218
+ padding: 13px 16px;
219
+ background: var(--g-ink);
220
+ color: var(--g-paper);
221
+ font-family: var(--font-sans);
222
+ font-size: 14px;
223
+ font-weight: 600;
224
+ letter-spacing: 0.05em;
225
+ cursor: pointer;
226
+ transition: background 160ms ease, box-shadow 160ms ease, transform 80ms ease;
227
+ }
228
+
229
+ .gate-cta:hover:not(:disabled) {
230
+ background: var(--g-olive-d);
231
+ box-shadow: 0 8px 20px -10px color-mix(in srgb, var(--g-ink) 70%, transparent);
232
+ }
233
+
234
+ .gate-cta:active:not(:disabled) {
235
+ transform: translateY(1px);
236
+ }
237
+
238
+ .gate-cta:disabled {
239
+ cursor: default;
240
+ opacity: 0.75;
241
+ }
242
+
243
+ .gate-cta[data-phase="cleared"] {
244
+ background: var(--g-ember-press);
245
+ }
246
+
247
+ .gate-demo {
248
+ width: 100%;
249
+ border: 1.5px solid var(--g-ember);
250
+ border-radius: 7px;
251
+ padding: 12px 16px;
252
+ background: transparent;
253
+ color: var(--g-ember-text);
254
+ font-family: var(--font-sans);
255
+ font-size: 13.5px;
256
+ font-weight: 600;
257
+ cursor: pointer;
258
+ transition: background 160ms ease, border-color 160ms ease;
259
+ }
260
+
261
+ .gate-demo:hover:not(:disabled) {
262
+ background: color-mix(in srgb, var(--g-ember) 9%, transparent);
263
+ border-color: var(--g-ember-press);
264
+ }
265
+
266
+ .gate-demo:disabled {
267
+ cursor: default;
268
+ opacity: 0.55;
269
+ }
270
+
271
+ .gate-or {
272
+ display: flex;
273
+ align-items: center;
274
+ gap: 12px;
275
+ margin: 18px 0;
276
+ font-family: var(--font-mono);
277
+ font-size: 10px;
278
+ letter-spacing: 0.22em;
279
+ color: var(--g-olive);
280
+ }
281
+
282
+ .gate-or span {
283
+ flex: 1;
284
+ height: 1px;
285
+ background: color-mix(in srgb, var(--g-olive) 28%, transparent);
286
+ }
287
+
288
+ .gate-switch {
289
+ display: block;
290
+ margin: 16px auto 0;
291
+ border: 0;
292
+ background: none;
293
+ padding: 2px 0;
294
+ font-family: var(--font-mono);
295
+ font-size: 11px;
296
+ font-weight: 500;
297
+ letter-spacing: 0.08em;
298
+ color: var(--g-olive);
299
+ cursor: pointer;
300
+ border-bottom: 1px solid transparent;
301
+ transition: color 140ms ease;
302
+ }
303
+
304
+ .gate-switch:hover:not(:disabled) {
305
+ color: var(--g-ember-text);
306
+ border-bottom-color: color-mix(in srgb, var(--g-ember-text) 60%, transparent);
307
+ }
308
+
309
+ .gate-switch:disabled {
310
+ opacity: 0.55;
311
+ cursor: default;
312
+ }
313
+
314
+ /* ---------------------------------- error ---------------------------------- */
315
+
316
+ .gate-error {
317
+ margin: 0 0 18px;
318
+ padding-left: 10px;
319
+ border-left: 2.5px solid var(--g-ember);
320
+ font-family: var(--font-mono);
321
+ font-size: 11.5px;
322
+ line-height: 1.6;
323
+ color: var(--g-ember-text);
324
+ }
325
+
326
+ /* ---------------------------------- clearance stamp ---------------------------------- */
327
+
328
+ .gate-stamp {
329
+ position: absolute;
330
+ top: -30px;
331
+ right: -20px;
332
+ width: 130px;
333
+ height: 130px;
334
+ pointer-events: none;
335
+ color: var(--g-ember);
336
+ transform: rotate(-12deg);
337
+ mix-blend-mode: multiply;
338
+ z-index: 2;
339
+ }
340
+
341
+ /* ---------------------------------- focus + motion ---------------------------------- */
342
+
343
+ .gate button:focus-visible {
344
+ outline: 2px solid var(--g-ember);
345
+ outline-offset: 3px;
346
+ }
347
+
348
+ @media (prefers-reduced-motion: no-preference) {
349
+ .gate-card {
350
+ animation: gate-rise 620ms cubic-bezier(0.22, 1, 0.36, 1) both;
351
+ }
352
+
353
+ .gate-cropmark {
354
+ animation: gate-fade 900ms ease 200ms both;
355
+ }
356
+
357
+ .gate-stamp {
358
+ animation: gate-stamp-in 560ms cubic-bezier(0.16, 1.3, 0.3, 1) both;
359
+ }
360
+ }
361
+
362
+ @keyframes gate-rise {
363
+ from {
364
+ opacity: 0;
365
+ transform: translateY(14px);
366
+ }
367
+ to {
368
+ opacity: 1;
369
+ transform: translateY(0);
370
+ }
371
+ }
372
+
373
+ @keyframes gate-fade {
374
+ from {
375
+ opacity: 0;
376
+ }
377
+ to {
378
+ opacity: 0.55;
379
+ }
380
+ }
381
+
382
+ @keyframes gate-stamp-in {
383
+ 0% {
384
+ opacity: 0;
385
+ transform: scale(2.1) rotate(-22deg);
386
+ }
387
+ 55% {
388
+ opacity: 1;
389
+ transform: scale(0.95) rotate(-10deg);
390
+ }
391
+ 75% {
392
+ transform: scale(1.04) rotate(-13deg);
393
+ }
394
+ 100% {
395
+ transform: scale(1) rotate(-12deg);
396
+ }
397
+ }
398
+
399
+ /* ---------------------------------- responsive ---------------------------------- */
400
+
401
+ @media (max-width: 560px) {
402
+ .gate {
403
+ padding: 20px 16px;
404
+ }
405
+
406
+ .gate-card {
407
+ --g-pad: 22px;
408
+ }
409
+
410
+ .gate-stamp {
411
+ width: 102px;
412
+ height: 102px;
413
+ top: -22px;
414
+ right: -10px;
415
+ }
416
+
417
+ .gate-cropmark {
418
+ display: none;
419
+ }
420
+ }