@dytsou/shorten-url 2.4.3 → 2.4.5

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,2253 @@
1
+ :root {
2
+ color: #202a25;
3
+ background: #f3f5f4;
4
+ color-scheme: light;
5
+ font-family:
6
+ system-ui,
7
+ -apple-system,
8
+ BlinkMacSystemFont,
9
+ "Segoe UI",
10
+ sans-serif;
11
+ font-synthesis: none;
12
+ text-rendering: optimizeLegibility;
13
+ --ink: #202a25;
14
+ --ink-soft: #3d4b43;
15
+ --surface: #fff;
16
+ --paper: #f3f5f4;
17
+ --paper-deep: #e8ece9;
18
+ --atlas-red: #13845f;
19
+ --atlas-red-dark: #116b4d;
20
+ --atlas-blue: #13845f;
21
+ --atlas-blue-deep: #116b4d;
22
+ --atlas-sage: #557a63;
23
+ --atlas-wash: #e8f3ed;
24
+ --muted: #68756e;
25
+ --muted-light: #859189;
26
+ --line: #d5ddd8;
27
+ --line-soft: #e4e9e6;
28
+ --shadow: rgba(24, 48, 71, 0.04);
29
+ --mono-size: 0.74rem;
30
+ --display-font: "Fraunces", "Iowan Old Style", Georgia, "Times New Roman", serif;
31
+ }
32
+
33
+ * {
34
+ box-sizing: border-box;
35
+ }
36
+
37
+ html {
38
+ min-width: 320px;
39
+ background: var(--paper);
40
+ }
41
+
42
+ body {
43
+ min-width: 320px;
44
+ min-height: 100vh;
45
+ margin: 0;
46
+ overflow-x: hidden;
47
+ background: var(--paper);
48
+ }
49
+
50
+ button,
51
+ input,
52
+ select,
53
+ textarea {
54
+ font: inherit;
55
+ }
56
+
57
+ button,
58
+ a {
59
+ -webkit-tap-highlight-color: transparent;
60
+ }
61
+
62
+ a {
63
+ color: inherit;
64
+ }
65
+
66
+ button {
67
+ cursor: pointer;
68
+ }
69
+
70
+ button:disabled,
71
+ fieldset:disabled button,
72
+ fieldset:disabled input,
73
+ fieldset:disabled select,
74
+ fieldset:disabled textarea {
75
+ cursor: not-allowed;
76
+ opacity: 0.55;
77
+ }
78
+
79
+ button:focus-visible,
80
+ a:focus-visible,
81
+ input:focus-visible,
82
+ select:focus-visible,
83
+ textarea:focus-visible {
84
+ outline: 2px solid rgba(19, 132, 95, 0.55);
85
+ outline-offset: 2px;
86
+ }
87
+
88
+ .app-shell {
89
+ position: relative;
90
+ z-index: 1;
91
+ width: min(1240px, calc(100% - 40px));
92
+ min-height: 100vh;
93
+ margin: 0 auto;
94
+ }
95
+
96
+ .topbar {
97
+ display: flex;
98
+ align-items: center;
99
+ justify-content: space-between;
100
+ min-height: 94px;
101
+ border-bottom: 1px solid var(--line);
102
+ }
103
+
104
+ .brand {
105
+ display: inline-flex;
106
+ gap: 0.75rem;
107
+ align-items: center;
108
+ color: var(--ink);
109
+ font-family: var(--display-font);
110
+ font-size: 1.32rem;
111
+ font-weight: 700;
112
+ letter-spacing: -0.045em;
113
+ text-decoration: none;
114
+ }
115
+
116
+ .brand__mark {
117
+ display: grid;
118
+ width: 34px;
119
+ height: 34px;
120
+ border: 4px solid var(--surface);
121
+ border-radius: 50%;
122
+ color: var(--surface);
123
+ background: var(--atlas-blue-deep);
124
+ box-shadow:
125
+ 0 0 0 1px var(--atlas-blue-deep),
126
+ 0 0 0 6px rgba(53, 101, 140, 0.12);
127
+ place-items: center;
128
+ font-family: var(--display-font);
129
+ font-size: 1.15rem;
130
+ font-weight: 700;
131
+ line-height: 1;
132
+ }
133
+
134
+ .topbar__meta {
135
+ display: flex;
136
+ gap: 1.25rem;
137
+ align-items: center;
138
+ color: var(--muted);
139
+ font-size: 0.63rem;
140
+ letter-spacing: 0.1em;
141
+ }
142
+
143
+ .online-dot {
144
+ width: 8px;
145
+ height: 8px;
146
+ border-radius: 50%;
147
+ background: var(--atlas-sage);
148
+ box-shadow: 0 0 0 5px rgba(127, 154, 134, 0.15);
149
+ }
150
+
151
+ .topbar__tabs {
152
+ display: flex;
153
+ gap: 0.35rem;
154
+ align-self: stretch;
155
+ }
156
+
157
+ .topbar__tab {
158
+ position: relative;
159
+ min-height: 94px;
160
+ padding: 0.65rem 0.55rem;
161
+ border: 0;
162
+ color: var(--muted);
163
+ background: transparent;
164
+ font-size: 0.66rem;
165
+ font-weight: 700;
166
+ letter-spacing: 0.08em;
167
+ text-transform: uppercase;
168
+ transition:
169
+ color 180ms ease,
170
+ background 180ms ease;
171
+ }
172
+
173
+ .topbar__tab::after {
174
+ position: absolute;
175
+ right: 0.55rem;
176
+ bottom: 0;
177
+ left: 0.55rem;
178
+ height: 3px;
179
+ background: transparent;
180
+ content: "";
181
+ transform: scaleX(0.35);
182
+ transform-origin: center;
183
+ transition:
184
+ background 180ms ease,
185
+ transform 180ms ease;
186
+ }
187
+
188
+ .topbar__tab:hover {
189
+ color: var(--atlas-red);
190
+ background: rgba(201, 81, 66, 0.045);
191
+ }
192
+
193
+ .topbar__tab[aria-selected="true"] {
194
+ color: var(--atlas-red-dark);
195
+ }
196
+
197
+ .topbar__tab[aria-selected="true"]::after {
198
+ background: var(--atlas-red);
199
+ transform: scaleX(1);
200
+ }
201
+
202
+ .main-content {
203
+ padding: 82px 0 62px;
204
+ }
205
+
206
+ .hero-grid {
207
+ display: grid;
208
+ grid-template-columns: minmax(0, 1.12fr) minmax(360px, 0.88fr);
209
+ gap: clamp(54px, 8vw, 116px);
210
+ align-items: end;
211
+ }
212
+
213
+ .eyebrow {
214
+ margin: 0 0 1.1rem;
215
+ color: var(--atlas-blue);
216
+ font-size: var(--mono-size);
217
+ font-weight: 700;
218
+ letter-spacing: 0.14em;
219
+ line-height: 1.4;
220
+ }
221
+
222
+ .hero-copy h1,
223
+ .settings-heading h1 {
224
+ max-width: 700px;
225
+ margin: 0;
226
+ color: var(--ink);
227
+ font-family: var(--display-font);
228
+ font-size: clamp(3.65rem, 7vw, 7rem);
229
+ font-weight: 500;
230
+ letter-spacing: -0.075em;
231
+ line-height: 0.88;
232
+ }
233
+
234
+ .hero-copy h1 em,
235
+ .settings-heading h1 em {
236
+ color: var(--atlas-red);
237
+ font-style: italic;
238
+ }
239
+
240
+ .hero-copy__lede {
241
+ max-width: 520px;
242
+ margin: 2rem 0 0;
243
+ color: var(--ink-soft);
244
+ font-family: var(--display-font);
245
+ font-size: 1.1rem;
246
+ line-height: 1.55;
247
+ }
248
+
249
+ .hero-notes {
250
+ display: flex;
251
+ flex-wrap: wrap;
252
+ gap: 0.8rem 1.7rem;
253
+ margin-top: 3rem;
254
+ padding-top: 1.1rem;
255
+ border-top: 1px solid var(--line);
256
+ color: var(--muted);
257
+ font-size: 0.65rem;
258
+ letter-spacing: 0.05em;
259
+ text-transform: uppercase;
260
+ }
261
+
262
+ .hero-notes strong {
263
+ margin-right: 0.35rem;
264
+ color: var(--atlas-blue-deep);
265
+ }
266
+
267
+ .shorten-card,
268
+ .panel {
269
+ position: relative;
270
+ border: 1px solid var(--line);
271
+ border-radius: 14px;
272
+ background: rgba(255, 253, 248, 0.9);
273
+ box-shadow: 0 18px 42px var(--shadow);
274
+ }
275
+
276
+ .shorten-card {
277
+ display: grid;
278
+ grid-template-columns: minmax(0, 1fr);
279
+ gap: 1rem;
280
+ padding: 18px;
281
+ border: 1px solid var(--line);
282
+ border-radius: 4px;
283
+ background: var(--surface);
284
+ box-shadow: none;
285
+ }
286
+
287
+ .card-topline,
288
+ .panel-heading,
289
+ .editor-section-heading {
290
+ display: flex;
291
+ align-items: flex-start;
292
+ justify-content: space-between;
293
+ gap: 1rem;
294
+ }
295
+
296
+ .card-topline {
297
+ margin-bottom: 2.3rem;
298
+ color: var(--ink);
299
+ font-size: var(--mono-size);
300
+ font-weight: 700;
301
+ letter-spacing: 0.12em;
302
+ }
303
+
304
+ .field-group {
305
+ display: grid;
306
+ gap: 0.55rem;
307
+ margin-bottom: 1.3rem;
308
+ }
309
+
310
+ .field-group label {
311
+ color: var(--ink-soft);
312
+ font-size: 0.69rem;
313
+ font-weight: 700;
314
+ letter-spacing: 0.05em;
315
+ text-transform: uppercase;
316
+ }
317
+
318
+ .label-note {
319
+ color: var(--muted-light);
320
+ font-size: 0.63rem;
321
+ font-weight: 400;
322
+ letter-spacing: 0;
323
+ text-transform: lowercase;
324
+ }
325
+
326
+ input,
327
+ select,
328
+ textarea {
329
+ width: 100%;
330
+ border: 1px solid var(--line);
331
+ border-radius: 8px;
332
+ color: var(--ink);
333
+ background: rgba(255, 255, 255, 0.62);
334
+ outline: none;
335
+ transition:
336
+ border-color 180ms ease,
337
+ background 180ms ease,
338
+ box-shadow 180ms ease;
339
+ }
340
+
341
+ input,
342
+ select {
343
+ min-height: 48px;
344
+ padding: 0 0.9rem;
345
+ }
346
+
347
+ textarea {
348
+ min-height: 82px;
349
+ padding: 0.85rem 0.9rem;
350
+ resize: vertical;
351
+ }
352
+
353
+ input::placeholder,
354
+ textarea::placeholder {
355
+ color: var(--muted-light);
356
+ }
357
+
358
+ input:hover,
359
+ select:hover,
360
+ textarea:hover,
361
+ input:focus,
362
+ select:focus,
363
+ textarea:focus {
364
+ border-color: var(--atlas-red);
365
+ background: var(--surface);
366
+ box-shadow: 0 0 0 4px rgba(201, 81, 66, 0.08);
367
+ }
368
+
369
+ select {
370
+ appearance: none;
371
+ background-image:
372
+ linear-gradient(45deg, transparent 50%, var(--atlas-red) 50%),
373
+ linear-gradient(135deg, var(--atlas-red) 50%, transparent 50%);
374
+ background-position:
375
+ calc(100% - 18px) 21px,
376
+ calc(100% - 13px) 21px;
377
+ background-repeat: no-repeat;
378
+ background-size:
379
+ 5px 5px,
380
+ 5px 5px;
381
+ }
382
+
383
+ option {
384
+ color: var(--ink);
385
+ background: var(--surface);
386
+ }
387
+
388
+ .slug-input {
389
+ display: grid;
390
+ align-items: center;
391
+ overflow: hidden;
392
+ border: 1px solid var(--line);
393
+ border-radius: 4px;
394
+ background: #fff;
395
+ transition:
396
+ border-color 180ms ease,
397
+ box-shadow 180ms ease;
398
+ }
399
+
400
+ .slug-input:focus-within {
401
+ border-color: #13845f;
402
+ box-shadow: 0 0 0 2px rgba(19, 132, 95, 0.12);
403
+ }
404
+
405
+ .slug-input > .slug-prefix {
406
+ min-width: 0;
407
+ padding: 0.4rem 0.65rem;
408
+ border-bottom: 1px solid var(--line);
409
+ color: var(--muted);
410
+ background: #f7f9f8;
411
+ font-size: 0.76rem;
412
+ font-weight: 400;
413
+ overflow-wrap: anywhere;
414
+ }
415
+
416
+ .slug-input input {
417
+ border: 0;
418
+ border-radius: 0;
419
+ background: #fff;
420
+ box-shadow: none;
421
+ }
422
+
423
+ .button {
424
+ display: inline-flex;
425
+ min-height: 44px;
426
+ gap: 0.75rem;
427
+ align-items: center;
428
+ justify-content: center;
429
+ border: 1px solid transparent;
430
+ border-radius: 7px;
431
+ padding: 0.7rem 1rem;
432
+ font-size: 0.69rem;
433
+ font-weight: 700;
434
+ letter-spacing: 0.04em;
435
+ text-decoration: none;
436
+ text-transform: uppercase;
437
+ transition:
438
+ transform 180ms ease,
439
+ color 180ms ease,
440
+ background 180ms ease,
441
+ border-color 180ms ease,
442
+ box-shadow 180ms ease;
443
+ }
444
+
445
+ .button:not(:disabled):hover {
446
+ transform: translateY(-2px);
447
+ }
448
+
449
+ .button--wide {
450
+ width: 100%;
451
+ }
452
+
453
+ .button--primary {
454
+ color: var(--surface);
455
+ background: var(--atlas-red);
456
+ box-shadow: 0 6px 12px rgba(201, 81, 66, 0.17);
457
+ }
458
+
459
+ .button--primary:not(:disabled):hover {
460
+ background: var(--atlas-red-dark);
461
+ box-shadow: 0 8px 16px rgba(201, 81, 66, 0.22);
462
+ }
463
+
464
+ .button--dark {
465
+ color: var(--surface);
466
+ background: var(--ink);
467
+ border-color: var(--ink);
468
+ }
469
+
470
+ .button--dark:not(:disabled):hover {
471
+ background: var(--atlas-blue-deep);
472
+ border-color: var(--atlas-blue-deep);
473
+ }
474
+
475
+ .button--quiet {
476
+ color: var(--ink-soft);
477
+ background: transparent;
478
+ border-color: var(--line);
479
+ }
480
+
481
+ .button--quiet:not(:disabled):hover,
482
+ .button--small:not(:disabled):hover {
483
+ color: var(--atlas-red-dark);
484
+ border-color: var(--atlas-red);
485
+ background: rgba(201, 81, 66, 0.045);
486
+ }
487
+
488
+ .button--small {
489
+ min-height: 36px;
490
+ padding: 0.5rem 0.7rem;
491
+ color: var(--atlas-blue-deep);
492
+ background: var(--atlas-wash);
493
+ border-color: rgba(53, 101, 140, 0.28);
494
+ font-size: 0.63rem;
495
+ }
496
+
497
+ .form-footnote,
498
+ .helper-text,
499
+ .status {
500
+ color: var(--muted);
501
+ font-size: 0.66rem;
502
+ line-height: 1.5;
503
+ }
504
+
505
+ .form-footnote {
506
+ margin: 1rem 0 0;
507
+ }
508
+
509
+ code {
510
+ color: var(--atlas-blue-deep);
511
+ font-family: inherit;
512
+ }
513
+
514
+ .status {
515
+ margin: 1rem 0 0;
516
+ }
517
+
518
+ .status--error {
519
+ color: var(--atlas-red-dark);
520
+ }
521
+
522
+ .status--success {
523
+ color: var(--atlas-sage);
524
+ }
525
+
526
+ .result-card {
527
+ display: flex;
528
+ align-items: center;
529
+ justify-content: space-between;
530
+ gap: 1rem;
531
+ margin-top: 0;
532
+ padding: 16px 18px;
533
+ border: 1px solid var(--line);
534
+ border-left: 1px solid var(--line);
535
+ border-radius: 4px;
536
+ color: var(--ink);
537
+ background: var(--surface);
538
+ box-shadow: none;
539
+ }
540
+
541
+ .result-card .eyebrow {
542
+ margin: 0 0 0.35rem;
543
+ color: var(--muted);
544
+ font-size: 0.7rem;
545
+ }
546
+
547
+ .result-url {
548
+ display: inline-block;
549
+ max-width: min(560px, 65vw);
550
+ overflow: hidden;
551
+ color: #116b4d;
552
+ font-family: inherit;
553
+ font-size: 0.95rem;
554
+ font-weight: 600;
555
+ text-overflow: ellipsis;
556
+ white-space: nowrap;
557
+ }
558
+
559
+ .result-actions {
560
+ display: flex;
561
+ flex-shrink: 0;
562
+ gap: 0.45rem;
563
+ }
564
+
565
+ .result-card .button--quiet {
566
+ color: var(--ink-soft);
567
+ border-color: var(--line);
568
+ }
569
+
570
+ .process-strip {
571
+ display: grid;
572
+ grid-template-columns: 1.35fr repeat(3, 1fr);
573
+ margin-top: 78px;
574
+ border-top: 1px solid var(--line);
575
+ border-bottom: 1px solid var(--line);
576
+ }
577
+
578
+ .process-strip > * {
579
+ min-height: 148px;
580
+ padding: 24px;
581
+ border-right: 1px solid var(--line);
582
+ }
583
+
584
+ .process-strip > *:last-child {
585
+ border-right: 0;
586
+ }
587
+
588
+ .process-strip__intro {
589
+ background: rgba(255, 253, 248, 0.44);
590
+ }
591
+
592
+ .process-strip__intro p:last-child {
593
+ max-width: 250px;
594
+ margin: 0;
595
+ color: var(--ink-soft);
596
+ font-family: var(--display-font);
597
+ font-size: 0.96rem;
598
+ line-height: 1.45;
599
+ }
600
+
601
+ .process-step {
602
+ display: flex;
603
+ flex-direction: column;
604
+ align-items: flex-start;
605
+ }
606
+
607
+ .process-step span {
608
+ margin-bottom: auto;
609
+ color: var(--atlas-blue);
610
+ font-size: 0.68rem;
611
+ }
612
+
613
+ .process-step strong {
614
+ color: var(--ink);
615
+ font-family: var(--display-font);
616
+ font-size: 1.3rem;
617
+ font-weight: 500;
618
+ }
619
+
620
+ .process-step p {
621
+ margin: 0.5rem 0 0;
622
+ color: var(--muted);
623
+ font-size: 0.65rem;
624
+ line-height: 1.4;
625
+ }
626
+
627
+ .footer {
628
+ display: flex;
629
+ justify-content: space-between;
630
+ padding: 22px 0 28px;
631
+ color: var(--muted-light);
632
+ font-size: 0.6rem;
633
+ letter-spacing: 0.08em;
634
+ }
635
+
636
+ .settings-heading {
637
+ display: flex;
638
+ align-items: end;
639
+ justify-content: space-between;
640
+ gap: 3rem;
641
+ margin-bottom: 64px;
642
+ }
643
+
644
+ .settings-heading h1 {
645
+ font-size: clamp(3.5rem, 6.8vw, 6.7rem);
646
+ }
647
+
648
+ .settings-status-card {
649
+ min-width: 222px;
650
+ padding: 20px;
651
+ border: 1px solid var(--line);
652
+ border-left: 3px solid var(--atlas-red);
653
+ border-radius: 10px;
654
+ background: rgba(255, 253, 248, 0.65);
655
+ }
656
+
657
+ .settings-status-card p,
658
+ .settings-status-card small {
659
+ display: block;
660
+ margin: 0.9rem 0 0.35rem;
661
+ color: var(--muted);
662
+ font-size: 0.63rem;
663
+ }
664
+
665
+ .settings-status-card code {
666
+ display: block;
667
+ overflow: hidden;
668
+ text-overflow: ellipsis;
669
+ white-space: nowrap;
670
+ }
671
+
672
+ .state-badge {
673
+ display: inline-block;
674
+ padding: 0.35rem 0.5rem;
675
+ border-radius: 999px;
676
+ color: var(--atlas-blue-deep);
677
+ background: var(--atlas-wash);
678
+ font-size: 0.6rem;
679
+ font-weight: 700;
680
+ letter-spacing: 0.08em;
681
+ }
682
+
683
+ .state-badge--loading {
684
+ color: #765f2e;
685
+ background: #f3e5bd;
686
+ }
687
+
688
+ .state-badge--error {
689
+ color: var(--surface);
690
+ background: var(--atlas-red);
691
+ }
692
+
693
+ .settings-layout {
694
+ display: grid;
695
+ grid-template-columns: minmax(0, 1fr);
696
+ gap: 28px;
697
+ align-items: start;
698
+ }
699
+
700
+ .panel {
701
+ padding: clamp(24px, 4vw, 38px);
702
+ }
703
+
704
+ .panel-heading {
705
+ align-items: center;
706
+ margin-bottom: 2.5rem;
707
+ padding-bottom: 1.5rem;
708
+ border-bottom: 1px solid var(--line);
709
+ }
710
+
711
+ .panel-heading .eyebrow {
712
+ margin-bottom: 0.55rem;
713
+ }
714
+
715
+ .panel-heading h2 {
716
+ margin: 0;
717
+ color: var(--ink);
718
+ font-family: var(--display-font);
719
+ font-size: 1.9rem;
720
+ font-weight: 500;
721
+ letter-spacing: -0.04em;
722
+ }
723
+
724
+ .panel-actions {
725
+ display: flex;
726
+ flex-wrap: wrap;
727
+ gap: 0.45rem;
728
+ justify-content: flex-end;
729
+ }
730
+
731
+ .editor-fields {
732
+ min-width: 0;
733
+ margin: 0;
734
+ padding: 0;
735
+ border: 0;
736
+ }
737
+
738
+ .toggle-row {
739
+ display: flex;
740
+ gap: 1rem;
741
+ align-items: center;
742
+ justify-content: space-between;
743
+ margin: 1.7rem 0 2.6rem;
744
+ padding: 1rem;
745
+ border: 1px solid var(--line-soft);
746
+ border-radius: 9px;
747
+ background: rgba(228, 235, 229, 0.42);
748
+ }
749
+
750
+ .toggle-row > span:first-child {
751
+ display: grid;
752
+ gap: 0.35rem;
753
+ }
754
+
755
+ .toggle-row strong {
756
+ color: var(--ink);
757
+ font-size: 0.73rem;
758
+ }
759
+
760
+ .toggle-row small {
761
+ color: var(--muted);
762
+ font-size: 0.64rem;
763
+ }
764
+
765
+ .toggle-row input {
766
+ position: absolute;
767
+ width: 1px;
768
+ height: 1px;
769
+ opacity: 0;
770
+ }
771
+
772
+ .toggle-control {
773
+ position: relative;
774
+ display: block;
775
+ width: 44px;
776
+ height: 24px;
777
+ flex-shrink: 0;
778
+ border: 1px solid var(--line);
779
+ border-radius: 999px;
780
+ background: var(--paper-deep);
781
+ transition:
782
+ background 180ms ease,
783
+ border-color 180ms ease;
784
+ }
785
+
786
+ .toggle-control::after {
787
+ position: absolute;
788
+ top: 3px;
789
+ left: 3px;
790
+ width: 16px;
791
+ height: 16px;
792
+ border-radius: 50%;
793
+ content: "";
794
+ background: var(--muted-light);
795
+ transition:
796
+ transform 180ms ease,
797
+ background 180ms ease;
798
+ }
799
+
800
+ .toggle-row input:checked + .toggle-control {
801
+ border-color: var(--atlas-sage);
802
+ background: rgba(127, 154, 134, 0.28);
803
+ }
804
+
805
+ .toggle-row input:checked + .toggle-control::after {
806
+ background: var(--atlas-sage);
807
+ transform: translateX(20px);
808
+ }
809
+
810
+ .editor-section-heading {
811
+ align-items: end;
812
+ margin: 2.2rem 0 1rem;
813
+ }
814
+
815
+ .editor-section-heading .eyebrow {
816
+ margin-bottom: 0.35rem;
817
+ }
818
+
819
+ .helper-text {
820
+ margin: 0;
821
+ }
822
+
823
+ .repeat-list {
824
+ display: grid;
825
+ gap: 0.7rem;
826
+ }
827
+
828
+ .repeat-row {
829
+ display: grid;
830
+ grid-template-columns: minmax(110px, 0.3fr) minmax(0, 1fr) 32px;
831
+ gap: 0.7rem;
832
+ align-items: end;
833
+ padding: 0.9rem;
834
+ border: 1px solid var(--line-soft);
835
+ border-radius: 10px;
836
+ background: rgba(244, 238, 226, 0.55);
837
+ }
838
+
839
+ .repeat-row .field-group {
840
+ margin: 0;
841
+ }
842
+
843
+ .repeat-row .field-group label {
844
+ color: var(--muted);
845
+ font-size: 0.6rem;
846
+ }
847
+
848
+ .field-group--wide {
849
+ min-width: 0;
850
+ }
851
+
852
+ .icon-button {
853
+ display: grid;
854
+ width: 32px;
855
+ height: 48px;
856
+ border: 1px solid rgba(201, 81, 66, 0.4);
857
+ border-radius: 7px;
858
+ color: var(--atlas-red-dark);
859
+ background: transparent;
860
+ place-items: center;
861
+ font-size: 1.2rem;
862
+ transition:
863
+ background 180ms ease,
864
+ border-color 180ms ease;
865
+ }
866
+
867
+ .icon-button:not(:disabled):hover {
868
+ border-color: var(--atlas-red);
869
+ background: rgba(201, 81, 66, 0.08);
870
+ }
871
+
872
+ .repeat-list--rules {
873
+ gap: 0.5rem;
874
+ }
875
+
876
+ .repeat-row--rule {
877
+ grid-template-columns:
878
+ minmax(70px, 0.18fr) minmax(100px, 0.3fr) minmax(0, 1fr) minmax(100px, 0.2fr)
879
+ 32px;
880
+ }
881
+
882
+ .field-group--rollout {
883
+ min-width: 100px;
884
+ }
885
+
886
+ .empty-state {
887
+ padding: 1rem;
888
+ border: 1px dashed rgba(53, 101, 140, 0.35);
889
+ border-radius: 9px;
890
+ color: var(--muted);
891
+ background: rgba(228, 235, 229, 0.35);
892
+ font-size: 0.68rem;
893
+ line-height: 1.5;
894
+ }
895
+
896
+ @media (max-width: 900px) {
897
+ .hero-grid,
898
+ .settings-layout {
899
+ grid-template-columns: 1fr;
900
+ }
901
+
902
+ .settings-status-card {
903
+ min-width: 180px;
904
+ }
905
+
906
+ .process-strip {
907
+ grid-template-columns: repeat(3, 1fr);
908
+ }
909
+
910
+ .process-strip__intro {
911
+ grid-column: 1 / -1;
912
+ min-height: auto;
913
+ border-right: 0;
914
+ border-bottom: 1px solid var(--line);
915
+ }
916
+ }
917
+
918
+ @media (max-width: 620px) {
919
+ .app-shell {
920
+ width: min(100% - 28px, 1240px);
921
+ }
922
+
923
+ .topbar {
924
+ min-height: 72px;
925
+ }
926
+
927
+ .topbar__meta > span:not(.online-dot) {
928
+ display: none;
929
+ }
930
+
931
+ .topbar__meta {
932
+ gap: 0.75rem;
933
+ }
934
+
935
+ .topbar__tab {
936
+ min-height: 72px;
937
+ padding-inline: 0.55rem;
938
+ font-size: 0.59rem;
939
+ }
940
+
941
+ .topbar__tab::after {
942
+ right: 0.55rem;
943
+ left: 0.55rem;
944
+ }
945
+
946
+ .main-content {
947
+ padding-top: 48px;
948
+ }
949
+
950
+ .hero-copy h1,
951
+ .settings-heading h1 {
952
+ font-size: clamp(3.45rem, 18vw, 5.5rem);
953
+ }
954
+
955
+ .shorten-card,
956
+ .panel {
957
+ padding: 22px 18px;
958
+ }
959
+
960
+ .result-card,
961
+ .settings-heading {
962
+ align-items: stretch;
963
+ flex-direction: column;
964
+ }
965
+
966
+ .result-url {
967
+ max-width: 100%;
968
+ }
969
+
970
+ .result-actions {
971
+ width: 100%;
972
+ }
973
+
974
+ .result-actions .button {
975
+ flex: 1;
976
+ }
977
+
978
+ .settings-heading {
979
+ gap: 2rem;
980
+ margin-bottom: 42px;
981
+ }
982
+
983
+ .settings-status-card {
984
+ width: 100%;
985
+ }
986
+
987
+ .panel-heading {
988
+ align-items: flex-start;
989
+ flex-direction: column;
990
+ }
991
+
992
+ .panel-actions {
993
+ width: 100%;
994
+ justify-content: stretch;
995
+ }
996
+
997
+ .panel-actions .button {
998
+ flex: 1;
999
+ }
1000
+
1001
+ .repeat-row,
1002
+ .repeat-row--rule {
1003
+ grid-template-columns: 1fr 1fr 32px;
1004
+ }
1005
+
1006
+ .repeat-row .field-group--wide,
1007
+ .repeat-row--rule .field-group--wide {
1008
+ grid-column: 1 / -1;
1009
+ }
1010
+
1011
+ .repeat-row--rule .field-group--rollout {
1012
+ grid-column: 1 / -1;
1013
+ }
1014
+
1015
+ .repeat-row--rule .icon-button {
1016
+ grid-column: 3;
1017
+ grid-row: 1;
1018
+ }
1019
+
1020
+ .process-strip {
1021
+ grid-template-columns: 1fr;
1022
+ }
1023
+
1024
+ .process-strip__intro {
1025
+ grid-column: auto;
1026
+ border-bottom: 1px solid var(--line);
1027
+ }
1028
+
1029
+ .process-strip > * {
1030
+ min-height: auto;
1031
+ border-right: 0;
1032
+ border-bottom: 1px solid var(--line);
1033
+ }
1034
+
1035
+ .process-strip > *:last-child {
1036
+ border-bottom: 0;
1037
+ }
1038
+
1039
+ .footer {
1040
+ gap: 1rem;
1041
+ flex-direction: column;
1042
+ }
1043
+ }
1044
+
1045
+ /* Flag management: compact, scan-first controls for one routing flag. */
1046
+ .main-content.main-content--settings {
1047
+ --ink: #202a25;
1048
+ --ink-soft: #3d4b43;
1049
+ --surface: #fff;
1050
+ --paper: #f3f5f4;
1051
+ --atlas-blue: #13845f;
1052
+ --atlas-blue-deep: #116b4d;
1053
+ --atlas-wash: #e8f3ed;
1054
+ --muted: #68756e;
1055
+ --muted-light: #859189;
1056
+ --line: #d5ddd8;
1057
+ --line-soft: #e4e9e6;
1058
+ --shadow: rgba(24, 48, 71, 0.04);
1059
+ padding-top: 30px;
1060
+ color: var(--ink);
1061
+ font-family:
1062
+ system-ui,
1063
+ -apple-system,
1064
+ BlinkMacSystemFont,
1065
+ "Segoe UI",
1066
+ sans-serif;
1067
+ }
1068
+
1069
+ .flag-manager {
1070
+ display: grid;
1071
+ gap: 0.8rem;
1072
+ padding-bottom: 0;
1073
+ }
1074
+
1075
+ .flag-breadcrumb {
1076
+ display: flex;
1077
+ gap: 0.6rem;
1078
+ align-items: center;
1079
+ color: var(--muted);
1080
+ font-size: 0.78rem;
1081
+ }
1082
+
1083
+ .flag-breadcrumb code {
1084
+ font-weight: 700;
1085
+ }
1086
+
1087
+ .flag-manager-header {
1088
+ display: flex;
1089
+ align-items: flex-end;
1090
+ justify-content: space-between;
1091
+ gap: 1.5rem;
1092
+ padding-bottom: 0.8rem;
1093
+ border-bottom: 1px solid var(--line);
1094
+ }
1095
+
1096
+ .flag-manager-title .eyebrow {
1097
+ display: none;
1098
+ }
1099
+
1100
+ .flag-manager-title h1 {
1101
+ margin: 0;
1102
+ color: var(--ink);
1103
+ font-family: inherit;
1104
+ font-size: clamp(1.45rem, 2.5vw, 1.8rem);
1105
+ font-weight: 700;
1106
+ letter-spacing: normal;
1107
+ line-height: 1.15;
1108
+ overflow-wrap: anywhere;
1109
+ }
1110
+
1111
+ .flag-manager-title > p:last-child {
1112
+ margin: 0.45rem 0 0;
1113
+ color: var(--muted);
1114
+ font-size: 0.88rem;
1115
+ line-height: 1.5;
1116
+ }
1117
+
1118
+ .flag-state-list {
1119
+ display: flex;
1120
+ flex-wrap: wrap;
1121
+ gap: 0.45rem;
1122
+ align-items: center;
1123
+ justify-content: flex-end;
1124
+ }
1125
+
1126
+ .flag-state-chip,
1127
+ .count-chip {
1128
+ display: inline-flex;
1129
+ min-height: 28px;
1130
+ align-items: center;
1131
+ padding: 0.35rem 0.55rem;
1132
+ border: 1px solid var(--line-soft);
1133
+ border-radius: 4px;
1134
+ color: var(--muted);
1135
+ background: #f7f9f8;
1136
+ font-size: 0.7rem;
1137
+ font-weight: 700;
1138
+ letter-spacing: 0.07em;
1139
+ white-space: nowrap;
1140
+ }
1141
+
1142
+ .flag-state-chip--enabled,
1143
+ .flag-state-chip--saved {
1144
+ border-color: rgba(86, 125, 91, 0.25);
1145
+ color: #456b4a;
1146
+ background: #e8f3ed;
1147
+ }
1148
+
1149
+ .flag-state-chip--disabled,
1150
+ .flag-state-chip--new {
1151
+ color: var(--atlas-red-dark);
1152
+ background: rgba(201, 81, 66, 0.08);
1153
+ }
1154
+
1155
+ .flag-summary-strip {
1156
+ display: grid;
1157
+ grid-template-columns: repeat(4, minmax(0, 1fr));
1158
+ margin: 0;
1159
+ overflow: hidden;
1160
+ border: 1px solid var(--line);
1161
+ border-radius: 4px;
1162
+ background: var(--surface);
1163
+ }
1164
+
1165
+ .flag-summary-strip > div {
1166
+ min-width: 0;
1167
+ padding: 0.8rem 1rem;
1168
+ }
1169
+
1170
+ .flag-summary-strip > div + div {
1171
+ border-inline-start: 1px solid var(--line-soft);
1172
+ }
1173
+
1174
+ .flag-summary-strip dt {
1175
+ margin-bottom: 0.35rem;
1176
+ color: var(--muted-light);
1177
+ font-size: 0.68rem;
1178
+ font-weight: 700;
1179
+ letter-spacing: 0.11em;
1180
+ }
1181
+
1182
+ .flag-summary-strip dd {
1183
+ min-width: 0;
1184
+ margin: 0;
1185
+ overflow: hidden;
1186
+ color: var(--ink);
1187
+ font-size: 0.82rem;
1188
+ font-weight: 700;
1189
+ text-overflow: ellipsis;
1190
+ white-space: nowrap;
1191
+ }
1192
+
1193
+ .flag-section-nav {
1194
+ display: flex;
1195
+ gap: 0.25rem;
1196
+ overflow-x: auto;
1197
+ border-bottom: 1px solid var(--line);
1198
+ }
1199
+
1200
+ .flag-section-nav a {
1201
+ display: inline-flex;
1202
+ min-height: 48px;
1203
+ flex-shrink: 0;
1204
+ gap: 0.45rem;
1205
+ align-items: center;
1206
+ padding-inline: 0.8rem;
1207
+ border-bottom: 2px solid transparent;
1208
+ color: var(--muted);
1209
+ font-size: 0.9rem;
1210
+ font-weight: 700;
1211
+ text-decoration: none;
1212
+ }
1213
+
1214
+ .flag-section-nav a:hover {
1215
+ border-bottom-color: var(--atlas-blue);
1216
+ color: var(--ink);
1217
+ }
1218
+
1219
+ .flag-section-nav a span {
1220
+ display: grid;
1221
+ min-width: 24px;
1222
+ min-height: 24px;
1223
+ padding-inline: 0.3rem;
1224
+ border-radius: 4px;
1225
+ color: var(--atlas-blue-deep);
1226
+ background: var(--atlas-wash);
1227
+ font-size: 0.72rem;
1228
+ place-items: center;
1229
+ }
1230
+
1231
+ .flag-editor {
1232
+ display: grid;
1233
+ min-width: 0;
1234
+ gap: 1rem;
1235
+ margin: 0;
1236
+ padding: 0;
1237
+ border: 0;
1238
+ font-size: 0.95rem;
1239
+ }
1240
+
1241
+ .visually-hidden {
1242
+ position: absolute;
1243
+ width: 1px;
1244
+ height: 1px;
1245
+ padding: 0;
1246
+ margin: -1px;
1247
+ overflow: hidden;
1248
+ clip: rect(0, 0, 0, 0);
1249
+ white-space: nowrap;
1250
+ border: 0;
1251
+ }
1252
+
1253
+ .flag-section {
1254
+ min-width: 0;
1255
+ scroll-margin-top: 1rem;
1256
+ }
1257
+
1258
+ .flag-section.panel {
1259
+ padding: 18px;
1260
+ border-radius: 4px;
1261
+ background: var(--surface);
1262
+ box-shadow: none;
1263
+ }
1264
+
1265
+ .flag-section-heading {
1266
+ display: flex;
1267
+ align-items: flex-start;
1268
+ justify-content: space-between;
1269
+ gap: 1rem;
1270
+ margin-bottom: 0.85rem;
1271
+ }
1272
+
1273
+ .flag-section-heading .eyebrow {
1274
+ display: none;
1275
+ }
1276
+
1277
+ .flag-section-heading h2 {
1278
+ margin: 0;
1279
+ color: var(--ink);
1280
+ font-family: inherit;
1281
+ font-size: 1.2rem;
1282
+ font-weight: 650;
1283
+ letter-spacing: normal;
1284
+ }
1285
+
1286
+ .flag-section-heading .helper-text {
1287
+ max-width: 70ch;
1288
+ margin-top: 0.45rem;
1289
+ font-size: 0.88rem;
1290
+ line-height: 1.45;
1291
+ }
1292
+
1293
+ .flag-section-note {
1294
+ padding-top: 0.5rem;
1295
+ color: var(--muted);
1296
+ font-size: 0.78rem;
1297
+ }
1298
+
1299
+ .flag-section-tools {
1300
+ display: flex;
1301
+ flex-shrink: 0;
1302
+ gap: 0.55rem;
1303
+ align-items: center;
1304
+ }
1305
+
1306
+ .flag-section .field-group label {
1307
+ color: var(--ink-soft);
1308
+ font-size: 0.82rem;
1309
+ font-weight: 700;
1310
+ }
1311
+
1312
+ .flag-section input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
1313
+ .flag-section select,
1314
+ .flag-section textarea {
1315
+ min-height: 48px;
1316
+ border-radius: 4px;
1317
+ background-color: var(--surface);
1318
+ font-size: 0.95rem;
1319
+ }
1320
+
1321
+ .flag-section input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):hover,
1322
+ .flag-section select:hover,
1323
+ .flag-section textarea:hover,
1324
+ .flag-section input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):focus,
1325
+ .flag-section select:focus,
1326
+ .flag-section textarea:focus {
1327
+ border-color: var(--atlas-blue);
1328
+ box-shadow: 0 0 0 2px rgba(19, 132, 95, 0.12);
1329
+ }
1330
+
1331
+ .flag-section select {
1332
+ appearance: auto;
1333
+ background-image: none;
1334
+ }
1335
+
1336
+ .flag-details-grid {
1337
+ display: grid;
1338
+ grid-template-columns: minmax(150px, 0.34fr) minmax(0, 1fr);
1339
+ gap: 0 1rem;
1340
+ }
1341
+
1342
+ .flag-key-field {
1343
+ display: grid;
1344
+ align-content: start;
1345
+ gap: 0.55rem;
1346
+ min-width: 0;
1347
+ }
1348
+
1349
+ .flag-key-field > span {
1350
+ color: var(--ink-soft);
1351
+ font-size: 0.69rem;
1352
+ font-weight: 700;
1353
+ letter-spacing: 0.05em;
1354
+ text-transform: uppercase;
1355
+ }
1356
+
1357
+ .flag-key-field code {
1358
+ min-height: 44px;
1359
+ padding: 0.75rem 0.85rem;
1360
+ border: 1px solid var(--line-soft);
1361
+ border-radius: 4px;
1362
+ background: #f7f9f8;
1363
+ font-size: 0.8rem;
1364
+ }
1365
+
1366
+ .flag-description-field {
1367
+ margin: 0;
1368
+ }
1369
+
1370
+ .flag-details-grid .toggle-row {
1371
+ grid-column: 1 / -1;
1372
+ margin: 0.9rem 0 0;
1373
+ }
1374
+
1375
+ .toggle-row input:focus-visible + .toggle-control {
1376
+ outline: 3px solid rgba(201, 81, 66, 0.38);
1377
+ outline-offset: 3px;
1378
+ }
1379
+
1380
+ .variation-list,
1381
+ .segment-list {
1382
+ display: grid;
1383
+ gap: 0.85rem;
1384
+ }
1385
+
1386
+ .variation-row {
1387
+ display: grid;
1388
+ grid-template-columns: minmax(125px, 0.25fr) minmax(0, 1fr) auto 36px;
1389
+ gap: 0.8rem;
1390
+ align-items: end;
1391
+ min-width: 0;
1392
+ padding: 0.8rem;
1393
+ border: 1px solid var(--line-soft);
1394
+ border-radius: 4px;
1395
+ background: var(--surface);
1396
+ }
1397
+
1398
+ .variation-row .field-group {
1399
+ min-width: 0;
1400
+ margin: 0;
1401
+ }
1402
+
1403
+ .variation-row .field-group label {
1404
+ color: var(--muted);
1405
+ font-size: 0.82rem;
1406
+ }
1407
+
1408
+ .default-variation {
1409
+ display: inline-flex;
1410
+ min-height: 48px;
1411
+ gap: 0.45rem;
1412
+ align-items: center;
1413
+ padding-inline: 0.4rem;
1414
+ color: var(--muted);
1415
+ font-size: 0.78rem;
1416
+ font-weight: 700;
1417
+ white-space: nowrap;
1418
+ }
1419
+
1420
+ .default-variation input {
1421
+ width: 1rem;
1422
+ height: 1rem;
1423
+ margin: 0;
1424
+ accent-color: var(--atlas-blue);
1425
+ }
1426
+
1427
+ .variation-row .icon-button {
1428
+ width: 44px;
1429
+ height: 48px;
1430
+ }
1431
+
1432
+ .context-note {
1433
+ display: flex;
1434
+ gap: 0.7rem;
1435
+ align-items: flex-start;
1436
+ margin-bottom: 1rem;
1437
+ padding: 0.85rem 1rem;
1438
+ border: 1px solid var(--line);
1439
+ border-left: 3px solid var(--atlas-blue);
1440
+ border-radius: 4px;
1441
+ color: var(--ink-soft);
1442
+ background: #f7f9f8;
1443
+ }
1444
+
1445
+ .context-note > span {
1446
+ display: grid;
1447
+ width: 1.35rem;
1448
+ height: 1.35rem;
1449
+ flex: 0 0 auto;
1450
+ border: 0;
1451
+ border-radius: 0;
1452
+ font-family: inherit;
1453
+ font-size: 0.9rem;
1454
+ font-weight: 700;
1455
+ place-items: center;
1456
+ }
1457
+
1458
+ .context-note p {
1459
+ margin: 0;
1460
+ font-size: 0.85rem;
1461
+ line-height: 1.5;
1462
+ }
1463
+
1464
+ .segment-empty-state {
1465
+ display: flex;
1466
+ gap: 1rem;
1467
+ align-items: center;
1468
+ padding: 1.15rem;
1469
+ border: 1px dashed rgba(24, 48, 71, 0.25);
1470
+ border-radius: 4px;
1471
+ background: #fafbfa;
1472
+ }
1473
+
1474
+ .segment-empty-state__step {
1475
+ display: grid;
1476
+ min-width: 74px;
1477
+ min-height: 48px;
1478
+ border-radius: 4px;
1479
+ color: var(--atlas-blue-deep);
1480
+ background: var(--atlas-wash);
1481
+ font-size: 0.7rem;
1482
+ font-weight: 800;
1483
+ letter-spacing: 0.08em;
1484
+ place-items: center;
1485
+ }
1486
+
1487
+ .segment-empty-state strong {
1488
+ color: var(--ink);
1489
+ font-size: 0.95rem;
1490
+ }
1491
+
1492
+ .segment-empty-state p {
1493
+ margin: 0.25rem 0 0;
1494
+ color: var(--muted);
1495
+ font-size: 0.82rem;
1496
+ }
1497
+
1498
+ .segment-card {
1499
+ display: grid;
1500
+ min-width: 0;
1501
+ gap: 1rem;
1502
+ padding: 14px;
1503
+ border: 1px solid var(--line);
1504
+ border-radius: 4px;
1505
+ background: var(--surface);
1506
+ }
1507
+
1508
+ .segment-card__header,
1509
+ .segment-card__identity,
1510
+ .segment-card__actions {
1511
+ display: flex;
1512
+ align-items: center;
1513
+ }
1514
+
1515
+ .segment-card__header {
1516
+ justify-content: space-between;
1517
+ gap: 1rem;
1518
+ }
1519
+
1520
+ .segment-card__identity {
1521
+ min-width: 0;
1522
+ gap: 0.8rem;
1523
+ }
1524
+
1525
+ .segment-priority {
1526
+ display: grid;
1527
+ width: 1.8rem;
1528
+ height: 1.8rem;
1529
+ flex: 0 0 auto;
1530
+ border-radius: 4px;
1531
+ color: var(--atlas-blue-deep);
1532
+ background: var(--atlas-wash);
1533
+ font-size: 0.82rem;
1534
+ font-weight: 800;
1535
+ place-items: center;
1536
+ }
1537
+
1538
+ .segment-card__identity h3 {
1539
+ margin: 0;
1540
+ color: var(--ink);
1541
+ font-size: 1rem;
1542
+ }
1543
+
1544
+ .segment-card__identity p {
1545
+ margin: 0.2rem 0 0;
1546
+ color: var(--muted);
1547
+ font-size: 0.8rem;
1548
+ }
1549
+
1550
+ .segment-card__actions {
1551
+ gap: 0.35rem;
1552
+ }
1553
+
1554
+ .segment-card__actions .icon-button {
1555
+ width: 40px;
1556
+ height: 40px;
1557
+ border-color: var(--line-soft);
1558
+ background: var(--surface);
1559
+ font-size: 0.9rem;
1560
+ }
1561
+
1562
+ .segment-card__actions .segment-remove-button {
1563
+ margin-inline-start: 0.35rem;
1564
+ color: var(--atlas-red-dark);
1565
+ }
1566
+
1567
+ .segment-card__actions .icon-button:disabled {
1568
+ opacity: 0.35;
1569
+ }
1570
+
1571
+ .segment-stage {
1572
+ min-width: 0;
1573
+ margin: 0;
1574
+ padding: 0.85rem;
1575
+ border: 1px solid var(--line-soft);
1576
+ border-radius: 4px;
1577
+ background: var(--surface);
1578
+ }
1579
+
1580
+ .segment-stage legend {
1581
+ padding-inline: 0.4rem;
1582
+ color: var(--ink);
1583
+ font-size: 0.9rem;
1584
+ font-weight: 650;
1585
+ }
1586
+
1587
+ .segment-stage legend span {
1588
+ margin-inline-end: 0.45rem;
1589
+ color: var(--atlas-red-dark);
1590
+ font-size: 0.68rem;
1591
+ letter-spacing: 0.1em;
1592
+ }
1593
+
1594
+ .segment-stage legend small {
1595
+ margin-inline-start: 0.4rem;
1596
+ color: var(--muted);
1597
+ font-size: 0.72rem;
1598
+ font-weight: 500;
1599
+ }
1600
+
1601
+ .segment-all-visitors {
1602
+ margin: 0 0 0.7rem;
1603
+ color: var(--ink-soft);
1604
+ font-size: 0.84rem;
1605
+ }
1606
+
1607
+ .condition-list {
1608
+ display: grid;
1609
+ gap: 1.05rem;
1610
+ }
1611
+
1612
+ .condition-row {
1613
+ position: relative;
1614
+ display: grid;
1615
+ grid-template-columns: minmax(150px, 1.05fr) minmax(130px, 0.85fr) minmax(180px, 1.45fr) 44px;
1616
+ gap: 0.75rem;
1617
+ align-items: end;
1618
+ min-width: 0;
1619
+ }
1620
+
1621
+ .condition-row + .condition-row::before {
1622
+ position: absolute;
1623
+ top: -0.9rem;
1624
+ left: 0.6rem;
1625
+ padding-inline: 0.3rem;
1626
+ color: var(--muted);
1627
+ background: var(--surface);
1628
+ content: "AND";
1629
+ font-size: 0.64rem;
1630
+ font-weight: 800;
1631
+ letter-spacing: 0.08em;
1632
+ }
1633
+
1634
+ .condition-row .field-group {
1635
+ min-width: 0;
1636
+ margin: 0;
1637
+ }
1638
+
1639
+ .condition-row .field-group label {
1640
+ color: var(--muted);
1641
+ font-size: 0.78rem;
1642
+ }
1643
+
1644
+ .condition-row .field-group small {
1645
+ display: block;
1646
+ margin-top: 0.3rem;
1647
+ color: var(--muted);
1648
+ font-size: 0.74rem;
1649
+ line-height: 1.4;
1650
+ }
1651
+
1652
+ .condition-remove-button {
1653
+ width: 44px;
1654
+ height: 48px;
1655
+ color: var(--atlas-red-dark);
1656
+ border-radius: 4px;
1657
+ }
1658
+
1659
+ .condition-add-button {
1660
+ min-height: 44px;
1661
+ margin-top: 0.75rem;
1662
+ font-size: 0.82rem;
1663
+ }
1664
+
1665
+ .segment-outcome-grid {
1666
+ display: grid;
1667
+ grid-template-columns: minmax(0, 1.2fr) minmax(240px, 0.8fr);
1668
+ gap: 0.85rem;
1669
+ align-items: stretch;
1670
+ }
1671
+
1672
+ .rollout-toggle {
1673
+ display: flex;
1674
+ min-height: 44px;
1675
+ gap: 0.65rem;
1676
+ align-items: center;
1677
+ color: var(--ink);
1678
+ font-size: 0.86rem;
1679
+ font-weight: 700;
1680
+ }
1681
+
1682
+ .rollout-toggle input {
1683
+ width: 1.15rem;
1684
+ height: 1.15rem;
1685
+ margin: 0;
1686
+ accent-color: var(--atlas-blue);
1687
+ }
1688
+
1689
+ .rollout-controls {
1690
+ display: grid;
1691
+ grid-template-columns: minmax(110px, 0.7fr) minmax(210px, 1.3fr);
1692
+ gap: 0 1rem;
1693
+ align-items: center;
1694
+ padding-top: 0.55rem;
1695
+ }
1696
+
1697
+ .rollout-slider {
1698
+ width: 100%;
1699
+ margin: 0;
1700
+ accent-color: var(--atlas-blue);
1701
+ }
1702
+
1703
+ .rollout-number-field {
1704
+ min-width: 0;
1705
+ margin: 0;
1706
+ }
1707
+
1708
+ .rollout-number-input {
1709
+ position: relative;
1710
+ }
1711
+
1712
+ .rollout-number-input input {
1713
+ padding-inline-end: 2rem;
1714
+ }
1715
+
1716
+ .rollout-number-input span {
1717
+ position: absolute;
1718
+ top: 50%;
1719
+ right: 0.8rem;
1720
+ color: var(--muted);
1721
+ transform: translateY(-50%);
1722
+ }
1723
+
1724
+ .rollout-help {
1725
+ grid-column: 1 / -1;
1726
+ margin: 0.65rem 0 0;
1727
+ color: var(--muted);
1728
+ font-size: 0.76rem;
1729
+ line-height: 1.5;
1730
+ }
1731
+
1732
+ .segment-serve {
1733
+ display: grid;
1734
+ align-content: start;
1735
+ gap: 0.6rem;
1736
+ }
1737
+
1738
+ .segment-serve > label {
1739
+ color: var(--ink-soft);
1740
+ font-size: 0.8rem;
1741
+ font-weight: 800;
1742
+ letter-spacing: normal;
1743
+ }
1744
+
1745
+ .segment-serve select {
1746
+ align-self: start;
1747
+ }
1748
+
1749
+ .rule-fallback {
1750
+ display: flex;
1751
+ gap: 0.7rem;
1752
+ align-items: center;
1753
+ margin-top: 0.85rem;
1754
+ padding: 0.9rem 1rem;
1755
+ border-left: 3px solid var(--atlas-blue);
1756
+ border-radius: 0 4px 4px 0;
1757
+ background: #f7f9f8;
1758
+ }
1759
+
1760
+ .rule-fallback__marker {
1761
+ color: var(--atlas-blue-deep);
1762
+ font-size: 1rem;
1763
+ }
1764
+
1765
+ .rule-fallback > div {
1766
+ display: grid;
1767
+ gap: 0.15rem;
1768
+ flex-shrink: 0;
1769
+ }
1770
+
1771
+ .rule-fallback > div span {
1772
+ color: var(--muted);
1773
+ font-size: 0.72rem;
1774
+ font-weight: 700;
1775
+ letter-spacing: 0.08em;
1776
+ text-transform: uppercase;
1777
+ }
1778
+
1779
+ .rule-fallback > div strong {
1780
+ color: var(--ink);
1781
+ font-size: 0.9rem;
1782
+ }
1783
+
1784
+ .rule-fallback p {
1785
+ margin: 0 0 0 auto;
1786
+ color: var(--muted);
1787
+ font-size: 0.82rem;
1788
+ text-align: end;
1789
+ }
1790
+
1791
+ .flag-section .empty-state {
1792
+ display: grid;
1793
+ gap: 0.3rem;
1794
+ padding: 1.2rem;
1795
+ font-size: 0.82rem;
1796
+ }
1797
+
1798
+ .flag-section .empty-state strong {
1799
+ color: var(--ink);
1800
+ font-size: 0.92rem;
1801
+ }
1802
+
1803
+ .flag-section .empty-state span {
1804
+ color: var(--muted);
1805
+ }
1806
+
1807
+ .flag-action-bar {
1808
+ position: static;
1809
+ z-index: 2;
1810
+ display: flex;
1811
+ align-items: center;
1812
+ justify-content: space-between;
1813
+ gap: 1rem;
1814
+ padding: 0.65rem 0.8rem;
1815
+ border: 1px solid var(--line);
1816
+ border-radius: 4px;
1817
+ background: rgba(255, 255, 255, 0.98);
1818
+ box-shadow: none;
1819
+ }
1820
+
1821
+ .flag-action-bar .status {
1822
+ margin: 0;
1823
+ font-size: 0.85rem;
1824
+ }
1825
+
1826
+ .flag-manager .button {
1827
+ border-radius: 4px;
1828
+ font-family: inherit;
1829
+ font-size: 0.88rem;
1830
+ font-weight: 600;
1831
+ letter-spacing: normal;
1832
+ }
1833
+
1834
+ .flag-manager .button--dark,
1835
+ .flag-manager .button--primary {
1836
+ color: #fff;
1837
+ border-color: #117b57;
1838
+ background: #13845f;
1839
+ }
1840
+
1841
+ .flag-manager .button--dark:not(:disabled):hover,
1842
+ .flag-manager .button--primary:not(:disabled):hover {
1843
+ background: #0e704f;
1844
+ }
1845
+
1846
+ .flag-manager .button--quiet {
1847
+ color: var(--ink-soft);
1848
+ border-color: var(--line);
1849
+ background: var(--surface);
1850
+ }
1851
+
1852
+ .flag-manager .button:disabled {
1853
+ color: var(--muted-light);
1854
+ border-color: var(--line-soft);
1855
+ background: #edf0ee;
1856
+ opacity: 1;
1857
+ }
1858
+
1859
+ .flag-manager .button--small {
1860
+ min-height: 44px;
1861
+ padding-inline: 0.8rem;
1862
+ color: var(--atlas-blue-deep);
1863
+ border-color: #bdd8ca;
1864
+ background: var(--atlas-wash);
1865
+ }
1866
+
1867
+ .flag-manager :focus-visible {
1868
+ outline: 2px solid var(--atlas-blue);
1869
+ outline-offset: 2px;
1870
+ }
1871
+
1872
+ .flag-action-buttons {
1873
+ display: flex;
1874
+ flex-shrink: 0;
1875
+ gap: 0.45rem;
1876
+ }
1877
+
1878
+ @media (max-width: 900px) {
1879
+ .flag-summary-strip {
1880
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1881
+ }
1882
+
1883
+ .flag-summary-strip > div:nth-child(3) {
1884
+ border-inline-start: 0;
1885
+ }
1886
+
1887
+ .flag-summary-strip > div:nth-child(n + 3) {
1888
+ border-top: 1px solid var(--line-soft);
1889
+ }
1890
+
1891
+ .condition-row {
1892
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 44px;
1893
+ }
1894
+
1895
+ .condition-value-field {
1896
+ grid-column: 1 / 3;
1897
+ }
1898
+
1899
+ .condition-remove-button {
1900
+ grid-column: 3;
1901
+ grid-row: 1;
1902
+ }
1903
+
1904
+ .segment-outcome-grid {
1905
+ grid-template-columns: minmax(0, 1fr);
1906
+ }
1907
+ }
1908
+
1909
+ @media (max-width: 620px) {
1910
+ .main-content.main-content--settings {
1911
+ padding-top: 36px;
1912
+ }
1913
+
1914
+ .flag-manager-header {
1915
+ align-items: flex-start;
1916
+ flex-direction: column;
1917
+ gap: 0.85rem;
1918
+ }
1919
+
1920
+ .flag-state-list {
1921
+ justify-content: flex-start;
1922
+ }
1923
+
1924
+ .flag-summary-strip > div {
1925
+ padding: 0.7rem;
1926
+ }
1927
+
1928
+ .flag-summary-strip dd {
1929
+ font-size: 0.61rem;
1930
+ }
1931
+
1932
+ .flag-section-nav {
1933
+ gap: 1rem;
1934
+ }
1935
+
1936
+ .flag-section.panel {
1937
+ padding: 18px;
1938
+ }
1939
+
1940
+ .flag-section-heading {
1941
+ align-items: flex-start;
1942
+ flex-direction: column;
1943
+ }
1944
+
1945
+ .flag-section-tools {
1946
+ width: 100%;
1947
+ justify-content: space-between;
1948
+ }
1949
+
1950
+ .flag-details-grid {
1951
+ grid-template-columns: 1fr;
1952
+ gap: 0.85rem;
1953
+ }
1954
+
1955
+ .variation-row {
1956
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 36px;
1957
+ }
1958
+
1959
+ .variation-key-field {
1960
+ grid-column: 1 / 2;
1961
+ }
1962
+
1963
+ .variation-url-field {
1964
+ grid-column: 1 / -1;
1965
+ }
1966
+
1967
+ .variation-row .default-variation {
1968
+ grid-column: 2 / 3;
1969
+ }
1970
+
1971
+ .variation-row .icon-button {
1972
+ grid-column: 3;
1973
+ grid-row: 1;
1974
+ }
1975
+
1976
+ .segment-card {
1977
+ padding: 14px;
1978
+ }
1979
+
1980
+ .segment-card__header {
1981
+ align-items: flex-start;
1982
+ }
1983
+
1984
+ .segment-card__actions {
1985
+ gap: 0.2rem;
1986
+ }
1987
+
1988
+ .segment-card__actions .icon-button {
1989
+ width: 38px;
1990
+ height: 42px;
1991
+ }
1992
+
1993
+ .condition-row {
1994
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 44px;
1995
+ gap: 0.65rem;
1996
+ }
1997
+
1998
+ .condition-value-field {
1999
+ grid-column: 1 / 3;
2000
+ grid-row: 2;
2001
+ }
2002
+
2003
+ .condition-remove-button {
2004
+ grid-column: 3;
2005
+ grid-row: 1;
2006
+ }
2007
+
2008
+ .rollout-controls {
2009
+ grid-template-columns: minmax(0, 1fr);
2010
+ gap: 0.75rem;
2011
+ }
2012
+
2013
+ .rule-fallback {
2014
+ align-items: flex-start;
2015
+ flex-wrap: wrap;
2016
+ }
2017
+
2018
+ .rule-fallback p {
2019
+ width: 100%;
2020
+ margin: 0;
2021
+ text-align: start;
2022
+ }
2023
+
2024
+ .flag-action-bar {
2025
+ align-items: stretch;
2026
+ flex-direction: column;
2027
+ }
2028
+
2029
+ .flag-action-buttons {
2030
+ width: 100%;
2031
+ }
2032
+
2033
+ .flag-action-buttons .button {
2034
+ flex: 1;
2035
+ padding-inline: 0.45rem;
2036
+ min-height: 48px;
2037
+ }
2038
+ }
2039
+
2040
+ /* Shared layout for the short-link and flag pages. */
2041
+ .main-content,
2042
+ .main-content.main-content--settings {
2043
+ padding: 28px 0 20px;
2044
+ }
2045
+
2046
+ .shorten-page {
2047
+ display: grid;
2048
+ max-width: 600px;
2049
+ gap: 1rem;
2050
+ margin: 0 auto;
2051
+ }
2052
+
2053
+ .page-heading {
2054
+ display: flex;
2055
+ align-items: flex-start;
2056
+ justify-content: space-between;
2057
+ gap: 1rem;
2058
+ }
2059
+
2060
+ .page-heading h1 {
2061
+ margin: 0;
2062
+ color: var(--ink);
2063
+ font-family: inherit;
2064
+ font-size: 1.55rem;
2065
+ font-weight: 650;
2066
+ letter-spacing: normal;
2067
+ line-height: 1.25;
2068
+ }
2069
+
2070
+ .page-heading p {
2071
+ margin: 0.35rem 0 0;
2072
+ color: var(--muted);
2073
+ font-size: 0.9rem;
2074
+ line-height: 1.45;
2075
+ }
2076
+
2077
+ .page-link {
2078
+ flex-shrink: 0;
2079
+ padding-top: 0.3rem;
2080
+ color: #116b4d;
2081
+ font-size: 0.9rem;
2082
+ font-weight: 600;
2083
+ text-decoration: none;
2084
+ }
2085
+
2086
+ .page-link:hover,
2087
+ .app-footer a:hover {
2088
+ text-decoration: underline;
2089
+ }
2090
+
2091
+ .shorten-page .field-group {
2092
+ min-width: 0;
2093
+ gap: 0.4rem;
2094
+ margin: 0;
2095
+ }
2096
+
2097
+ .shorten-page .field-group label {
2098
+ color: var(--ink);
2099
+ font-size: 0.86rem;
2100
+ font-weight: 600;
2101
+ letter-spacing: normal;
2102
+ text-transform: none;
2103
+ }
2104
+
2105
+ .shorten-page input {
2106
+ min-height: 42px;
2107
+ border: 1px solid var(--line);
2108
+ border-radius: 4px;
2109
+ color: var(--ink);
2110
+ background: #fff;
2111
+ box-shadow: none;
2112
+ }
2113
+
2114
+ .shorten-page input:hover,
2115
+ .shorten-page input:focus {
2116
+ border-color: #13845f;
2117
+ background: #fff;
2118
+ box-shadow: none;
2119
+ }
2120
+
2121
+ .slug-input input:hover,
2122
+ .slug-input input:focus {
2123
+ border: 0;
2124
+ background: #fff;
2125
+ box-shadow: none;
2126
+ }
2127
+
2128
+ .field-help {
2129
+ margin: 0;
2130
+ color: var(--muted);
2131
+ font-size: 0.78rem;
2132
+ line-height: 1.45;
2133
+ }
2134
+
2135
+ .shorten-form__actions {
2136
+ display: flex;
2137
+ flex-direction: column;
2138
+ gap: 1rem;
2139
+ }
2140
+
2141
+ .shorten-form__actions > .button {
2142
+ align-self: flex-end;
2143
+ }
2144
+
2145
+ .shorten-page .button {
2146
+ min-height: 42px;
2147
+ border-radius: 4px;
2148
+ padding: 0.55rem 0.9rem;
2149
+ font-family: inherit;
2150
+ font-size: 0.9rem;
2151
+ font-weight: 600;
2152
+ letter-spacing: normal;
2153
+ text-transform: none;
2154
+ box-shadow: none;
2155
+ }
2156
+
2157
+ .shorten-page .button:not(:disabled):hover {
2158
+ transform: none;
2159
+ box-shadow: none;
2160
+ }
2161
+
2162
+ .shorten-page .button--wide {
2163
+ width: auto;
2164
+ min-width: 126px;
2165
+ }
2166
+
2167
+ .shorten-page .button--primary {
2168
+ color: #fff;
2169
+ background: #13845f;
2170
+ }
2171
+
2172
+ .shorten-page .button--primary:not(:disabled):hover {
2173
+ background: #116b4d;
2174
+ }
2175
+
2176
+ .shorten-page .status {
2177
+ margin: 0;
2178
+ font-size: 0.86rem;
2179
+ }
2180
+
2181
+ .app-footer {
2182
+ max-width: 600px;
2183
+ margin: 22px auto 0;
2184
+ padding: 22px 0 8px;
2185
+ color: var(--muted);
2186
+ text-align: center;
2187
+ }
2188
+
2189
+ .app-footer nav {
2190
+ display: flex;
2191
+ flex-wrap: wrap;
2192
+ justify-content: center;
2193
+ gap: 20px;
2194
+ margin-bottom: 10px;
2195
+ }
2196
+
2197
+ .app-footer a {
2198
+ color: inherit;
2199
+ font-size: 0.88rem;
2200
+ text-decoration: none;
2201
+ }
2202
+
2203
+ .app-footer p {
2204
+ margin: 0;
2205
+ font-size: 0.8rem;
2206
+ line-height: 1.5;
2207
+ }
2208
+
2209
+ .app-footer p a {
2210
+ text-decoration: underline;
2211
+ }
2212
+
2213
+ .main-content--settings .app-footer {
2214
+ max-width: none;
2215
+ }
2216
+
2217
+ @media (max-width: 620px) {
2218
+ .app-shell {
2219
+ width: min(100% - 28px, 600px);
2220
+ }
2221
+
2222
+ .main-content,
2223
+ .main-content.main-content--settings {
2224
+ padding-top: 22px;
2225
+ }
2226
+
2227
+ .page-heading {
2228
+ align-items: flex-start;
2229
+ flex-direction: column;
2230
+ gap: 0.35rem;
2231
+ }
2232
+
2233
+ .shorten-page .button--wide {
2234
+ width: 100%;
2235
+ }
2236
+
2237
+ .result-card {
2238
+ align-items: flex-start;
2239
+ flex-direction: column;
2240
+ }
2241
+
2242
+ .result-url {
2243
+ max-width: calc(100vw - 64px);
2244
+ }
2245
+
2246
+ .result-actions {
2247
+ width: 100%;
2248
+ }
2249
+
2250
+ .result-actions .button {
2251
+ flex: 1;
2252
+ }
2253
+ }