@knitli/docs-components 1.3.1 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/assets/favicon/index.js +8 -10
  2. package/dist/assets/logos/index.js +25 -21
  3. package/dist/assets/styles/index.js +12 -14
  4. package/dist/data/products.js +17 -32
  5. package/dist/index.js +39 -44
  6. package/dist/styles/index.js +7 -4
  7. package/dist/types/index.js +1 -7
  8. package/package.json +12 -5
  9. package/dist/assets/favicon/android-chrome-192x192.png +0 -0
  10. package/dist/assets/favicon/android-chrome-512x512.png +0 -0
  11. package/dist/assets/favicon/apple-touch-icon.png +0 -0
  12. package/dist/assets/favicon/favicon-16x16.png +0 -0
  13. package/dist/assets/favicon/favicon-32x32.png +0 -0
  14. package/dist/assets/favicon/favicon.ico +0 -0
  15. package/dist/assets/favicon/favicon.svg +0 -86
  16. package/dist/assets/favicon/index.d.ts +0 -7
  17. package/dist/assets/favicon/index.d.ts.map +0 -1
  18. package/dist/assets/favicon/social.webp +0 -0
  19. package/dist/assets/logos/Thread_vector_mono_aubergine.svg +0 -41
  20. package/dist/assets/logos/Thread_vector_mono_copper.svg +0 -41
  21. package/dist/assets/logos/Thread_vector_mono_parchment.svg +0 -41
  22. package/dist/assets/logos/codeweaver-primary.svg +0 -103
  23. package/dist/assets/logos/codeweaver-reverse.svg +0 -103
  24. package/dist/assets/logos/headline_logo.webp +0 -0
  25. package/dist/assets/logos/headline_logo_dark.png +0 -0
  26. package/dist/assets/logos/headline_logo_dark.webp +0 -0
  27. package/dist/assets/logos/index.d.ts +0 -29
  28. package/dist/assets/logos/index.d.ts.map +0 -1
  29. package/dist/assets/logos/knitli_logo.svg +0 -143
  30. package/dist/assets/logos/knitli_wordmark.svg +0 -118
  31. package/dist/assets/logos/recoco-lg.webp +0 -0
  32. package/dist/assets/logos/recoco-med.webp +0 -0
  33. package/dist/assets/logos/recoco-sm.webp +0 -0
  34. package/dist/assets/logos/recoco-xl.webp +0 -0
  35. package/dist/assets/logos/recoco-xs.webp +0 -0
  36. package/dist/assets/styles/codeweaver-theme.css +0 -570
  37. package/dist/assets/styles/global.css +0 -166
  38. package/dist/assets/styles/index.d.ts +0 -15
  39. package/dist/assets/styles/index.d.ts.map +0 -1
  40. package/dist/assets/styles/knitli-theme.css +0 -215
  41. package/dist/assets/styles/textures.css +0 -668
  42. package/dist/assets/styles/typography.css +0 -262
  43. package/dist/assets/styles/variables.css +0 -238
  44. package/dist/data/products.d.ts +0 -44
  45. package/dist/data/products.d.ts.map +0 -1
  46. package/dist/data/products.json +0 -45
  47. package/dist/index.d.ts +0 -55
  48. package/dist/index.d.ts.map +0 -1
  49. package/dist/styles/custom.css +0 -73
  50. package/dist/styles/index.d.ts +0 -2
  51. package/dist/styles/index.d.ts.map +0 -1
  52. package/dist/templates/AstroConfigTemplate.d.mts +0 -3
  53. package/dist/templates/AstroConfigTemplate.d.mts.map +0 -1
  54. package/dist/templates/AstroConfigTemplate.mjs +0 -305
  55. package/dist/types/index.d.ts +0 -31
  56. package/dist/types/index.d.ts.map +0 -1
@@ -1,668 +0,0 @@
1
- /*
2
- * SPDX-FileCopyrightText: 2025 Knitli Inc.
3
- * SPDX-FileContributor: Adam Poulemanos <adam@knit.li>
4
- *
5
- * SPDX-License-Identifier: LicenseRef-KnitliProprietary
6
- */
7
-
8
- /* ===================================================
9
- TEXTURES - Knitli Landing Page
10
- Literal Knit Patterns & Workshop Affordances
11
- =================================================== */
12
-
13
- /* === KNITLI TEXTURES === */
14
-
15
- .knitli-section::before {
16
- content: "";
17
- position: absolute;
18
- inset: 0;
19
- background-image: var(--texture-knit-pattern);
20
- background-size: 180px 180px;
21
- background-repeat: repeat;
22
- opacity: 0.12;
23
- /* More visible texture for tactile feel */
24
- mix-blend-mode: multiply;
25
- pointer-events: none;
26
- z-index: 0;
27
- }
28
-
29
- .knitli-section > * {
30
- position: relative;
31
- z-index: 1;
32
- }
33
-
34
- /* Paper grain for depth */
35
- .knitli-section.with-grain::after {
36
- content: "";
37
- position: absolute;
38
- inset: 0;
39
- background-image: var(--texture-noise);
40
- background-size: 400px 400px;
41
- opacity: 0.03;
42
- pointer-events: none;
43
- z-index: 0;
44
- }
45
-
46
- /* === CODEWEAVER TEXTURES === */
47
-
48
- /* Primary blueprint grid - more pronounced for drafting table feel */
49
- .codeweaver-section::before {
50
- content: "";
51
- position: absolute;
52
- inset: 0;
53
- /* Major grid lines */
54
- background-image:
55
- linear-gradient(to right, rgba(69, 91, 107, 0.08) 1px, transparent 1px),
56
- linear-gradient(to bottom, rgba(69, 91, 107, 0.08) 1px, transparent 1px),
57
- /* Minor grid lines */
58
- linear-gradient(to right, rgba(69, 91, 107, 0.04) 1px, transparent 1px),
59
- linear-gradient(to bottom, rgba(69, 91, 107, 0.04) 1px, transparent 1px),
60
- /* Original texture for depth */
61
- var(--texture-grid-pattern);
62
- background-size:
63
- 80px 80px,
64
- 80px 80px,
65
- 20px 20px,
66
- 20px 20px,
67
- 40px 40px;
68
- background-repeat: repeat;
69
- opacity: 1;
70
- pointer-events: none;
71
- z-index: 0;
72
- }
73
-
74
- /* Blueprint corner marks - engineering paper aesthetic */
75
- .codeweaver-section::after {
76
- content: "";
77
- position: absolute;
78
- inset: 0;
79
- /* CSS custom properties for gradient parameters */
80
- --gradient-copper-opacity: 0.08;
81
- --gradient-blue-opacity: 0.05;
82
- --gradient-copper-ellipse-width: 100%;
83
- --gradient-copper-ellipse-height: 70%;
84
- --gradient-blue-ellipse-width: 80%;
85
- --gradient-blue-ellipse-height: 60%;
86
- --gradient-copper-stop: 50%;
87
- --gradient-blue-stop: 40%;
88
-
89
- /* Top-left corner mark */
90
- background:
91
- linear-gradient(
92
- 135deg,
93
- transparent 20px,
94
- rgba(181, 108, 48, 0.15) 20px,
95
- rgba(181, 108, 48, 0.15) 22px,
96
- transparent 22px
97
- ), /* Bottom-right corner mark */
98
- linear-gradient(
99
- -45deg,
100
- transparent 20px,
101
- rgba(69, 91, 107, 0.12) 20px,
102
- rgba(69, 91, 107, 0.12) 22px,
103
- transparent 22px
104
- ), /* Warm copper gradient wash from top-left */
105
- radial-gradient(
106
- ellipse var(--gradient-copper-ellipse-width)
107
- var(--gradient-copper-ellipse-height) at 15% 10%,
108
- rgba(181, 108, 48, var(--gradient-copper-opacity)) 0%,
109
- transparent var(--gradient-copper-stop)
110
- ), /* Cool blue-gray gradient from bottom-right for balance */
111
- radial-gradient(
112
- ellipse var(--gradient-blue-ellipse-width)
113
- var(--gradient-blue-ellipse-height) at 90% 85%,
114
- rgba(69, 91, 107, var(--gradient-blue-opacity)) 0%,
115
- transparent var(--gradient-blue-stop)
116
- );
117
- background-position:
118
- top left,
119
- bottom right,
120
- top left,
121
- bottom right;
122
- background-repeat: no-repeat;
123
- pointer-events: none;
124
- z-index: 0;
125
- }
126
-
127
- /* Mobile adjustments to reduce radial gradient visibility */
128
- @media (max-width: 768px) {
129
- .codeweaver-section::after {
130
- /* Override only the varying parameters for mobile */
131
- --gradient-copper-opacity: 0.02;
132
- --gradient-blue-opacity: 0.02;
133
- --gradient-copper-ellipse-width: 80%;
134
- --gradient-copper-ellipse-height: 50%;
135
- --gradient-blue-ellipse-width: 60%;
136
- --gradient-blue-ellipse-height: 40%;
137
- --gradient-copper-stop: 40%;
138
- --gradient-blue-stop: 30%;
139
- }
140
- }
141
-
142
- .codeweaver-section > * {
143
- position: relative;
144
- z-index: 1;
145
- }
146
-
147
- /* === WORKBENCH DIVIDERS === */
148
-
149
- .simple-divider {
150
- height: 2px;
151
- background: linear-gradient(
152
- 90deg,
153
- transparent 0%,
154
- var(--workshop-border) 2%,
155
- var(--workshop-border) 98%,
156
- transparent 100%
157
- );
158
- box-shadow: 0 1px 0 var(--workshop-bevel);
159
- /* Beveled edge */
160
- margin: var(--space-3xl) 0;
161
- }
162
-
163
- .simple-divider.knitli {
164
- background: linear-gradient(
165
- 90deg,
166
- transparent 0%,
167
- var(--knitli-rust) 2%,
168
- var(--knitli-rust) 98%,
169
- transparent 100%
170
- );
171
- }
172
-
173
- .simple-divider.codeweaver {
174
- background: linear-gradient(
175
- 90deg,
176
- transparent 0%,
177
- var(--cw-primary) 2%,
178
- var(--cw-primary) 98%,
179
- transparent 100%
180
- );
181
- }
182
-
183
- /* === TOOL DRAWER LABELS === */
184
-
185
- .workshop-label {
186
- font-family: var(--font-bridge);
187
- text-transform: uppercase;
188
- letter-spacing: 0.1em;
189
- font-size: var(--font-2xs);
190
- font-weight: 700;
191
- padding: 0.375rem 1rem;
192
- background: var(--knitli-aubergine);
193
- color: var(--knitli-parchment);
194
- clip-path: polygon(6px 0, 100% 0, calc(100% - 6px) 100%, 0 100%);
195
- /* Chamfered */
196
- box-shadow:
197
- 0 2px 4px var(--workshop-shadow),
198
- inset 0 -1px 0 rgba(0, 0, 0, 0.2);
199
- display: inline-block;
200
- }
201
-
202
- .workshop-label.codeweaver {
203
- background: var(--cw-blue-gray);
204
- color: var(--cw-cream);
205
- }
206
-
207
- /* === CHAMFERED CORNERS === */
208
-
209
- .card-workshop {
210
- clip-path: polygon(
211
- 8px 0,
212
- 100% 0,
213
- 100% calc(100% - 8px),
214
- calc(100% - 8px) 100%,
215
- 0 100%,
216
- 0 8px
217
- );
218
- }
219
-
220
- /* Smaller chamfer for badges */
221
- .badge-workshop {
222
- clip-path: polygon(
223
- 4px 0,
224
- 100% 0,
225
- 100% calc(100% - 4px),
226
- calc(100% - 4px) 100%,
227
- 0 100%,
228
- 0 4px
229
- );
230
- }
231
-
232
- /* === BEVELED EDGES === */
233
-
234
- .bevel-top {
235
- box-shadow: inset 0 1px 0 var(--workshop-bevel);
236
- }
237
-
238
- .bevel-bottom {
239
- box-shadow: inset 0 -1px 0 var(--workshop-bevel);
240
- }
241
-
242
- .bevel-all {
243
- box-shadow:
244
- inset 0 1px 0 var(--workshop-bevel),
245
- inset 0 -1px 0 rgba(0, 0, 0, 0.1);
246
- }
247
-
248
- /* === DEPTH & SHADOW === */
249
-
250
- .workshop-depth-sm {
251
- box-shadow: 0 2px 4px var(--workshop-shadow);
252
- }
253
-
254
- .workshop-depth-md {
255
- box-shadow:
256
- 0 4px 8px var(--workshop-shadow),
257
- inset 0 -1px 0 rgba(0, 0, 0, 0.1);
258
- }
259
-
260
- .workshop-depth-lg {
261
- box-shadow:
262
- 0 8px 16px var(--workshop-shadow),
263
- inset 0 -2px 0 rgba(0, 0, 0, 0.15);
264
- }
265
-
266
- /* === PRESSED EFFECT === */
267
-
268
- .pressed {
269
- box-shadow:
270
- inset 0 2px 4px rgba(0, 0, 0, 0.1),
271
- 0 1px 2px var(--workshop-shadow);
272
- transform: translateY(1px);
273
- }
274
-
275
- /* === TEXTURED BACKGROUNDS === */
276
-
277
- .bg-knit {
278
- background-image: var(--texture-knit-pattern);
279
- background-size: 180px 180px;
280
- background-repeat: repeat;
281
- }
282
-
283
- .bg-grid {
284
- background-image: var(--texture-grid-pattern);
285
- background-size: 40px 40px;
286
- background-repeat: repeat;
287
- }
288
-
289
- .bg-noise {
290
- background-image: var(--texture-noise);
291
- background-size: 400px 400px;
292
- background-repeat: repeat;
293
- }
294
-
295
- /* === TEXTURE OVERLAYS === */
296
-
297
- .overlay-knit {
298
- position: relative;
299
- }
300
-
301
- .overlay-knit::before {
302
- content: "";
303
- position: absolute;
304
- inset: 0;
305
- background-image: var(--texture-knit-pattern);
306
- background-size: 180px 180px;
307
- opacity: 0.07;
308
- pointer-events: none;
309
- z-index: 1;
310
- }
311
-
312
- .overlay-grid {
313
- position: relative;
314
- }
315
-
316
- .overlay-grid::before {
317
- content: "";
318
- position: absolute;
319
- inset: 0;
320
- background-image:
321
- linear-gradient(to right, rgba(69, 91, 107, 0.06) 1px, transparent 1px),
322
- linear-gradient(to bottom, rgba(69, 91, 107, 0.06) 1px, transparent 1px),
323
- var(--texture-grid-pattern);
324
- background-size:
325
- 40px 40px,
326
- 40px 40px,
327
- 40px 40px;
328
- opacity: 1;
329
- pointer-events: none;
330
- z-index: 1;
331
- }
332
-
333
- /* === BORDER STYLES === */
334
-
335
- .border-workshop {
336
- border: 2px solid var(--workshop-border);
337
- box-shadow: 0 1px 0 var(--workshop-bevel);
338
- }
339
-
340
- .border-knitli {
341
- border: 2px solid var(--knitli-aubergine);
342
- box-shadow: 0 1px 0 var(--workshop-bevel);
343
- }
344
-
345
- .border-codeweaver {
346
- border: 2px solid var(--cw-primary);
347
- box-shadow: 0 1px 0 var(--workshop-bevel);
348
- }
349
-
350
- /* === MOBILE ADJUSTMENTS === */
351
-
352
- @media (max-width: 768px) {
353
- /* Reduce texture opacity on mobile for better readability */
354
- .knitli-section::before {
355
- opacity: 0.05;
356
- }
357
-
358
- .codeweaver-section::before {
359
- opacity: 0.03;
360
- }
361
-
362
- /* Smaller chamfer on mobile */
363
- .card-workshop {
364
- clip-path: polygon(
365
- 6px 0,
366
- 100% 0,
367
- 100% calc(100% - 6px),
368
- calc(100% - 6px) 100%,
369
- 0 100%,
370
- 0 6px
371
- );
372
- }
373
- }
374
-
375
- /* ===================================================
376
- TORN PAPER & FABRIC EDGE TREATMENTS
377
- Organic, handcrafted edge character
378
- =================================================== */
379
-
380
- /* === TORN PAPER EDGE (TOP) === */
381
- .torn-edge-top {
382
- position: relative;
383
- }
384
-
385
- .torn-edge-top::before {
386
- content: "";
387
- position: absolute;
388
- top: -1px;
389
- left: 0;
390
- right: 0;
391
- height: 12px;
392
- background: inherit;
393
- mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 1200 12' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'%3E%3Cpath d='M0,12 L0,4 Q15,6 30,3 T60,5 T90,2 T120,6 T150,3 T180,5 T210,2 T240,4 T270,6 T300,3 T330,5 T360,2 T390,4 T420,6 T450,3 T480,5 T510,2 T540,4 T570,6 T600,3 T630,5 T660,2 T690,4 T720,6 T750,3 T780,5 T810,2 T840,4 T870,6 T900,3 T930,5 T960,2 T990,4 T1020,6 T1050,3 T1080,5 T1110,2 T1140,4 T1170,6 T1200,3 L1200,12 Z' fill='white'/%3E%3C/svg%3E");
394
- mask-size: 100% 100%;
395
- mask-repeat: no-repeat;
396
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 1200 12' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'%3E%3Cpath d='M0,12 L0,4 Q15,6 30,3 T60,5 T90,2 T120,6 T150,3 T180,5 T210,2 T240,4 T270,6 T300,3 T330,5 T360,2 T390,4 T420,6 T450,3 T480,5 T510,2 T540,4 T570,6 T600,3 T630,5 T660,2 T690,4 T720,6 T750,3 T780,5 T810,2 T840,4 T870,6 T900,3 T930,5 T960,2 T990,4 T1020,6 T1050,3 T1080,5 T1110,2 T1140,4 T1170,6 T1200,3 L1200,12 Z' fill='white'/%3E%3C/svg%3E");
397
- -webkit-mask-size: 100% 100%;
398
- -webkit-mask-repeat: no-repeat;
399
- z-index: 10;
400
- pointer-events: none;
401
- }
402
-
403
- /* === TORN PAPER EDGE (BOTTOM) === */
404
- .torn-edge-bottom {
405
- position: relative;
406
- }
407
-
408
- .torn-edge-bottom::after {
409
- content: "";
410
- position: absolute;
411
- bottom: -1px;
412
- left: 0;
413
- right: 0;
414
- height: 12px;
415
- background: inherit;
416
- mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 1200 12' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'%3E%3Cpath d='M0,0 L0,8 Q15,6 30,9 T60,7 T90,10 T120,6 T150,9 T180,7 T210,10 T240,8 T270,6 T300,9 T330,7 T360,10 T390,8 T420,6 T450,9 T480,7 T510,10 T540,8 T570,6 T600,9 T630,7 T660,10 T690,8 T720,6 T750,9 T780,7 T810,10 T840,8 T870,6 T900,9 T930,7 T960,10 T990,8 T1020,6 T1050,9 T1080,7 T1110,10 T1140,8 T1170,6 T1200,9 L1200,0 Z' fill='white'/%3E%3C/svg%3E");
417
- mask-size: 100% 100%;
418
- mask-repeat: no-repeat;
419
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 1200 12' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'%3E%3Cpath d='M0,0 L0,8 Q15,6 30,9 T60,7 T90,10 T120,6 T150,9 T180,7 T210,10 T240,8 T270,6 T300,9 T330,7 T360,10 T390,8 T420,6 T450,9 T480,7 T510,10 T540,8 T570,6 T600,9 T630,7 T660,10 T690,8 T720,6 T750,9 T780,7 T810,10 T840,8 T870,6 T900,9 T930,7 T960,10 T990,8 T1020,6 T1050,9 T1080,7 T1110,10 T1140,8 T1170,6 T1200,9 L1200,0 Z' fill='white'/%3E%3C/svg%3E");
420
- -webkit-mask-size: 100% 100%;
421
- -webkit-mask-repeat: no-repeat;
422
- z-index: 10;
423
- pointer-events: none;
424
- }
425
-
426
- /* === FABRIC FRAYED EDGE (HORIZONTAL) === */
427
- .frayed-edge-top {
428
- position: relative;
429
- }
430
-
431
- .frayed-edge-top::before {
432
- content: "";
433
- position: absolute;
434
- top: -2px;
435
- left: 0;
436
- right: 0;
437
- height: 8px;
438
- background: repeating-linear-gradient(
439
- 90deg,
440
- transparent 0px,
441
- transparent 3px,
442
- currentColor 3px,
443
- currentColor 4px,
444
- transparent 4px,
445
- transparent 8px
446
- );
447
- opacity: 0.15;
448
- mask-image: linear-gradient(to bottom, black 0%, transparent 100%);
449
- -webkit-mask-image: linear-gradient(to bottom, black 0%, transparent 100%);
450
- z-index: 5;
451
- pointer-events: none;
452
- }
453
-
454
- .frayed-edge-bottom {
455
- position: relative;
456
- }
457
-
458
- .frayed-edge-bottom::after {
459
- content: "";
460
- position: absolute;
461
- bottom: -2px;
462
- left: 0;
463
- right: 0;
464
- height: 8px;
465
- background: repeating-linear-gradient(
466
- 90deg,
467
- transparent 0px,
468
- transparent 3px,
469
- currentColor 3px,
470
- currentColor 4px,
471
- transparent 4px,
472
- transparent 8px
473
- );
474
- opacity: 0.15;
475
- mask-image: linear-gradient(to top, black 0%, transparent 100%);
476
- -webkit-mask-image: linear-gradient(to top, black 0%, transparent 100%);
477
- z-index: 5;
478
- pointer-events: none;
479
- }
480
-
481
- /* === STITCHED BORDER EDGE === */
482
- .stitched-edge {
483
- position: relative;
484
- }
485
-
486
- .stitched-edge::before {
487
- content: "";
488
- position: absolute;
489
- top: 12px;
490
- left: 24px;
491
- right: 24px;
492
- height: 0;
493
- border-top: 2px dashed var(--knitli-rust);
494
- opacity: 0.4;
495
- z-index: 5;
496
- }
497
-
498
- .stitched-edge::after {
499
- content: "";
500
- position: absolute;
501
- bottom: 12px;
502
- left: 24px;
503
- right: 24px;
504
- height: 0;
505
- border-top: 2px dashed var(--knitli-rust);
506
- opacity: 0.4;
507
- z-index: 5;
508
- }
509
-
510
- /* CodeWeaver variant */
511
- .stitched-edge.codeweaver::before,
512
- .stitched-edge.codeweaver::after {
513
- border-color: var(--cw-primary);
514
- opacity: 0.25;
515
- }
516
-
517
- /* === FABRIC FOLD SHADOW === */
518
- .fabric-crease {
519
- position: relative;
520
- }
521
-
522
- .fabric-crease::before {
523
- content: "";
524
- position: absolute;
525
- top: 0;
526
- bottom: 0;
527
- left: 50%;
528
- width: 1px;
529
- background: linear-gradient(
530
- to bottom,
531
- transparent 0%,
532
- rgba(0, 0, 0, 0.08) 20%,
533
- rgba(0, 0, 0, 0.12) 50%,
534
- rgba(0, 0, 0, 0.08) 80%,
535
- transparent 100%
536
- );
537
- box-shadow:
538
- -1px 0 0 rgba(255, 255, 255, 0.5),
539
- 1px 0 0 rgba(0, 0, 0, 0.03);
540
- z-index: 2;
541
- pointer-events: none;
542
- }
543
-
544
- /* === HANDMADE PAPER CORNER === */
545
- .paper-corner {
546
- position: relative;
547
- }
548
-
549
- .paper-corner::after {
550
- content: "";
551
- position: absolute;
552
- top: 0;
553
- right: 0;
554
- width: 24px;
555
- height: 24px;
556
- background: linear-gradient(
557
- 135deg,
558
- transparent 50%,
559
- rgba(0, 0, 0, 0.03) 50%,
560
- rgba(0, 0, 0, 0.06) 100%
561
- );
562
- z-index: 3;
563
- }
564
-
565
- /* Folded corner effect */
566
- .paper-fold {
567
- position: relative;
568
- overflow: hidden;
569
- }
570
-
571
- .paper-fold::before {
572
- content: "";
573
- position: absolute;
574
- top: -12px;
575
- right: -12px;
576
- width: 24px;
577
- height: 24px;
578
- background: var(--knitli-parchment);
579
- box-shadow:
580
- -2px 2px 4px rgba(0, 0, 0, 0.1),
581
- inset 1px -1px 0 rgba(0, 0, 0, 0.05);
582
- transform: rotate(45deg);
583
- z-index: 10;
584
- }
585
-
586
- .paper-fold.codeweaver::before {
587
- background: var(--cw-cream);
588
- }
589
-
590
- /* === WOVEN BORDER === */
591
- .woven-border {
592
- position: relative;
593
- border: none;
594
- }
595
-
596
- .woven-border::before {
597
- content: "";
598
- position: absolute;
599
- inset: 0;
600
- border: 3px solid transparent;
601
- background:
602
- repeating-linear-gradient(
603
- 90deg,
604
- var(--knitli-rust) 0px,
605
- var(--knitli-rust) 8px,
606
- transparent 8px,
607
- transparent 12px
608
- )
609
- top / 100% 3px no-repeat,
610
- repeating-linear-gradient(
611
- 90deg,
612
- var(--knitli-rust) 0px,
613
- var(--knitli-rust) 8px,
614
- transparent 8px,
615
- transparent 12px
616
- )
617
- bottom / 100% 3px no-repeat,
618
- repeating-linear-gradient(
619
- 0deg,
620
- var(--knitli-rust) 0px,
621
- var(--knitli-rust) 8px,
622
- transparent 8px,
623
- transparent 12px
624
- )
625
- left / 3px 100% no-repeat,
626
- repeating-linear-gradient(
627
- 0deg,
628
- var(--knitli-rust) 0px,
629
- var(--knitli-rust) 8px,
630
- transparent 8px,
631
- transparent 12px
632
- )
633
- right / 3px 100% no-repeat;
634
- opacity: 0.4;
635
- pointer-events: none;
636
- z-index: 5;
637
- }
638
-
639
- /* === SECTION EDGE SHADOW (BETWEEN SECTIONS) === */
640
- .section-shadow-bottom {
641
- box-shadow:
642
- inset 0 -20px 30px -20px rgba(0, 0, 0, 0.08),
643
- 0 4px 12px -4px rgba(0, 0, 0, 0.06);
644
- }
645
-
646
- .section-shadow-top {
647
- box-shadow: inset 0 20px 30px -20px rgba(0, 0, 0, 0.06);
648
- }
649
-
650
- /* === MOBILE ADJUSTMENTS FOR EDGES === */
651
- @media (max-width: 768px) {
652
- .torn-edge-top::before,
653
- .torn-edge-bottom::after {
654
- height: 8px;
655
- }
656
-
657
- .frayed-edge-top::before,
658
- .frayed-edge-bottom::after {
659
- height: 5px;
660
- }
661
-
662
- .paper-fold::before {
663
- width: 16px;
664
- height: 16px;
665
- top: -8px;
666
- right: -8px;
667
- }
668
- }