@whykusanagi/corrupted-theme 0.1.0

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.
@@ -0,0 +1,530 @@
1
+ /* Corrupted Theme - Nikke Game-Specific Utilities
2
+ *
3
+ * This module provides optional styling for Nikke-related applications.
4
+ * It extends the base Corrupted Theme with game-specific components and utilities.
5
+ *
6
+ * Nikke Element System:
7
+ * - Water (Blue)
8
+ * - Wind (Green)
9
+ * - Iron (Yellow/Orange)
10
+ * - Electric (Purple/Pink)
11
+ * - Fire (Red)
12
+ */
13
+
14
+ /* ============================================
15
+ ELEMENT SYSTEM
16
+ ============================================ */
17
+
18
+ /* CSS Variables for Nikke Elements */
19
+ :root {
20
+ /* Nikke Element Colors */
21
+ --nikke-element-water: #0066cc;
22
+ --nikke-element-wind: #22c55e;
23
+ --nikke-element-iron: #f59e0b;
24
+ --nikke-element-electric: #a855f7;
25
+ --nikke-element-fire: #ef4444;
26
+
27
+ /* Element backgrounds (with transparency) */
28
+ --nikke-element-water-bg: rgba(0, 102, 204, 0.15);
29
+ --nikke-element-wind-bg: rgba(34, 197, 94, 0.15);
30
+ --nikke-element-iron-bg: rgba(245, 158, 11, 0.15);
31
+ --nikke-element-electric-bg: rgba(168, 85, 247, 0.15);
32
+ --nikke-element-fire-bg: rgba(239, 68, 68, 0.15);
33
+ }
34
+
35
+ /* ============================================
36
+ ELEMENT PILLS & BADGES
37
+ ============================================ */
38
+
39
+ /* Base element badge/pill style */
40
+ .element-badge {
41
+ display: inline-block;
42
+ padding: var(--spacing-xs) var(--spacing-sm);
43
+ border-radius: var(--radius-sm);
44
+ font-size: 0.85rem;
45
+ font-weight: 600;
46
+ text-transform: uppercase;
47
+ letter-spacing: 0.5px;
48
+ border: 1px solid;
49
+ white-space: nowrap;
50
+ }
51
+
52
+ /* Element variants - consistent across all uses */
53
+ .element-water {
54
+ background-color: var(--nikke-element-water-bg);
55
+ color: var(--nikke-element-water);
56
+ border-color: var(--nikke-element-water);
57
+ }
58
+
59
+ .element-wind {
60
+ background-color: var(--nikke-element-wind-bg);
61
+ color: var(--nikke-element-wind);
62
+ border-color: var(--nikke-element-wind);
63
+ }
64
+
65
+ .element-iron {
66
+ background-color: var(--nikke-element-iron-bg);
67
+ color: var(--nikke-element-iron);
68
+ border-color: var(--nikke-element-iron);
69
+ }
70
+
71
+ .element-electric {
72
+ background-color: var(--nikke-element-electric-bg);
73
+ color: var(--nikke-element-electric);
74
+ border-color: var(--nikke-element-electric);
75
+ }
76
+
77
+ .element-fire {
78
+ background-color: var(--nikke-element-fire-bg);
79
+ color: var(--nikke-element-fire);
80
+ border-color: var(--nikke-element-fire);
81
+ }
82
+
83
+ /* Solid button versions (for prominent display) */
84
+ .element-badge.solid {
85
+ color: white;
86
+ border: none;
87
+ }
88
+
89
+ .element-water.solid {
90
+ background-color: var(--nikke-element-water);
91
+ }
92
+
93
+ .element-wind.solid {
94
+ background-color: var(--nikke-element-wind);
95
+ }
96
+
97
+ .element-iron.solid {
98
+ background-color: var(--nikke-element-iron);
99
+ }
100
+
101
+ .element-electric.solid {
102
+ background-color: var(--nikke-element-electric);
103
+ }
104
+
105
+ .element-fire.solid {
106
+ background-color: var(--nikke-element-fire);
107
+ }
108
+
109
+ /* Outline versions (for subtle display) */
110
+ .element-badge.outline {
111
+ background-color: transparent;
112
+ border: 2px solid;
113
+ }
114
+
115
+ /* ============================================
116
+ ELEMENT PILLS (For interactive selection)
117
+ ============================================ */
118
+
119
+ /* Pill container - flex layout for element selection */
120
+ .element-pills {
121
+ display: flex;
122
+ flex-wrap: wrap;
123
+ gap: var(--spacing-md);
124
+ }
125
+
126
+ /* Individual pill button */
127
+ .element-pill {
128
+ padding: var(--spacing-sm) var(--spacing-md);
129
+ border-radius: var(--radius-lg);
130
+ border: 2px solid;
131
+ background-color: transparent;
132
+ font-weight: 600;
133
+ text-transform: uppercase;
134
+ letter-spacing: 0.5px;
135
+ cursor: pointer;
136
+ transition: all var(--transition-normal);
137
+ font-size: 0.9rem;
138
+ }
139
+
140
+ .element-pill:hover {
141
+ transform: translateY(-2px);
142
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
143
+ }
144
+
145
+ .element-pill.water {
146
+ color: var(--nikke-element-water);
147
+ border-color: var(--nikke-element-water);
148
+ }
149
+
150
+ .element-pill.water:hover {
151
+ background-color: var(--nikke-element-water-bg);
152
+ }
153
+
154
+ .element-pill.water.active {
155
+ background-color: var(--nikke-element-water);
156
+ color: white;
157
+ border-color: var(--nikke-element-water);
158
+ }
159
+
160
+ .element-pill.wind {
161
+ color: var(--nikke-element-wind);
162
+ border-color: var(--nikke-element-wind);
163
+ }
164
+
165
+ .element-pill.wind:hover {
166
+ background-color: var(--nikke-element-wind-bg);
167
+ }
168
+
169
+ .element-pill.wind.active {
170
+ background-color: var(--nikke-element-wind);
171
+ color: white;
172
+ border-color: var(--nikke-element-wind);
173
+ }
174
+
175
+ .element-pill.iron {
176
+ color: var(--nikke-element-iron);
177
+ border-color: var(--nikke-element-iron);
178
+ }
179
+
180
+ .element-pill.iron:hover {
181
+ background-color: var(--nikke-element-iron-bg);
182
+ }
183
+
184
+ .element-pill.iron.active {
185
+ background-color: var(--nikke-element-iron);
186
+ color: white;
187
+ border-color: var(--nikke-element-iron);
188
+ }
189
+
190
+ .element-pill.electric {
191
+ color: var(--nikke-element-electric);
192
+ border-color: var(--nikke-element-electric);
193
+ }
194
+
195
+ .element-pill.electric:hover {
196
+ background-color: var(--nikke-element-electric-bg);
197
+ }
198
+
199
+ .element-pill.electric.active {
200
+ background-color: var(--nikke-element-electric);
201
+ color: white;
202
+ border-color: var(--nikke-element-electric);
203
+ }
204
+
205
+ .element-pill.fire {
206
+ color: var(--nikke-element-fire);
207
+ border-color: var(--nikke-element-fire);
208
+ }
209
+
210
+ .element-pill.fire:hover {
211
+ background-color: var(--nikke-element-fire-bg);
212
+ }
213
+
214
+ .element-pill.fire.active {
215
+ background-color: var(--nikke-element-fire);
216
+ color: white;
217
+ border-color: var(--nikke-element-fire);
218
+ }
219
+
220
+ /* ============================================
221
+ TEAM POSITION CARDS
222
+ ============================================ */
223
+
224
+ /* Team position grid (5 squad slots) */
225
+ .team-position-cards {
226
+ display: grid;
227
+ grid-template-columns: repeat(5, 1fr);
228
+ gap: var(--spacing-md);
229
+ margin-bottom: var(--spacing-lg);
230
+ }
231
+
232
+ /* Individual position card */
233
+ .position-card {
234
+ border: 1px solid var(--border);
235
+ border-radius: var(--radius-lg);
236
+ background: var(--glass);
237
+ transition: all var(--transition-normal);
238
+ min-height: 120px;
239
+ display: flex;
240
+ flex-direction: column;
241
+ overflow: hidden;
242
+ }
243
+
244
+ .position-card:hover {
245
+ border-color: var(--accent);
246
+ box-shadow: 0 4px 12px rgba(217, 79, 144, 0.15);
247
+ }
248
+
249
+ /* Position card states */
250
+ .position-card.filled {
251
+ border-color: var(--color-success);
252
+ background: rgba(16, 185, 129, 0.1);
253
+ }
254
+
255
+ .position-card.filled:hover {
256
+ border-color: #15803d;
257
+ box-shadow: 0 4px 12px rgba(16, 185, 129, 0.2);
258
+ }
259
+
260
+ .position-card.selected {
261
+ border-color: var(--accent);
262
+ background: rgba(217, 79, 144, 0.1);
263
+ box-shadow: 0 4px 12px rgba(217, 79, 144, 0.2);
264
+ }
265
+
266
+ .position-card.selected:hover {
267
+ border-color: #c41e3a;
268
+ box-shadow: 0 6px 16px rgba(217, 79, 144, 0.3);
269
+ }
270
+
271
+ /* Position card header */
272
+ .position-header {
273
+ background: linear-gradient(135deg, var(--accent) 0%, #c41e3a 100%);
274
+ color: white;
275
+ padding: var(--spacing-sm);
276
+ display: flex;
277
+ align-items: center;
278
+ justify-content: space-between;
279
+ font-size: 0.9rem;
280
+ font-weight: 600;
281
+ flex-shrink: 0;
282
+ }
283
+
284
+ .position-number {
285
+ background: rgba(255, 255, 255, 0.2);
286
+ border-radius: 50%;
287
+ width: 24px;
288
+ height: 24px;
289
+ display: flex;
290
+ align-items: center;
291
+ justify-content: center;
292
+ font-size: 0.8rem;
293
+ font-weight: bold;
294
+ flex-shrink: 0;
295
+ }
296
+
297
+ .position-label {
298
+ font-size: 0.8rem;
299
+ flex: 1;
300
+ text-align: center;
301
+ }
302
+
303
+ /* Position card content area */
304
+ .position-content {
305
+ flex: 1;
306
+ padding: var(--spacing-md);
307
+ display: flex;
308
+ flex-direction: column;
309
+ align-items: center;
310
+ justify-content: center;
311
+ position: relative;
312
+ }
313
+
314
+ .unit-display {
315
+ text-align: center;
316
+ width: 100%;
317
+ min-height: 40px;
318
+ display: flex;
319
+ align-items: center;
320
+ justify-content: center;
321
+ }
322
+
323
+ .empty-slot {
324
+ color: var(--text-secondary);
325
+ font-style: italic;
326
+ font-size: 0.9rem;
327
+ }
328
+
329
+ .unit-name {
330
+ color: var(--text);
331
+ font-weight: 600;
332
+ font-size: 0.9rem;
333
+ word-break: break-word;
334
+ line-height: 1.2;
335
+ }
336
+
337
+ .remove-unit {
338
+ position: absolute;
339
+ top: var(--spacing-xs);
340
+ right: var(--spacing-xs);
341
+ width: 24px;
342
+ height: 24px;
343
+ padding: 0;
344
+ border-radius: 50%;
345
+ display: flex;
346
+ align-items: center;
347
+ justify-content: center;
348
+ font-size: 0.7rem;
349
+ background: transparent;
350
+ border: 1px solid var(--border);
351
+ color: var(--text-secondary);
352
+ cursor: pointer;
353
+ transition: all var(--transition-normal);
354
+ }
355
+
356
+ .remove-unit:hover {
357
+ background-color: var(--color-error);
358
+ border-color: var(--color-error);
359
+ color: white;
360
+ }
361
+
362
+ /* ============================================
363
+ DRAG & DROP FEEDBACK
364
+ ============================================ */
365
+
366
+ /* Draggable unit styling */
367
+ .team-unit {
368
+ position: relative;
369
+ cursor: move;
370
+ user-select: none;
371
+ transition: all var(--transition-normal);
372
+ }
373
+
374
+ .team-unit:hover {
375
+ transform: scale(1.05);
376
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
377
+ }
378
+
379
+ .team-unit.dragging {
380
+ opacity: 0.5;
381
+ transform: rotate(5deg) scale(0.95);
382
+ z-index: 1000;
383
+ }
384
+
385
+ .team-unit.drag-over {
386
+ border-color: var(--accent);
387
+ background: rgba(217, 79, 144, 0.1);
388
+ }
389
+
390
+ /* Drop zone styling */
391
+ .drop-zone {
392
+ min-height: 40px;
393
+ border: 2px dashed var(--border);
394
+ border-radius: var(--radius-md);
395
+ padding: var(--spacing-md);
396
+ transition: all var(--transition-normal);
397
+ display: flex;
398
+ align-items: center;
399
+ justify-content: center;
400
+ color: var(--text-secondary);
401
+ font-size: 0.9rem;
402
+ background: transparent;
403
+ }
404
+
405
+ .drop-zone:hover {
406
+ border-color: var(--border-light);
407
+ background: rgba(139, 92, 246, 0.05);
408
+ }
409
+
410
+ .drop-zone.drag-over {
411
+ border-color: var(--accent);
412
+ background: rgba(217, 79, 144, 0.1);
413
+ color: var(--text);
414
+ }
415
+
416
+ .drop-zone.has-units {
417
+ border-style: solid;
418
+ border-color: var(--accent);
419
+ background: rgba(217, 79, 144, 0.05);
420
+ }
421
+
422
+ /* ============================================
423
+ UNIT SELECTION UTILITIES
424
+ ============================================ */
425
+
426
+ /* Unit button for selection lists */
427
+ .unit-btn {
428
+ margin: var(--spacing-xs);
429
+ font-size: 0.8rem;
430
+ padding: var(--spacing-xs) var(--spacing-sm);
431
+ border-radius: var(--radius-md);
432
+ border: 1px solid var(--border);
433
+ background: var(--glass);
434
+ color: var(--text);
435
+ cursor: pointer;
436
+ transition: all var(--transition-normal);
437
+ font-weight: 500;
438
+ }
439
+
440
+ .unit-btn:hover:not(:disabled) {
441
+ transform: translateY(-1px);
442
+ box-shadow: 0 2px 4px rgba(217, 79, 144, 0.2);
443
+ border-color: var(--accent);
444
+ }
445
+
446
+ .unit-btn.selected {
447
+ background: var(--accent);
448
+ color: white;
449
+ border-color: var(--accent);
450
+ box-shadow: 0 4px 8px rgba(217, 79, 144, 0.3);
451
+ }
452
+
453
+ .unit-btn:disabled {
454
+ opacity: 0.6;
455
+ cursor: not-allowed;
456
+ }
457
+
458
+ /* Unit list container */
459
+ .available-units {
460
+ max-height: 200px;
461
+ overflow-y: auto;
462
+ border: 1px solid var(--border);
463
+ border-radius: var(--radius-md);
464
+ padding: var(--spacing-md);
465
+ background: var(--glass);
466
+ }
467
+
468
+ /* ============================================
469
+ RESPONSIVE ADJUSTMENTS
470
+ ============================================ */
471
+
472
+ @media (max-width: 1024px) {
473
+ .team-position-cards {
474
+ grid-template-columns: repeat(4, 1fr);
475
+ gap: var(--spacing-sm);
476
+ }
477
+
478
+ .position-card {
479
+ min-height: 100px;
480
+ }
481
+ }
482
+
483
+ @media (max-width: 768px) {
484
+ .team-position-cards {
485
+ grid-template-columns: repeat(3, 1fr);
486
+ gap: var(--spacing-sm);
487
+ }
488
+
489
+ .position-card {
490
+ min-height: 90px;
491
+ }
492
+
493
+ .position-header {
494
+ padding: var(--spacing-xs);
495
+ font-size: 0.8rem;
496
+ }
497
+
498
+ .position-content {
499
+ padding: var(--spacing-sm);
500
+ }
501
+
502
+ .element-pills {
503
+ gap: var(--spacing-sm);
504
+ }
505
+
506
+ .element-pill {
507
+ padding: var(--spacing-xs) var(--spacing-sm);
508
+ font-size: 0.8rem;
509
+ }
510
+ }
511
+
512
+ @media (max-width: 480px) {
513
+ .team-position-cards {
514
+ grid-template-columns: repeat(2, 1fr);
515
+ gap: var(--spacing-xs);
516
+ }
517
+
518
+ .position-card {
519
+ min-height: 80px;
520
+ }
521
+
522
+ .element-pills {
523
+ flex-direction: column;
524
+ }
525
+
526
+ .element-pill {
527
+ width: 100%;
528
+ text-align: center;
529
+ }
530
+ }