@jjlmoya/utils-astronomy 1.13.0 → 1.14.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.
@@ -1,476 +1,5 @@
1
1
  .scope-container {
2
- --on-dark: #fff;
3
- --planet-tint: #fef9c3;
4
-
5
- position: relative;
6
- width: 100%;
7
- height: 600px;
8
- background: var(--color-bg-deep, #000);
9
- border-radius: 1.5rem;
10
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.8);
11
- overflow: hidden;
12
- border: 1px solid rgba(100, 116, 139, 0.3);
13
- cursor: grab;
14
- touch-action: none;
15
- user-select: none;
16
- }
17
-
18
- @media (min-width: 768px) {
19
- .scope-container {
20
- height: 800px;
21
- }
22
- }
23
-
24
- .scope-container:active {
25
- cursor: grabbing;
26
- }
27
-
28
- .world-layer {
29
- position: absolute;
30
- inset: 0;
31
- width: 100%;
32
- height: 100%;
33
- will-change: transform;
34
- }
35
-
36
- .sky-canvas {
37
- position: absolute;
38
- inset: 0;
39
- width: 100%;
40
- height: 100%;
41
- z-index: 0;
42
- }
43
-
44
- .objects-layer {
45
- position: absolute;
46
- inset: 0;
47
- width: 100%;
48
- height: 100%;
49
- z-index: 10;
50
- pointer-events: none;
51
- }
52
-
53
- .scope-vignette {
54
- position: absolute;
55
- inset: 0;
56
- background: radial-gradient(
57
- circle at center,
58
- transparent 0%,
59
- rgba(0, 0, 0, 0.5) 100%
60
- );
61
- pointer-events: none;
62
- z-index: 20;
63
- }
64
-
65
- .scope-pollution-layer {
66
- position: absolute;
67
- inset: 0;
68
- z-index: 10;
69
- pointer-events: none;
70
- mix-blend-mode: screen;
71
- background: transparent;
72
- transition: background-color 0.5s ease;
73
- }
74
-
75
- .scope-drag-hint {
76
- position: absolute;
77
- top: 1.5rem;
78
- left: 50%;
79
- transform: translateX(-50%);
80
- z-index: 30;
81
- opacity: 0.7;
82
- pointer-events: none;
83
- background: rgba(0, 0, 0, 0.5);
84
- padding: 0.25rem 1rem;
85
- border-radius: 9999px;
86
- font-size: 0.625rem;
87
- color: var(--on-dark);
88
- text-transform: uppercase;
89
- letter-spacing: 0.1em;
90
- border: 1px solid rgba(255, 255, 255, 0.1);
91
- backdrop-filter: blur(12px);
92
- white-space: nowrap;
93
- }
94
-
95
- .hint-mobile {
96
- display: inline;
97
- }
98
-
99
- .hint-desktop {
100
- display: none;
101
- }
102
-
103
- @media (min-width: 768px) {
104
- .hint-mobile {
105
- display: none;
106
- }
107
- .hint-desktop {
108
- display: inline;
109
- }
110
- }
111
-
112
- :global(.scope-object) {
113
- position: absolute;
114
- transform: translate(-50%, -50%);
115
- display: flex;
116
- flex-direction: column;
117
- align-items: center;
118
- justify-content: center;
119
- transition: opacity 0.3s ease;
120
- will-change: transform;
121
- pointer-events: auto;
122
- cursor: pointer;
123
- }
124
-
125
- :global(.scope-object:hover) :global(.scope-obj-icon) {
126
- transform: scale(1.25);
127
- }
128
-
129
- :global(.scope-obj-icon) {
130
- font-size: 2rem;
131
- transition: transform 0.3s ease;
132
- filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.4));
133
- }
134
-
135
- @media (min-width: 768px) {
136
- :global(.scope-obj-icon) {
137
- font-size: 3rem;
138
- }
139
- }
140
-
141
- :global(.scope-obj-label) {
142
- margin-top: 0.5rem;
143
- display: flex;
144
- flex-direction: column;
145
- align-items: center;
146
- opacity: 0;
147
- transition: opacity 0.3s ease;
148
- }
149
-
150
- :global(.scope-obj-name) {
151
- font-size: 0.625rem;
152
- font-weight: 700;
153
- color: var(--on-dark);
154
- background: rgba(0, 0, 0, 0.6);
155
- padding: 0.125rem 0.5rem;
156
- border-radius: 0.25rem;
157
- backdrop-filter: blur(8px);
158
- border: 1px solid rgba(255, 255, 255, 0.1);
159
- white-space: nowrap;
160
- }
161
-
162
- :global(.scope-obj-mag) {
163
- font-size: 0.5rem;
164
- color: rgba(148, 163, 184, 0.8);
165
- background: rgba(0, 0, 0, 0.8);
166
- padding: 0 0.25rem;
167
- border-radius: 0.2rem;
168
- margin-top: 0.125rem;
169
- }
170
-
171
- .scope-modal {
172
- position: absolute;
173
- inset: 0;
174
- z-index: 50;
175
- display: flex;
176
- align-items: center;
177
- justify-content: center;
178
- background: rgba(0, 0, 0, 0.6);
179
- backdrop-filter: blur(4px);
180
- transition: opacity 0.3s ease;
181
- }
182
-
183
- .scope-modal.modal-hidden {
184
- opacity: 0;
185
- pointer-events: none;
186
- }
187
-
188
- .scope-modal-content {
189
- background: #0f172a;
190
- border: 1px solid rgba(255, 255, 255, 0.2);
191
- padding: 1.5rem;
192
- border-radius: 1rem;
193
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.8);
194
- max-width: 22rem;
195
- width: calc(100% - 3rem);
196
- transition: transform 0.3s ease;
197
- }
198
-
199
- .modal-scale-in {
200
- transform: scale(1);
201
- }
202
- .modal-scale-out {
203
- transform: scale(0.95);
204
- }
205
-
206
- .modal-header {
207
- display: flex;
208
- justify-content: space-between;
209
- align-items: flex-start;
210
- margin-bottom: 1rem;
211
- }
212
-
213
- .modal-header-info {
214
- display: flex;
215
- align-items: center;
216
- gap: 0.75rem;
217
- }
218
-
219
- .modal-icon {
220
- font-size: 2.5rem;
221
- }
222
-
223
- .modal-title {
224
- font-size: 1.25rem;
225
- font-weight: 700;
226
- color: var(--on-dark);
227
- margin: 0;
228
- line-height: 1;
229
- }
230
-
231
- .modal-type {
232
- font-size: 0.625rem;
233
- color: var(--text-muted, #94a3b8);
234
- text-transform: uppercase;
235
- letter-spacing: 0.1em;
236
- margin: 0.25rem 0 0;
237
- }
238
-
239
- .modal-close {
240
- background: none;
241
- border: none;
242
- color: var(--text-muted, #94a3b8);
243
- cursor: pointer;
244
- font-size: 1.5rem;
245
- padding: 0;
246
- transition: color 0.2s ease;
247
- }
248
-
249
- .modal-close:hover {
250
- color: var(--on-dark);
251
- }
252
-
253
- .modal-body {
254
- display: flex;
255
- flex-direction: column;
256
- gap: 0.75rem;
257
- }
258
-
259
- .modal-stat {
260
- display: flex;
261
- justify-content: space-between;
262
- align-items: center;
263
- background: rgba(255, 255, 255, 0.05);
264
- padding: 0.75rem;
265
- border-radius: 0.5rem;
266
- }
267
-
268
- .modal-stat-label {
269
- font-size: 0.75rem;
270
- color: var(--text-muted, #94a3b8);
271
- text-transform: uppercase;
272
- }
273
-
274
- .modal-stat-value {
275
- color: var(--on-dark);
276
- font-weight: 700;
277
- }
278
-
279
- .modal-coords {
280
- text-align: right;
281
- }
282
-
283
- .modal-coord {
284
- font-size: 0.75rem;
285
- color: var(--on-dark);
286
- }
287
-
288
- .modal-coord-secondary {
289
- color: var(--text-muted, #94a3b8);
290
- }
291
-
292
- .modal-desc {
293
- font-size: 0.875rem;
294
- color: var(--text-muted, #94a3b8);
295
- line-height: 1.6;
296
- margin: 0;
297
- }
298
-
299
- .scope-controls-wrapper {
300
- position: absolute;
301
- bottom: 1.5rem;
302
- left: 1.5rem;
303
- right: 1.5rem;
304
- z-index: 40;
305
- display: flex;
306
- flex-direction: column;
307
- align-items: center;
308
- gap: 1rem;
309
- pointer-events: auto;
310
- }
311
-
312
- .scope-controls {
313
- width: 100%;
314
- max-width: 56rem;
315
- background: rgba(15, 23, 42, 0.9);
316
- backdrop-filter: blur(20px);
317
- border: 1px solid rgba(255, 255, 255, 0.2);
318
- border-radius: 1rem;
319
- padding: 1rem;
320
- box-shadow: 0 0 50px rgba(0, 0, 0, 0.5);
321
- }
322
-
323
- @media (min-width: 768px) {
324
- .scope-controls {
325
- padding: 1.5rem;
326
- }
327
- }
328
-
329
- .scope-control-grid {
330
- display: grid;
331
- grid-template-columns: 1fr;
332
- gap: 1.5rem;
333
- align-items: center;
334
- }
335
-
336
- @media (min-width: 768px) {
337
- .scope-control-grid {
338
- grid-template-columns: 1fr auto 1fr;
339
- gap: 2rem;
340
- }
341
- }
342
-
343
- .scope-control-group {
344
- display: flex;
345
- flex-direction: column;
346
- gap: 0.75rem;
347
- }
348
-
349
- .scope-control-header {
350
- display: flex;
351
- justify-content: space-between;
352
- align-items: center;
353
- }
354
-
355
- .scope-control-label {
356
- font-size: 0.75rem;
357
- font-weight: 700;
358
- text-transform: uppercase;
359
- letter-spacing: 0.05em;
360
- display: flex;
361
- align-items: center;
362
- gap: 0.5rem;
363
- }
364
-
365
- .scope-label-cyan {
366
- color: var(--color-cyan, #06b6d4);
367
- }
368
- .scope-label-amber {
369
- color: var(--color-amber, #f59e0b);
370
- }
371
-
372
- .scope-control-value {
373
- color: var(--on-dark);
374
- font-size: 0.875rem;
375
- background: rgba(255, 255, 255, 0.1);
376
- padding: 0.125rem 0.5rem;
377
- border-radius: 0.25rem;
378
- }
379
-
380
- .scope-range {
381
- width: 100%;
382
- height: 0.375rem;
383
- background: rgba(100, 116, 139, 0.4);
384
- border-radius: 9999px;
385
- appearance: none;
386
- cursor: pointer;
387
- outline: none;
388
- }
389
-
390
- .scope-range-cyan {
391
- accent-color: var(--color-cyan, #06b6d4);
392
- }
393
- .scope-range-amber {
394
- accent-color: var(--color-amber, #f59e0b);
395
- }
396
-
397
- .scope-limit-display {
398
- display: flex;
399
- flex-direction: column;
400
- align-items: center;
401
- justify-content: center;
402
- border-top: 1px solid rgba(255, 255, 255, 0.1);
403
- border-bottom: 1px solid rgba(255, 255, 255, 0.1);
404
- padding: 0.5rem 1rem;
405
- }
406
-
407
- @media (min-width: 768px) {
408
- .scope-limit-display {
409
- border-top: none;
410
- border-bottom: none;
411
- border-left: 1px solid rgba(255, 255, 255, 0.1);
412
- border-right: 1px solid rgba(255, 255, 255, 0.1);
413
- padding: 0 2rem;
414
- }
415
- }
416
-
417
- .scope-limit-label {
418
- font-size: 0.625rem;
419
- color: var(--text-muted, #94a3b8);
420
- text-transform: uppercase;
421
- letter-spacing: 0.1em;
422
- margin-bottom: 0.25rem;
423
- }
424
-
425
- .scope-limit-value {
426
- font-size: 3rem;
427
- font-weight: 900;
428
- color: var(--on-dark);
429
- line-height: 1;
430
- text-shadow: 0 0 10px rgba(255, 255, 255, 0.3);
431
- }
432
-
433
- .scope-azimuth {
434
- font-size: 0.625rem;
435
- color: var(--color-cyan, #06b6d4);
436
- opacity: 0.5;
437
- margin-top: 0.5rem;
438
- }
439
-
440
- .scope-legend {
441
- display: flex;
442
- gap: 1rem;
443
- flex-wrap: wrap;
444
- font-size: 0.625rem;
445
- font-weight: 700;
446
- text-transform: uppercase;
447
- letter-spacing: 0.05em;
448
- color: var(--text-muted, #64748b);
449
- background: rgba(0, 0, 0, 0.8);
450
- padding: 0.5rem 1.5rem;
451
- border-radius: 9999px;
452
- backdrop-filter: blur(4px);
453
- border: 1px solid rgba(255, 255, 255, 0.05);
454
- }
455
-
456
- @media (min-width: 768px) {
457
- .scope-legend {
458
- gap: 2rem;
459
- }
460
- }
461
-
462
- .legend-item {
463
- display: flex;
464
- align-items: center;
465
- gap: 0.5rem;
466
- }
467
-
468
- .legend-planet {
469
- color: var(--planet-tint);
470
- }
471
- .legend-star {
472
- color: var(--on-dark);
473
- }
474
- .legend-deep {
475
- color: var(--color-indigo, #818cf8);
476
- }
2
+ width: 100%;
3
+ border-radius: 1.5rem;
4
+ overflow: hidden;
5
+ }