create-warlock 4.2.6 → 4.2.7

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 (95) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.json +2 -2
  3. package/templates/warlock/.env.example +36 -0
  4. package/templates/warlock/.gitattributes +1 -0
  5. package/templates/warlock/.husky/pre-commit +4 -0
  6. package/templates/warlock/.prettierignore +4 -0
  7. package/templates/warlock/.prettierrc.json +10 -0
  8. package/templates/warlock/.vscode/settings.json +41 -0
  9. package/templates/warlock/README.md +57 -0
  10. package/templates/warlock/_.gitignore +6 -0
  11. package/templates/warlock/docs/new-module.md +551 -0
  12. package/templates/warlock/eslint.config.js +98 -0
  13. package/templates/warlock/package.json +74 -0
  14. package/templates/warlock/public/home.css +523 -0
  15. package/templates/warlock/skills/api-design/SKILL.md +461 -0
  16. package/templates/warlock/skills/code-standards/SKILL.md +595 -0
  17. package/templates/warlock/skills/data-and-persistence/SKILL.md +330 -0
  18. package/templates/warlock/skills/git-workflow/SKILL.md +282 -0
  19. package/templates/warlock/skills/module-boundaries/SKILL.md +283 -0
  20. package/templates/warlock/skills/observability-and-resilience/SKILL.md +306 -0
  21. package/templates/warlock/skills/security-baseline/SKILL.md +352 -0
  22. package/templates/warlock/skills/testing-strategy/SKILL.md +323 -0
  23. package/templates/warlock/src/app/auth/controllers/forgot-password.controller.ts +28 -0
  24. package/templates/warlock/src/app/auth/controllers/login.controller.ts +22 -0
  25. package/templates/warlock/src/app/auth/controllers/logout-all.controller.ts +16 -0
  26. package/templates/warlock/src/app/auth/controllers/logout.controller.ts +16 -0
  27. package/templates/warlock/src/app/auth/controllers/me.controller.ts +13 -0
  28. package/templates/warlock/src/app/auth/controllers/refresh-token.controller.ts +29 -0
  29. package/templates/warlock/src/app/auth/controllers/reset-password.controller.ts +23 -0
  30. package/templates/warlock/src/app/auth/main.ts +9 -0
  31. package/templates/warlock/src/app/auth/models/otp/index.ts +1 -0
  32. package/templates/warlock/src/app/auth/models/otp/migrations/22-12-2025_10-30-20.otp-migration.ts +30 -0
  33. package/templates/warlock/src/app/auth/models/otp/otp.model.ts +69 -0
  34. package/templates/warlock/src/app/auth/requests/guarded.request.ts +10 -0
  35. package/templates/warlock/src/app/auth/routes.ts +22 -0
  36. package/templates/warlock/src/app/auth/schema/login.schema.ts +8 -0
  37. package/templates/warlock/src/app/auth/schema/reset-password.schema.ts +9 -0
  38. package/templates/warlock/src/app/auth/services/auth.service.ts +66 -0
  39. package/templates/warlock/src/app/auth/services/forgot-password.service.ts +28 -0
  40. package/templates/warlock/src/app/auth/services/otp.service.ts +173 -0
  41. package/templates/warlock/src/app/auth/services/reset-password.service.ts +39 -0
  42. package/templates/warlock/src/app/auth/utils/auth-error-code.ts +6 -0
  43. package/templates/warlock/src/app/auth/utils/locales.ts +89 -0
  44. package/templates/warlock/src/app/auth/utils/types.ts +14 -0
  45. package/templates/warlock/src/app/posts/controllers/create-new-post.controller.ts +21 -0
  46. package/templates/warlock/src/app/posts/controllers/update-post.controller.ts +30 -0
  47. package/templates/warlock/src/app/posts/models/post/migrations/09-01-2026_02-07-51-post.migration.ts +15 -0
  48. package/templates/warlock/src/app/posts/models/post/post.model.ts +23 -0
  49. package/templates/warlock/src/app/posts/resources/post.resource.ts +14 -0
  50. package/templates/warlock/src/app/posts/routes.ts +8 -0
  51. package/templates/warlock/src/app/posts/schema/create-post.schema.ts +9 -0
  52. package/templates/warlock/src/app/posts/schema/update-post.schema.ts +9 -0
  53. package/templates/warlock/src/app/shared/components/HomePageComponent.tsx +229 -0
  54. package/templates/warlock/src/app/shared/controllers/home-page.controller.ts +18 -0
  55. package/templates/warlock/src/app/shared/controllers/home-page.controller.tsx +8 -0
  56. package/templates/warlock/src/app/shared/routes.ts +4 -0
  57. package/templates/warlock/src/app/shared/services/scheduler.service.ts +3 -0
  58. package/templates/warlock/src/app/shared/tests/infrastructure.test.ts +22 -0
  59. package/templates/warlock/src/app/shared/utils/global-columns-schema.ts +8 -0
  60. package/templates/warlock/src/app/shared/utils/locales.ts +766 -0
  61. package/templates/warlock/src/app/shared/utils/router.ts +30 -0
  62. package/templates/warlock/src/app/uploads/controllers/fetch-uploaded-file.controller.ts +33 -0
  63. package/templates/warlock/src/app/uploads/routes.ts +4 -0
  64. package/templates/warlock/src/app/users/commands/hello-world.command.ts +8 -0
  65. package/templates/warlock/src/app/users/controllers/create-new-user.controller.ts +27 -0
  66. package/templates/warlock/src/app/users/controllers/list-users.controller.ts +12 -0
  67. package/templates/warlock/src/app/users/events/inject-created-by-user.into-model.event.ts +32 -0
  68. package/templates/warlock/src/app/users/events/sync.ts +5 -0
  69. package/templates/warlock/src/app/users/main.ts +5 -0
  70. package/templates/warlock/src/app/users/models/user/index.ts +1 -0
  71. package/templates/warlock/src/app/users/models/user/migrations/11-12-2025_23-58-03-user.migration.ts +15 -0
  72. package/templates/warlock/src/app/users/models/user/user.model.ts +64 -0
  73. package/templates/warlock/src/app/users/repositories/users.repository.ts +23 -0
  74. package/templates/warlock/src/app/users/resources/user.resource.ts +14 -0
  75. package/templates/warlock/src/app/users/routes.ts +8 -0
  76. package/templates/warlock/src/app/users/schema/create-user.schema.ts +11 -0
  77. package/templates/warlock/src/app/users/seeds/users.seed.ts +21 -0
  78. package/templates/warlock/src/app/users/services/get-users.service.ts +5 -0
  79. package/templates/warlock/src/app/users/services/list-users.service.ts +17 -0
  80. package/templates/warlock/src/app/users/services/login-social.ts +19 -0
  81. package/templates/warlock/src/config/app.ts +12 -0
  82. package/templates/warlock/src/config/auth.ts +20 -0
  83. package/templates/warlock/src/config/cache.ts +59 -0
  84. package/templates/warlock/src/config/database.ts +65 -0
  85. package/templates/warlock/src/config/http.ts +23 -0
  86. package/templates/warlock/src/config/log.ts +22 -0
  87. package/templates/warlock/src/config/mail.ts +16 -0
  88. package/templates/warlock/src/config/repository.ts +11 -0
  89. package/templates/warlock/src/config/storage.ts +34 -0
  90. package/templates/warlock/src/config/tests.ts +5 -0
  91. package/templates/warlock/src/config/validation.ts +7 -0
  92. package/templates/warlock/storage/.gitignore +2 -0
  93. package/templates/warlock/tsconfig.json +27 -0
  94. package/templates/warlock/warlock.config.ts +15 -0
  95. package/templates/warlock/yarn.lock +2332 -0
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "wow2",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "warlock dev",
8
+ "build": "tsc && warlock build",
9
+ "start": "warlock start",
10
+ "seed": "warlock seed",
11
+ "migrate": "warlock migrate",
12
+ "migrate.fresh": "warlock migrate --fresh",
13
+ "migrate.list": "warlock migrate --list",
14
+ "jwt": "warlock jwt.generate",
15
+ "gen": "warlock generate.module",
16
+ "gen.s": "warlock.generate.service",
17
+ "gen.m": "warlock.generate.model",
18
+ "gen.c": "warlock.generate.controller",
19
+ "gen.mig": "warlock generate.migration",
20
+ "gen.md": "warlock generate.model",
21
+ "gen.r": "warlock generate.repository",
22
+ "gen.rs": "warlock generate.resource",
23
+ "gen.v": "warlock generate.validation",
24
+ "serve": "yarn build && nohup warlock start > /dev/null 2>&1",
25
+ "lint": "npx eslint --fix ./src --max-warnings=0",
26
+ "format": "npx prettier --write ./src/**/*.{js,jsx,ts,tsx,css,md,json} --config ./.prettierrc.json",
27
+ "tsc": "npx tsc --noEmit",
28
+ "prepare": "huskier-init && husky install",
29
+ "postinstall": "agent-kit init && agent-kit sync || echo skills-sync-skipped",
30
+ "skills:sync": "agent-kit sync",
31
+ "skills:watch": "agent-kit watch",
32
+ "lf": "find . -type d ( -name 'node_modules' -o -name '.git' ) -prune -o -type f -exec dos2unix {} ;"
33
+ },
34
+ "dependencies": {
35
+ "@mongez/reinforcements": "^3.1.16",
36
+ "@mongez/localization": "^3.4.6",
37
+ "@mongez/supportive-is": "^2.1.3",
38
+ "@warlock.js/auth": "4.0.119",
39
+ "@warlock.js/cache": "4.0.119",
40
+ "@warlock.js/cascade": "4.0.119",
41
+ "@warlock.js/scheduler": "4.0.119",
42
+ "@warlock.js/core": "4.0.119",
43
+ "@warlock.js/fs": "4.0.119",
44
+ "@warlock.js/logger": "4.0.119",
45
+ "@warlock.js/seal": "4.0.119",
46
+ "dayjs": "^1.11.19"
47
+ },
48
+ "devDependencies": {
49
+ "@mongez/agent-kit": "^1.0.17",
50
+ "@mongez/huskier": "^3.0.0",
51
+ "@types/node": "^25.0.3",
52
+ "@types/prettier": "^3.0.0",
53
+ "@typescript-eslint/eslint-plugin": "^8.50.0",
54
+ "@typescript-eslint/parser": "^8.50.0",
55
+ "eslint": "^9.39.2",
56
+ "eslint-config-prettier": "^10.1.8",
57
+ "eslint-plugin-prettier": "^5.5.4",
58
+ "eslint-plugin-unused-imports": "^4.3.0",
59
+ "prettier": "^3.7.4",
60
+ "prettier-plugin-organize-imports": "^4.3.0",
61
+ "typescript": "^5.9.3",
62
+ "husky": "^8.0.0",
63
+ "vitest": "^4.0.6"
64
+ },
65
+ "huskier": {
66
+ "hooks": {
67
+ "pre-commit": [
68
+ "yarn format",
69
+ "yarn lint",
70
+ "yarn tsc"
71
+ ]
72
+ }
73
+ }
74
+ }
@@ -0,0 +1,523 @@
1
+ /* Warlock.js Homepage Styles */
2
+
3
+ * {
4
+ margin: 0;
5
+ padding: 0;
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ body {
10
+ font-family:
11
+ "Inter",
12
+ -apple-system,
13
+ BlinkMacSystemFont,
14
+ "Segoe UI",
15
+ Roboto,
16
+ Oxygen,
17
+ Ubuntu,
18
+ Cantarell,
19
+ sans-serif;
20
+ background: #0a0a0f;
21
+ color: #e4e4e7;
22
+ line-height: 1.6;
23
+ overflow-x: hidden;
24
+ }
25
+
26
+ .warlock-home {
27
+ min-height: 100vh;
28
+ position: relative;
29
+ overflow: hidden;
30
+ }
31
+
32
+ /* Animated Background */
33
+ .warlock-home::before {
34
+ content: "";
35
+ position: fixed;
36
+ top: -50%;
37
+ left: -50%;
38
+ width: 200%;
39
+ height: 200%;
40
+ background:
41
+ radial-gradient(
42
+ circle at 20% 50%,
43
+ rgba(234, 179, 8, 0.08) 0%,
44
+ transparent 50%
45
+ ),
46
+ radial-gradient(
47
+ circle at 80% 80%,
48
+ rgba(34, 197, 94, 0.06) 0%,
49
+ transparent 50%
50
+ ),
51
+ radial-gradient(
52
+ circle at 40% 20%,
53
+ rgba(234, 179, 8, 0.05) 0%,
54
+ transparent 50%
55
+ );
56
+ animation: backgroundFloat 20s ease-in-out infinite;
57
+ z-index: 0;
58
+ }
59
+
60
+ @keyframes backgroundFloat {
61
+ 0%,
62
+ 100% {
63
+ transform: translate(0, 0) rotate(0deg);
64
+ }
65
+ 33% {
66
+ transform: translate(30px, -30px) rotate(1deg);
67
+ }
68
+ 66% {
69
+ transform: translate(-20px, 20px) rotate(-1deg);
70
+ }
71
+ }
72
+
73
+ /* Container */
74
+ .warlock-container {
75
+ max-width: 1200px;
76
+ margin: 0 auto;
77
+ padding: 0 2rem;
78
+ position: relative;
79
+ z-index: 1;
80
+ }
81
+
82
+ /* Header */
83
+ .warlock-header {
84
+ padding: 2rem 0;
85
+ display: flex;
86
+ justify-content: space-between;
87
+ align-items: center;
88
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
89
+ backdrop-filter: blur(10px);
90
+ }
91
+
92
+ .warlock-logo {
93
+ display: flex;
94
+ align-items: center;
95
+ gap: 1rem;
96
+ font-size: 1.5rem;
97
+ font-weight: 700;
98
+ color: #fbbf24;
99
+ text-decoration: none;
100
+ transition: transform 0.3s ease;
101
+ }
102
+
103
+ .warlock-logo:hover {
104
+ transform: scale(1.05);
105
+ }
106
+
107
+ .warlock-logo-icon {
108
+ font-size: 2rem;
109
+ animation: pulse 2s ease-in-out infinite;
110
+ }
111
+
112
+ @keyframes pulse {
113
+ 0%,
114
+ 100% {
115
+ opacity: 1;
116
+ transform: scale(1);
117
+ }
118
+ 50% {
119
+ opacity: 0.8;
120
+ transform: scale(1.1);
121
+ }
122
+ }
123
+
124
+ .warlock-nav {
125
+ display: flex;
126
+ gap: 2rem;
127
+ align-items: center;
128
+ }
129
+
130
+ .warlock-nav a {
131
+ color: #a1a1aa;
132
+ text-decoration: none;
133
+ font-weight: 500;
134
+ transition: color 0.3s ease;
135
+ position: relative;
136
+ }
137
+
138
+ .warlock-nav a::after {
139
+ content: "";
140
+ position: absolute;
141
+ bottom: -4px;
142
+ left: 0;
143
+ width: 0;
144
+ height: 2px;
145
+ background: linear-gradient(90deg, #fbbf24, #22c55e);
146
+ transition: width 0.3s ease;
147
+ }
148
+
149
+ .warlock-nav a:hover {
150
+ color: #fbbf24;
151
+ }
152
+
153
+ .warlock-nav a:hover::after {
154
+ width: 100%;
155
+ }
156
+
157
+ /* Hero Section */
158
+ .warlock-hero {
159
+ padding: 8rem 0;
160
+ text-align: center;
161
+ }
162
+
163
+ .warlock-hero h1 {
164
+ font-size: 4.5rem;
165
+ font-weight: 900;
166
+ margin-bottom: 1.5rem;
167
+ background: linear-gradient(135deg, #fbbf24 0%, #22c55e 100%);
168
+ -webkit-background-clip: text;
169
+ -webkit-text-fill-color: transparent;
170
+ background-clip: text;
171
+ line-height: 1.2;
172
+ animation: fadeInUp 0.8s ease-out;
173
+ }
174
+
175
+ .warlock-hero p {
176
+ font-size: 1.5rem;
177
+ color: #a1a1aa;
178
+ margin-bottom: 3rem;
179
+ max-width: 700px;
180
+ margin-left: auto;
181
+ margin-right: auto;
182
+ animation: fadeInUp 0.8s ease-out 0.2s both;
183
+ }
184
+
185
+ @keyframes fadeInUp {
186
+ from {
187
+ opacity: 0;
188
+ transform: translateY(30px);
189
+ }
190
+ to {
191
+ opacity: 1;
192
+ transform: translateY(0);
193
+ }
194
+ }
195
+
196
+ .warlock-cta {
197
+ display: flex;
198
+ gap: 1.5rem;
199
+ justify-content: center;
200
+ flex-wrap: wrap;
201
+ animation: fadeInUp 0.8s ease-out 0.4s both;
202
+ }
203
+
204
+ .warlock-btn {
205
+ padding: 1rem 2.5rem;
206
+ font-size: 1.1rem;
207
+ font-weight: 600;
208
+ text-decoration: none;
209
+ border-radius: 12px;
210
+ transition: all 0.3s ease;
211
+ display: inline-flex;
212
+ align-items: center;
213
+ gap: 0.5rem;
214
+ position: relative;
215
+ overflow: hidden;
216
+ }
217
+
218
+ .warlock-btn::before {
219
+ content: "";
220
+ position: absolute;
221
+ top: 50%;
222
+ left: 50%;
223
+ width: 0;
224
+ height: 0;
225
+ border-radius: 50%;
226
+ background: rgba(255, 255, 255, 0.2);
227
+ transform: translate(-50%, -50%);
228
+ transition:
229
+ width 0.6s ease,
230
+ height 0.6s ease;
231
+ }
232
+
233
+ .warlock-btn:hover::before {
234
+ width: 300px;
235
+ height: 300px;
236
+ }
237
+
238
+ .warlock-btn-primary {
239
+ background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
240
+ color: #0a0a0f;
241
+ box-shadow: 0 10px 30px rgba(251, 191, 36, 0.3);
242
+ }
243
+
244
+ .warlock-btn-primary:hover {
245
+ transform: translateY(-3px);
246
+ box-shadow: 0 15px 40px rgba(251, 191, 36, 0.4);
247
+ }
248
+
249
+ .warlock-btn-secondary {
250
+ background: rgba(255, 255, 255, 0.05);
251
+ color: #e4e4e7;
252
+ border: 2px solid rgba(255, 255, 255, 0.1);
253
+ backdrop-filter: blur(10px);
254
+ }
255
+
256
+ .warlock-btn-secondary:hover {
257
+ background: rgba(255, 255, 255, 0.1);
258
+ border-color: rgba(251, 191, 36, 0.3);
259
+ transform: translateY(-3px);
260
+ }
261
+
262
+ /* Features Section */
263
+ .warlock-features {
264
+ padding: 6rem 0;
265
+ }
266
+
267
+ .warlock-section-title {
268
+ text-align: center;
269
+ font-size: 3rem;
270
+ font-weight: 800;
271
+ margin-bottom: 1rem;
272
+ background: linear-gradient(135deg, #fbbf24 0%, #22c55e 100%);
273
+ -webkit-background-clip: text;
274
+ -webkit-text-fill-color: transparent;
275
+ background-clip: text;
276
+ }
277
+
278
+ .warlock-section-subtitle {
279
+ text-align: center;
280
+ font-size: 1.25rem;
281
+ color: #71717a;
282
+ margin-bottom: 4rem;
283
+ }
284
+
285
+ .warlock-features-grid {
286
+ display: grid;
287
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
288
+ gap: 2rem;
289
+ }
290
+
291
+ .warlock-feature-card {
292
+ background: rgba(255, 255, 255, 0.02);
293
+ border: 1px solid rgba(255, 255, 255, 0.05);
294
+ border-radius: 16px;
295
+ padding: 2.5rem;
296
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
297
+ backdrop-filter: blur(10px);
298
+ position: relative;
299
+ overflow: hidden;
300
+ }
301
+
302
+ .warlock-feature-card::before {
303
+ content: "";
304
+ position: absolute;
305
+ top: 0;
306
+ left: 0;
307
+ right: 0;
308
+ height: 3px;
309
+ background: linear-gradient(90deg, #fbbf24, #22c55e);
310
+ transform: scaleX(0);
311
+ transform-origin: left;
312
+ transition: transform 0.4s ease;
313
+ }
314
+
315
+ .warlock-feature-card:hover::before {
316
+ transform: scaleX(1);
317
+ }
318
+
319
+ .warlock-feature-card:hover {
320
+ transform: translateY(-8px);
321
+ background: rgba(255, 255, 255, 0.05);
322
+ border-color: rgba(251, 191, 36, 0.2);
323
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
324
+ }
325
+
326
+ .warlock-feature-icon {
327
+ font-size: 3rem;
328
+ margin-bottom: 1.5rem;
329
+ display: block;
330
+ }
331
+
332
+ .warlock-feature-card h3 {
333
+ font-size: 1.5rem;
334
+ font-weight: 700;
335
+ margin-bottom: 1rem;
336
+ color: #fbbf24;
337
+ }
338
+
339
+ .warlock-feature-card p {
340
+ color: #a1a1aa;
341
+ line-height: 1.8;
342
+ }
343
+
344
+ /* Quick Start Section */
345
+ .warlock-quickstart {
346
+ padding: 6rem 0;
347
+ background: rgba(255, 255, 255, 0.01);
348
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
349
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
350
+ }
351
+
352
+ .warlock-code-block {
353
+ background: rgba(0, 0, 0, 0.4);
354
+ border: 1px solid rgba(255, 255, 255, 0.1);
355
+ border-radius: 16px;
356
+ padding: 2rem;
357
+ margin-top: 2rem;
358
+ position: relative;
359
+ overflow: hidden;
360
+ backdrop-filter: blur(20px);
361
+ }
362
+
363
+ .warlock-code-header {
364
+ display: flex;
365
+ align-items: center;
366
+ gap: 0.5rem;
367
+ margin-bottom: 1.5rem;
368
+ padding-bottom: 1rem;
369
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
370
+ }
371
+
372
+ .warlock-code-dot {
373
+ width: 12px;
374
+ height: 12px;
375
+ border-radius: 50%;
376
+ }
377
+
378
+ .warlock-code-dot:nth-child(1) {
379
+ background: #ef4444;
380
+ }
381
+ .warlock-code-dot:nth-child(2) {
382
+ background: #f59e0b;
383
+ }
384
+ .warlock-code-dot:nth-child(3) {
385
+ background: #22c55e;
386
+ }
387
+
388
+ .warlock-code-content {
389
+ font-family: "Fira Code", "Courier New", monospace;
390
+ font-size: 1rem;
391
+ line-height: 2;
392
+ color: #e4e4e7;
393
+ }
394
+
395
+ .warlock-code-line {
396
+ display: block;
397
+ transition: background 0.2s ease;
398
+ padding: 0.25rem 0.5rem;
399
+ border-radius: 4px;
400
+ }
401
+
402
+ .warlock-code-line:hover {
403
+ background: rgba(251, 191, 36, 0.1);
404
+ }
405
+
406
+ .warlock-code-comment {
407
+ color: #71717a;
408
+ }
409
+
410
+ .warlock-code-command {
411
+ color: #22c55e;
412
+ }
413
+
414
+ .warlock-code-flag {
415
+ color: #fbbf24;
416
+ }
417
+
418
+ .warlock-code-string {
419
+ color: #06b6d4;
420
+ }
421
+
422
+ /* Footer */
423
+ .warlock-footer {
424
+ padding: 4rem 0 2rem;
425
+ text-align: center;
426
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
427
+ }
428
+
429
+ .warlock-social-links {
430
+ display: flex;
431
+ justify-content: center;
432
+ gap: 2rem;
433
+ margin-bottom: 2rem;
434
+ }
435
+
436
+ .warlock-social-link {
437
+ display: inline-flex;
438
+ align-items: center;
439
+ gap: 0.75rem;
440
+ padding: 1rem 2rem;
441
+ background: rgba(255, 255, 255, 0.03);
442
+ border: 1px solid rgba(255, 255, 255, 0.1);
443
+ border-radius: 12px;
444
+ color: #e4e4e7;
445
+ text-decoration: none;
446
+ font-weight: 600;
447
+ transition: all 0.3s ease;
448
+ backdrop-filter: blur(10px);
449
+ }
450
+
451
+ .warlock-social-link:hover {
452
+ background: rgba(255, 255, 255, 0.08);
453
+ border-color: rgba(251, 191, 36, 0.3);
454
+ transform: translateY(-3px);
455
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
456
+ }
457
+
458
+ .warlock-social-icon {
459
+ font-size: 1.5rem;
460
+ }
461
+
462
+ .warlock-footer-text {
463
+ color: #71717a;
464
+ font-size: 0.95rem;
465
+ }
466
+
467
+ .warlock-footer-text a {
468
+ color: #fbbf24;
469
+ text-decoration: none;
470
+ transition: color 0.3s ease;
471
+ }
472
+
473
+ .warlock-footer-text a:hover {
474
+ color: #f59e0b;
475
+ }
476
+
477
+ /* Responsive Design */
478
+ @media (max-width: 768px) {
479
+ .warlock-hero h1 {
480
+ font-size: 3rem;
481
+ }
482
+
483
+ .warlock-hero p {
484
+ font-size: 1.25rem;
485
+ }
486
+
487
+ .warlock-section-title {
488
+ font-size: 2.25rem;
489
+ }
490
+
491
+ .warlock-features-grid {
492
+ grid-template-columns: 1fr;
493
+ }
494
+
495
+ .warlock-nav {
496
+ display: none;
497
+ }
498
+
499
+ .warlock-social-links {
500
+ flex-direction: column;
501
+ gap: 1rem;
502
+ }
503
+
504
+ .warlock-cta {
505
+ flex-direction: column;
506
+ }
507
+
508
+ .warlock-btn {
509
+ width: 100%;
510
+ justify-content: center;
511
+ }
512
+ }
513
+
514
+ /* Smooth Scroll */
515
+ html {
516
+ scroll-behavior: smooth;
517
+ }
518
+
519
+ /* Selection */
520
+ ::selection {
521
+ background: rgba(251, 191, 36, 0.3);
522
+ color: #fbbf24;
523
+ }