ogthing 0.0.0-alpha.1

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.
package/src/styles.css ADDED
@@ -0,0 +1,865 @@
1
+ :root {
2
+ --bg: #0a0a0a;
3
+ --bg-raised: #111111;
4
+ --bg-inset: #141414;
5
+ --border: #262626;
6
+ --border-soft: #1f1f1f;
7
+ --text: #fafafa;
8
+ --text-mid: #a3a3a3;
9
+ --text-dim: #737373;
10
+ --accent: #fafafa;
11
+ --good: #22c55e;
12
+ --warn: #eab308;
13
+ --bad: #ef4444;
14
+ color-scheme: dark;
15
+ }
16
+
17
+ html.light {
18
+ --bg: #f8f7f4;
19
+ --bg-raised: #ffffff;
20
+ --bg-inset: #efedea;
21
+ --border: #e5e2dd;
22
+ --border-soft: #ebe8e3;
23
+ --text: #171412;
24
+ --text-mid: #57534e;
25
+ --text-dim: #a8a29e;
26
+ --accent: #171412;
27
+ color-scheme: light;
28
+ }
29
+
30
+ * {
31
+ box-sizing: border-box;
32
+ }
33
+
34
+ body {
35
+ margin: 0;
36
+ background: var(--bg);
37
+ color: var(--text);
38
+ font-family:
39
+ ui-sans-serif,
40
+ system-ui,
41
+ -apple-system,
42
+ "Segoe UI",
43
+ sans-serif;
44
+ font-size: 14px;
45
+ line-height: 1.5;
46
+ -webkit-font-smoothing: antialiased;
47
+ }
48
+
49
+ button {
50
+ font: inherit;
51
+ background: none;
52
+ border: none;
53
+ padding: 0;
54
+ cursor: pointer;
55
+ color: inherit;
56
+ }
57
+
58
+ a {
59
+ color: inherit;
60
+ }
61
+
62
+ img {
63
+ max-width: 100%;
64
+ }
65
+
66
+ .hidden {
67
+ display: none !important;
68
+ }
69
+
70
+ .page {
71
+ max-width: 860px;
72
+ margin: 0 auto;
73
+ padding: 20px 24px 80px;
74
+ }
75
+
76
+ .topbar {
77
+ display: flex;
78
+ align-items: center;
79
+ justify-content: space-between;
80
+ margin-bottom: 48px;
81
+ }
82
+
83
+ .brand {
84
+ display: flex;
85
+ align-items: center;
86
+ gap: 8px;
87
+ font-size: 13px;
88
+ letter-spacing: 0.08em;
89
+ text-transform: lowercase;
90
+ }
91
+
92
+ .brand svg {
93
+ opacity: 0.9;
94
+ }
95
+
96
+ .topbar-right {
97
+ display: flex;
98
+ align-items: center;
99
+ gap: 14px;
100
+ }
101
+
102
+ .local-badge {
103
+ font-size: 10px;
104
+ letter-spacing: 0.15em;
105
+ text-transform: uppercase;
106
+ color: var(--text-dim);
107
+ }
108
+
109
+ .icon-button {
110
+ display: inline-flex;
111
+ align-items: center;
112
+ justify-content: center;
113
+ width: 28px;
114
+ height: 28px;
115
+ border-radius: 6px;
116
+ color: var(--text-dim);
117
+ transition: color 0.15s ease;
118
+ }
119
+
120
+ .icon-button:hover,
121
+ .icon-button.accent {
122
+ color: var(--text);
123
+ }
124
+
125
+ .landing {
126
+ display: grid;
127
+ overflow: hidden;
128
+ transition: grid-template-rows 0.3s ease;
129
+ grid-template-rows: 1fr;
130
+ }
131
+
132
+ .landing.collapsed {
133
+ grid-template-rows: 0fr;
134
+ }
135
+
136
+ .landing > * {
137
+ min-height: 0;
138
+ overflow: hidden;
139
+ }
140
+
141
+ .hero {
142
+ font-family: ui-serif, Georgia, "Times New Roman", serif;
143
+ font-style: italic;
144
+ font-weight: 500;
145
+ font-size: 44px;
146
+ letter-spacing: -0.02em;
147
+ margin: 0 0 10px;
148
+ }
149
+
150
+ .subline {
151
+ color: var(--text-mid);
152
+ font-size: 14px;
153
+ max-width: 420px;
154
+ margin: 0 0 32px;
155
+ }
156
+
157
+ .url-form {
158
+ position: relative;
159
+ display: flex;
160
+ align-items: center;
161
+ gap: 10px;
162
+ border-bottom: 1px solid var(--border);
163
+ transition: border-color 0.2s ease;
164
+ padding-bottom: 10px;
165
+ }
166
+
167
+ .url-form:focus-within {
168
+ border-color: var(--text-dim);
169
+ }
170
+
171
+ .ua-select {
172
+ appearance: none;
173
+ background: transparent;
174
+ border: 1px solid var(--border);
175
+ border-radius: 999px;
176
+ color: var(--text-mid);
177
+ font-size: 11px;
178
+ padding: 4px 22px 4px 10px;
179
+ cursor: pointer;
180
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 24 24' fill='none' stroke='%23737373' stroke-width='3'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
181
+ background-repeat: no-repeat;
182
+ background-position: right 8px center;
183
+ }
184
+
185
+ .ua-select:focus {
186
+ outline: none;
187
+ border-color: var(--text-dim);
188
+ }
189
+
190
+ .url-input {
191
+ flex: 1;
192
+ min-width: 0;
193
+ background: transparent;
194
+ border: none;
195
+ outline: none;
196
+ color: var(--text);
197
+ font-size: 16px;
198
+ padding: 6px 0;
199
+ }
200
+
201
+ .url-input::placeholder {
202
+ color: var(--text-dim);
203
+ }
204
+
205
+ .url-actions {
206
+ display: flex;
207
+ align-items: center;
208
+ gap: 2px;
209
+ }
210
+
211
+ .spinner {
212
+ width: 14px;
213
+ height: 14px;
214
+ border: 2px solid var(--border);
215
+ border-top-color: var(--text);
216
+ border-radius: 50%;
217
+ animation: spin 0.7s linear infinite;
218
+ }
219
+
220
+ @keyframes spin {
221
+ to {
222
+ transform: rotate(360deg);
223
+ }
224
+ }
225
+
226
+ .error {
227
+ margin-top: 14px;
228
+ color: var(--bad);
229
+ font-size: 13px;
230
+ }
231
+
232
+ .status-line {
233
+ margin-top: 14px;
234
+ color: var(--text-dim);
235
+ font-size: 13px;
236
+ }
237
+
238
+ .try-row {
239
+ padding-top: 36px;
240
+ }
241
+
242
+ .section-label {
243
+ font-size: 10px;
244
+ letter-spacing: 0.2em;
245
+ text-transform: uppercase;
246
+ color: var(--text-dim);
247
+ margin-bottom: 10px;
248
+ }
249
+
250
+ .section-label-row {
251
+ display: flex;
252
+ align-items: baseline;
253
+ gap: 12px;
254
+ }
255
+
256
+ .link-button {
257
+ font-size: 10px;
258
+ letter-spacing: 0.1em;
259
+ text-transform: uppercase;
260
+ color: var(--text-dim);
261
+ }
262
+
263
+ .link-button:hover {
264
+ color: var(--text-mid);
265
+ }
266
+
267
+ .chip-row {
268
+ display: flex;
269
+ flex-wrap: wrap;
270
+ gap: 14px;
271
+ }
272
+
273
+ .chip {
274
+ font-size: 13px;
275
+ color: var(--text);
276
+ transition: opacity 0.15s ease;
277
+ }
278
+
279
+ .chip:hover {
280
+ opacity: 0.55;
281
+ }
282
+
283
+ .results {
284
+ margin-top: 44px;
285
+ }
286
+
287
+ .tabs {
288
+ display: flex;
289
+ flex-wrap: wrap;
290
+ gap: 18px;
291
+ }
292
+
293
+ .tab {
294
+ font-size: 11px;
295
+ letter-spacing: 0.15em;
296
+ text-transform: uppercase;
297
+ color: var(--text-dim);
298
+ transition: color 0.15s ease;
299
+ }
300
+
301
+ .tab:hover,
302
+ .tab.active {
303
+ color: var(--text);
304
+ }
305
+
306
+ .tab-body {
307
+ margin-top: 26px;
308
+ min-height: 400px;
309
+ }
310
+
311
+ .stack {
312
+ display: grid;
313
+ gap: 22px;
314
+ }
315
+
316
+ .card {
317
+ border: 1px solid var(--border);
318
+ border-radius: 10px;
319
+ overflow: hidden;
320
+ }
321
+
322
+ .card-head {
323
+ padding: 10px 16px;
324
+ background: var(--bg-raised);
325
+ border-bottom: 1px solid var(--border);
326
+ font-size: 13px;
327
+ font-weight: 500;
328
+ }
329
+
330
+ .card-body {
331
+ padding: 8px 16px 12px;
332
+ }
333
+
334
+ .field-row {
335
+ display: flex;
336
+ gap: 12px;
337
+ padding: 8px 0;
338
+ border-bottom: 1px solid var(--border-soft);
339
+ }
340
+
341
+ .field-row:last-child {
342
+ border-bottom: none;
343
+ }
344
+
345
+ .field-label {
346
+ flex: 0 0 110px;
347
+ font-size: 11px;
348
+ letter-spacing: 0.04em;
349
+ color: var(--text-dim);
350
+ text-transform: capitalize;
351
+ padding-top: 2px;
352
+ }
353
+
354
+ .field-value {
355
+ flex: 1;
356
+ min-width: 0;
357
+ word-break: break-word;
358
+ }
359
+
360
+ .field-text {
361
+ white-space: pre-wrap;
362
+ }
363
+
364
+ .dim {
365
+ color: var(--text-dim);
366
+ }
367
+
368
+ .missing {
369
+ color: var(--bad);
370
+ font-size: 12px;
371
+ }
372
+
373
+ .char-count {
374
+ font-size: 11px;
375
+ margin-top: 2px;
376
+ color: var(--text-dim);
377
+ }
378
+
379
+ .char-count.ok {
380
+ color: var(--text-dim);
381
+ }
382
+
383
+ .char-count.warn {
384
+ color: var(--warn);
385
+ }
386
+
387
+ .char-count.error {
388
+ color: var(--bad);
389
+ }
390
+
391
+ .found {
392
+ color: var(--good);
393
+ text-decoration: none;
394
+ display: inline-flex;
395
+ align-items: center;
396
+ gap: 5px;
397
+ }
398
+
399
+ .found:hover {
400
+ text-decoration: underline;
401
+ }
402
+
403
+ .image-link img {
404
+ max-height: 140px;
405
+ max-width: 100%;
406
+ border: 1px solid var(--border);
407
+ border-radius: 6px;
408
+ display: block;
409
+ }
410
+
411
+ .swatch {
412
+ display: inline-block;
413
+ width: 14px;
414
+ height: 14px;
415
+ border-radius: 4px;
416
+ border: 1px solid var(--border);
417
+ vertical-align: middle;
418
+ }
419
+
420
+ .score-wrap {
421
+ display: flex;
422
+ align-items: flex-start;
423
+ gap: 40px;
424
+ }
425
+
426
+ .score-ring {
427
+ position: relative;
428
+ width: 96px;
429
+ height: 96px;
430
+ flex-shrink: 0;
431
+ }
432
+
433
+ .score-ring svg {
434
+ width: 96px;
435
+ height: 96px;
436
+ }
437
+
438
+ .ring-bg {
439
+ stroke: var(--border);
440
+ }
441
+
442
+ .ring-fg {
443
+ stroke: currentColor;
444
+ transition: stroke-dashoffset 0.5s ease;
445
+ }
446
+
447
+ .score-ring.good {
448
+ color: var(--good);
449
+ }
450
+
451
+ .score-ring.mid {
452
+ color: var(--warn);
453
+ }
454
+
455
+ .score-ring.bad {
456
+ color: var(--bad);
457
+ }
458
+
459
+ .score-number {
460
+ position: absolute;
461
+ inset: 0;
462
+ display: grid;
463
+ place-items: center;
464
+ font-size: 24px;
465
+ font-weight: 500;
466
+ color: currentColor;
467
+ }
468
+
469
+ .checks-grid {
470
+ flex: 1;
471
+ display: grid;
472
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
473
+ gap: 8px 28px;
474
+ align-content: start;
475
+ }
476
+
477
+ .check-item {
478
+ display: flex;
479
+ align-items: center;
480
+ gap: 8px;
481
+ font-size: 13px;
482
+ color: var(--text-mid);
483
+ }
484
+
485
+ .dot {
486
+ width: 6px;
487
+ height: 6px;
488
+ border-radius: 50%;
489
+ flex-shrink: 0;
490
+ }
491
+
492
+ .dot.ok {
493
+ background: var(--good);
494
+ }
495
+
496
+ .dot.bad {
497
+ background: var(--bad);
498
+ }
499
+
500
+ .dot.warn {
501
+ background: var(--warn);
502
+ }
503
+
504
+ .preview-stage {
505
+ margin-top: 18px;
506
+ }
507
+
508
+ .preview-image-card {
509
+ background: var(--bg-raised);
510
+ border: 1px solid var(--border);
511
+ border-radius: 10px;
512
+ padding: 16px;
513
+ margin-bottom: 14px;
514
+ }
515
+
516
+ .preview-image-card img {
517
+ max-height: 170px;
518
+ border: 1px solid var(--border);
519
+ border-radius: 6px;
520
+ }
521
+
522
+ .preview-image-card .favicon-preview {
523
+ width: 40px;
524
+ height: 40px;
525
+ object-fit: contain;
526
+ background: var(--bg-inset);
527
+ }
528
+
529
+ .dimension-line {
530
+ display: flex;
531
+ align-items: center;
532
+ gap: 8px;
533
+ margin-top: 8px;
534
+ font-size: 12px;
535
+ color: var(--text-dim);
536
+ }
537
+
538
+ .empty-note {
539
+ border: 1px dashed var(--border);
540
+ border-radius: 10px;
541
+ padding: 40px;
542
+ text-align: center;
543
+ color: var(--text-dim);
544
+ }
545
+
546
+ .raw-toolbar {
547
+ display: flex;
548
+ justify-content: space-between;
549
+ align-items: center;
550
+ margin-bottom: 12px;
551
+ }
552
+
553
+ .copy-button {
554
+ display: inline-flex;
555
+ align-items: center;
556
+ gap: 6px;
557
+ font-size: 11px;
558
+ padding: 5px 10px;
559
+ border: 1px solid var(--border);
560
+ border-radius: 6px;
561
+ background: var(--bg-raised);
562
+ }
563
+
564
+ .copy-button:hover {
565
+ border-color: var(--text-dim);
566
+ }
567
+
568
+ .code-block {
569
+ background: var(--bg-raised);
570
+ border: 1px solid var(--border);
571
+ border-radius: 10px;
572
+ padding: 16px;
573
+ overflow: auto;
574
+ max-height: 420px;
575
+ font-size: 12px;
576
+ line-height: 1.6;
577
+ color: var(--text-mid);
578
+ margin: 0;
579
+ }
580
+
581
+ /* platform previews */
582
+
583
+ .pv {
584
+ max-width: 420px;
585
+ border-radius: 10px;
586
+ overflow: hidden;
587
+ }
588
+
589
+ .pv-title {
590
+ font-size: 15px;
591
+ font-weight: 600;
592
+ line-height: 1.3;
593
+ }
594
+
595
+ .pv-title-sm {
596
+ font-size: 13.5px;
597
+ font-weight: 600;
598
+ line-height: 1.35;
599
+ }
600
+
601
+ .pv-desc-clamp {
602
+ margin-top: 4px;
603
+ font-size: 13px;
604
+ line-height: 1.45;
605
+ display: -webkit-box;
606
+ -webkit-line-clamp: 2;
607
+ -webkit-box-orient: vertical;
608
+ overflow: hidden;
609
+ }
610
+
611
+ .pv-desc-clamp.xs {
612
+ font-size: 12px;
613
+ }
614
+
615
+ .pv-desc-xs {
616
+ font-size: 12px;
617
+ line-height: 1.45;
618
+ color: inherit;
619
+ opacity: 0.75;
620
+ }
621
+
622
+ .clamp1 {
623
+ display: -webkit-box;
624
+ -webkit-line-clamp: 1;
625
+ -webkit-box-orient: vertical;
626
+ overflow: hidden;
627
+ }
628
+
629
+ .clamp2 {
630
+ display: -webkit-box;
631
+ -webkit-line-clamp: 2;
632
+ -webkit-box-orient: vertical;
633
+ overflow: hidden;
634
+ }
635
+
636
+ .pv-img-cover.tall {
637
+ width: 100%;
638
+ height: 240px;
639
+ object-fit: cover;
640
+ display: block;
641
+ }
642
+
643
+ .pv-img-cover.medium {
644
+ width: 100%;
645
+ height: 208px;
646
+ object-fit: cover;
647
+ display: block;
648
+ }
649
+
650
+ .pv-img-rounded {
651
+ width: 100%;
652
+ max-height: 300px;
653
+ object-fit: cover;
654
+ border-radius: 4px;
655
+ margin-bottom: 8px;
656
+ display: block;
657
+ }
658
+
659
+ .pv-img-inline {
660
+ max-height: 190px;
661
+ max-width: 100%;
662
+ border-radius: 4px;
663
+ margin: 8px 0;
664
+ display: block;
665
+ }
666
+
667
+ /* telegram */
668
+ .pv-telegram {
669
+ background: #ffffff;
670
+ color: #181818;
671
+ }
672
+
673
+ html.light .pv-telegram {
674
+ box-shadow: 0 1px 4px rgb(0 0 0 / 12%);
675
+ }
676
+
677
+ .pv-telegram-url {
678
+ padding: 10px 12px 2px;
679
+ font-size: 12px;
680
+ color: #7c7c7c;
681
+ word-break: break-all;
682
+ }
683
+
684
+ .pv-telegram-body {
685
+ padding: 2px 12px 10px;
686
+ }
687
+
688
+ /* discord + slack share the accent-bar layout */
689
+ .pv-discord {
690
+ background: #1c1c1c;
691
+ color: #e0e0e0;
692
+ padding: 14px;
693
+ }
694
+
695
+ .pv-slack {
696
+ background: #222222;
697
+ color: #d1d2d3;
698
+ padding: 12px;
699
+ }
700
+
701
+ .pv-accent {
702
+ border-left: 4px solid #444444;
703
+ padding: 8px 12px;
704
+ }
705
+
706
+ .pv-accent.slack {
707
+ border-left-color: #444444;
708
+ }
709
+
710
+ .pv-host {
711
+ margin-top: 8px;
712
+ display: flex;
713
+ align-items: center;
714
+ gap: 4px;
715
+ font-size: 11px;
716
+ color: #888888;
717
+ }
718
+
719
+ .pv-host-dim {
720
+ margin-top: 4px;
721
+ font-size: 11px;
722
+ color: #888888;
723
+ }
724
+
725
+ /* whatsapp */
726
+ .pv-whatsapp {
727
+ background: #1c1c1c;
728
+ color: #e0e0e0;
729
+ padding: 12px;
730
+ }
731
+
732
+ .pv-bordered {
733
+ border: 1px solid #444444;
734
+ border-radius: 8px;
735
+ overflow: hidden;
736
+ background: #1c1c1c;
737
+ }
738
+
739
+ .pv-bordered.shadowed {
740
+ box-shadow: 0 1px 3px rgb(0 0 0 / 30%);
741
+ }
742
+
743
+ .pv-padded {
744
+ padding: 10px 12px;
745
+ }
746
+
747
+ /* facebook */
748
+ .pv-facebook {
749
+ background: #242526;
750
+ color: #e4e6eb;
751
+ padding: 12px;
752
+ }
753
+
754
+ .pv-host-caps {
755
+ font-size: 11px;
756
+ text-transform: uppercase;
757
+ color: #b0b3b8;
758
+ margin-bottom: 3px;
759
+ }
760
+
761
+ /* linkedin */
762
+ .pv-linkedin {
763
+ background: #1c1c1c;
764
+ color: #ffffff;
765
+ padding: 12px;
766
+ }
767
+
768
+ /* x */
769
+ .pv-x {
770
+ max-width: 520px;
771
+ border: 1px solid #2f3336;
772
+ border-radius: 16px;
773
+ overflow: hidden;
774
+ background: #16181c;
775
+ color: #e7e9ea;
776
+ }
777
+
778
+ .pv-x.small {
779
+ display: flex;
780
+ height: 131px;
781
+ }
782
+
783
+ .pv-x.small img {
784
+ width: 130px;
785
+ height: 100%;
786
+ object-fit: cover;
787
+ border-right: 1px solid #2f3336;
788
+ display: block;
789
+ }
790
+
791
+ .x-fallback {
792
+ width: 130px;
793
+ display: grid;
794
+ place-items: center;
795
+ border-right: 1px solid #2f3336;
796
+ color: #71767b;
797
+ font-size: 11px;
798
+ }
799
+
800
+ .x-body {
801
+ flex: 1;
802
+ display: flex;
803
+ flex-direction: column;
804
+ justify-content: center;
805
+ gap: 2px;
806
+ padding: 12px;
807
+ min-width: 0;
808
+ }
809
+
810
+ .x-body.padded {
811
+ padding: 16px;
812
+ }
813
+
814
+ .x-host {
815
+ font-size: 12px;
816
+ color: #71767b;
817
+ }
818
+
819
+ .x-title {
820
+ font-size: 15px;
821
+ font-weight: 500;
822
+ }
823
+
824
+ .x-desc {
825
+ font-size: 12.5px;
826
+ color: #71767b;
827
+ }
828
+
829
+ .x-hero {
830
+ position: relative;
831
+ }
832
+
833
+ .x-hero img {
834
+ aspect-ratio: 120 / 63;
835
+ width: 100%;
836
+ object-fit: cover;
837
+ display: block;
838
+ }
839
+
840
+ .x-overlay {
841
+ position: absolute;
842
+ bottom: 10px;
843
+ left: 10px;
844
+ max-width: calc(100% - 20px);
845
+ background: rgb(0 0 0 / 75%);
846
+ color: #ffffff;
847
+ font-size: 14px;
848
+ padding: 2px 8px;
849
+ border-radius: 4px;
850
+ }
851
+
852
+ @media (max-width: 640px) {
853
+ .score-wrap {
854
+ flex-direction: column;
855
+ gap: 20px;
856
+ }
857
+
858
+ .local-badge {
859
+ display: none;
860
+ }
861
+
862
+ .field-label {
863
+ flex-basis: 90px;
864
+ }
865
+ }