relmio 0.3.0 → 0.3.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/ui/styles.css CHANGED
@@ -28,8 +28,8 @@
28
28
  0 12px 36px -14px rgb(13 27 24 / 18%);
29
29
  --radius-sm: 0.5rem;
30
30
  --radius: 0.875rem;
31
- --radius-lg: 1.25rem;
32
- --header-height: 3.75rem;
31
+ --radius-lg: 1rem;
32
+ --header-height: 3.25rem;
33
33
  }
34
34
 
35
35
  :root[data-theme="dark"] {
@@ -102,8 +102,13 @@ html {
102
102
  }
103
103
 
104
104
  body {
105
+ display: flex;
106
+ flex-direction: column;
105
107
  min-width: 20rem;
108
+ height: 100vh;
109
+ height: 100svh;
106
110
  margin: 0;
111
+ overflow: hidden;
107
112
  line-height: 1.5;
108
113
  -webkit-font-smoothing: antialiased;
109
114
  }
@@ -126,7 +131,8 @@ select {
126
131
  button:focus-visible,
127
132
  input:focus-visible,
128
133
  select:focus-visible,
129
- a:focus-visible {
134
+ a:focus-visible,
135
+ summary:focus-visible {
130
136
  outline: 3px solid #f2a94a;
131
137
  outline-offset: 2px;
132
138
  }
@@ -152,21 +158,30 @@ a:focus-visible {
152
158
  transform: translateY(0);
153
159
  }
154
160
 
161
+ .visually-hidden {
162
+ position: absolute;
163
+ width: 1px;
164
+ height: 1px;
165
+ padding: 0;
166
+ margin: -1px;
167
+ overflow: hidden;
168
+ clip: rect(0 0 0 0);
169
+ white-space: nowrap;
170
+ border: 0;
171
+ }
172
+
155
173
  /* ---------- Header ---------- */
156
174
 
157
175
  .site-header {
158
- position: sticky;
159
- top: 0;
160
- z-index: 20;
176
+ flex: none;
161
177
  display: flex;
162
178
  align-items: center;
163
179
  justify-content: space-between;
180
+ gap: 0.75rem;
164
181
  min-height: var(--header-height);
165
- padding: 0.5rem clamp(1rem, 4vw, 3rem);
166
- border-bottom: 1px solid rgb(221 227 223 / 75%);
167
- background: color-mix(in srgb, var(--background) 82%, transparent);
168
- backdrop-filter: blur(14px) saturate(1.4);
169
- -webkit-backdrop-filter: blur(14px) saturate(1.4);
182
+ padding: 0.375rem clamp(1rem, 3vw, 2rem);
183
+ border-bottom: 1px solid var(--border);
184
+ background: var(--background);
170
185
  }
171
186
 
172
187
  .brand {
@@ -184,9 +199,6 @@ a:focus-visible {
184
199
  height: 1.75rem;
185
200
  flex: none;
186
201
  border-radius: 0.4375rem;
187
- transition:
188
- background 180ms var(--ease),
189
- box-shadow 180ms var(--ease);
190
202
  }
191
203
 
192
204
  .header-actions {
@@ -266,18 +278,6 @@ a:focus-visible {
266
278
  outline-offset: 2px;
267
279
  }
268
280
 
269
- .visually-hidden {
270
- position: absolute;
271
- width: 1px;
272
- height: 1px;
273
- padding: 0;
274
- margin: -1px;
275
- overflow: hidden;
276
- clip: rect(0 0 0 0);
277
- white-space: nowrap;
278
- border: 0;
279
- }
280
-
281
281
  .local-badge {
282
282
  display: inline-flex;
283
283
  align-items: center;
@@ -300,34 +300,22 @@ a:focus-visible {
300
300
  content: "";
301
301
  }
302
302
 
303
- /* ---------- Shell & intro ---------- */
303
+ /* ---------- App shell ---------- */
304
304
 
305
305
  .shell {
306
- width: min(100% - 2rem, 62rem);
306
+ flex: 1 1 auto;
307
+ min-height: 0;
308
+ display: grid;
309
+ grid-template-columns: minmax(17.5rem, 21rem) minmax(0, 1fr);
310
+ grid-template-rows: minmax(0, 1fr);
311
+ gap: clamp(1rem, 2vw, 1.5rem);
312
+ width: min(100% - 2.5rem, 76rem);
307
313
  margin: 0 auto;
308
- padding: 1.75rem 0 3.5rem;
309
- }
310
-
311
- .intro {
312
- max-width: 44rem;
314
+ padding: clamp(0.75rem, 1.6vh, 1.25rem) 0;
313
315
  }
314
316
 
315
- body:not([data-current-step="1"]) .intro {
316
- display: none;
317
- }
318
-
319
- body:not([data-current-step="1"]) .shell {
320
- padding-top: 1rem;
321
- }
322
-
323
- .eyebrow,
324
- .step-kicker {
325
- margin: 0 0 0.5rem;
326
- color: var(--accent);
327
- font-size: 0.75rem;
328
- font-weight: 800;
329
- letter-spacing: 0.09em;
330
- text-transform: uppercase;
317
+ .shell:focus {
318
+ outline: none;
331
319
  }
332
320
 
333
321
  h1,
@@ -337,80 +325,165 @@ p {
337
325
  margin-top: 0;
338
326
  }
339
327
 
340
- h1 {
341
- max-width: 42rem;
342
- margin-bottom: 0.75rem;
343
- font-size: clamp(1.9rem, 5vw, 3rem);
344
- line-height: 1.04;
345
- letter-spacing: -0.045em;
328
+ h3 {
329
+ margin-bottom: 0.625rem;
330
+ font-size: 1rem;
331
+ }
332
+
333
+ /* ---------- Rail: progress & safety context ---------- */
334
+
335
+ .rail {
336
+ display: flex;
337
+ flex-direction: column;
338
+ gap: 0.875rem;
339
+ min-height: 0;
340
+ overflow-y: auto;
346
341
  }
347
342
 
348
- h2 {
343
+ .intro h1 {
349
344
  margin-bottom: 0.5rem;
350
- font-size: clamp(1.45rem, 4vw, 1.9rem);
351
- line-height: 1.2;
352
- letter-spacing: -0.025em;
345
+ font-size: clamp(1.375rem, 1.125rem + 0.9vw, 1.625rem);
346
+ line-height: 1.14;
347
+ letter-spacing: -0.03em;
353
348
  }
354
349
 
355
- h3 {
356
- margin-bottom: 0.75rem;
357
- font-size: 1rem;
350
+ .lede {
351
+ margin-bottom: 0;
352
+ color: var(--text-muted);
353
+ font-size: 0.875rem;
358
354
  }
359
355
 
360
- .lede,
361
- .panel-heading p {
356
+ .steps {
357
+ padding-top: 0.875rem;
358
+ border-top: 1px solid var(--border);
359
+ }
360
+
361
+ .steps ol {
362
+ display: flex;
363
+ flex-direction: column;
364
+ margin: 0;
365
+ padding: 0.125rem 0;
366
+ list-style: none;
367
+ }
368
+
369
+ .steps li {
370
+ position: relative;
371
+ display: grid;
372
+ grid-template-columns: 1.75rem minmax(0, 1fr);
373
+ align-items: center;
374
+ gap: 0.625rem;
375
+ padding: 0.3125rem 0;
362
376
  color: var(--text-muted);
377
+ font-size: 0.8125rem;
363
378
  }
364
379
 
365
- .lede {
366
- max-width: 42rem;
367
- margin-bottom: 0;
368
- font-size: 1rem;
380
+ .steps li::before {
381
+ position: absolute;
382
+ top: -0.3125rem;
383
+ left: calc(0.875rem - 1px);
384
+ width: 2px;
385
+ height: 0.625rem;
386
+ background: var(--border);
387
+ content: "";
388
+ transition: background 400ms var(--ease);
369
389
  }
370
390
 
371
- /* ---------- Toasts ---------- */
391
+ .steps li:first-child::before {
392
+ display: none;
393
+ }
372
394
 
373
- .toast-stack {
374
- position: fixed;
375
- top: calc(var(--header-height) + 0.5rem);
376
- right: clamp(0.75rem, 3vw, 2rem);
377
- z-index: 15;
395
+ .steps li span {
396
+ position: relative;
397
+ z-index: 1;
378
398
  display: grid;
379
- gap: 0.5rem;
380
- width: min(25rem, calc(100vw - 1.5rem));
381
- max-height: calc(100svh - var(--header-height) - 1rem);
382
- overflow-y: auto;
383
- pointer-events: none;
399
+ width: 1.75rem;
400
+ height: 1.75rem;
401
+ place-items: center;
402
+ border: 2px solid var(--border-strong);
403
+ border-radius: 50%;
404
+ background: var(--surface);
405
+ box-shadow: var(--shadow-sm);
406
+ font-size: 0.75rem;
407
+ font-weight: 800;
408
+ transition:
409
+ border-color 300ms var(--ease),
410
+ background 300ms var(--ease),
411
+ color 300ms var(--ease),
412
+ box-shadow 300ms var(--ease);
413
+ }
414
+
415
+ .steps li em {
416
+ font-style: normal;
417
+ font-weight: 600;
418
+ }
419
+
420
+ .steps li[aria-current="step"] {
421
+ color: var(--text);
422
+ }
423
+
424
+ .steps li[aria-current="step"] em {
425
+ font-weight: 750;
426
+ }
427
+
428
+ .steps li[aria-current="step"] span {
429
+ border-color: var(--accent);
430
+ color: #fff;
431
+ background: var(--accent);
432
+ box-shadow: 0 0 0 4px rgb(19 124 116 / 15%);
384
433
  }
385
434
 
386
- .toast {
387
- pointer-events: auto;
435
+ .steps li.complete span {
436
+ border-color: var(--accent);
437
+ color: transparent;
438
+ background: var(--accent);
439
+ }
440
+
441
+ .steps li.complete span::after {
442
+ position: absolute;
443
+ color: #fff;
444
+ font-size: 0.75rem;
445
+ content: "✓";
446
+ }
447
+
448
+ .steps li.complete::before,
449
+ .steps li[aria-current="step"]::before {
450
+ background: var(--accent);
451
+ }
452
+
453
+ /* ---------- Notices (in-flow, never overlay content) ---------- */
454
+
455
+ .toast-stack {
456
+ display: grid;
457
+ gap: 0.625rem;
458
+ padding-top: 0.875rem;
459
+ border-top: 1px solid var(--border);
388
460
  }
389
461
 
390
462
  .safety-note {
391
463
  position: relative;
392
464
  display: grid;
393
- grid-template-columns: 2rem minmax(0, 1fr) auto;
394
- gap: 0.25rem 0.875rem;
465
+ grid-template-columns: 1.75rem minmax(0, 1fr) auto;
466
+ gap: 0.125rem 0.625rem;
395
467
  align-items: start;
396
468
  margin: 0;
397
- padding: 0.875rem 0.875rem 0.875rem 1rem;
469
+ padding: 0.625rem 0.625rem 0.625rem 0.75rem;
398
470
  border: 1px solid var(--accent-border);
399
471
  border-radius: var(--radius);
400
472
  background: var(--accent-soft);
401
473
  box-shadow: var(--shadow-sm);
474
+ font-size: 0.8125rem;
402
475
  }
403
476
 
404
477
  .safety-note::before {
405
478
  display: grid;
406
- width: 2rem;
407
- height: 2rem;
479
+ width: 1.75rem;
480
+ height: 1.75rem;
408
481
  grid-row: span 2;
409
482
  place-items: center;
410
- border-radius: 0.625rem;
483
+ border-radius: 0.5rem;
411
484
  color: var(--accent-deep);
412
485
  background: var(--accent-icon);
413
- font-size: 1rem;
486
+ font-size: 0.875rem;
414
487
  font-weight: 800;
415
488
  content: "✓";
416
489
  }
@@ -421,7 +494,6 @@ h3 {
421
494
 
422
495
  .safety-note span {
423
496
  color: var(--accent-copy);
424
- font-size: 0.875rem;
425
497
  }
426
498
 
427
499
  .backup-note {
@@ -441,8 +513,8 @@ h3 {
441
513
 
442
514
  .toast-close {
443
515
  display: inline-grid;
444
- width: 1.75rem;
445
- min-height: 1.75rem;
516
+ width: 1.625rem;
517
+ min-height: 1.625rem;
446
518
  padding: 0;
447
519
  place-items: center;
448
520
  border: 0;
@@ -451,7 +523,7 @@ h3 {
451
523
  background: transparent;
452
524
  box-shadow: none;
453
525
  cursor: pointer;
454
- font-size: 1.25rem;
526
+ font-size: 1.125rem;
455
527
  line-height: 1;
456
528
  }
457
529
 
@@ -470,113 +542,16 @@ h3 {
470
542
  grid-row: 1;
471
543
  }
472
544
 
473
- /* ---------- Stepper ---------- */
474
-
475
- .steps {
476
- margin: 1.5rem 0 0.75rem;
477
- }
478
-
479
- .steps ol {
480
- display: grid;
481
- grid-template-columns: repeat(5, 1fr);
482
- margin: 0;
483
- padding: 0;
484
- list-style: none;
485
- }
486
-
487
- .steps li {
488
- position: relative;
489
- display: grid;
490
- justify-items: center;
491
- gap: 0.4375rem;
492
- color: var(--text-muted);
493
- font-size: 0.75rem;
494
- text-align: center;
495
- }
496
-
497
- .steps li::before {
498
- position: absolute;
499
- top: 0.9375rem;
500
- right: 50%;
501
- z-index: 0;
502
- width: 100%;
503
- height: 2px;
504
- background: var(--border);
505
- content: "";
506
- transition: background 400ms var(--ease);
507
- }
508
-
509
- .steps li:first-child::before {
510
- display: none;
511
- }
512
-
513
- .steps li span {
514
- position: relative;
515
- z-index: 1;
516
- display: grid;
517
- width: 2rem;
518
- height: 2rem;
519
- place-items: center;
520
- border: 2px solid var(--border-strong);
521
- border-radius: 50%;
522
- background: var(--surface);
523
- box-shadow: var(--shadow-sm);
524
- font-size: 0.8125rem;
525
- font-weight: 800;
526
- transition:
527
- border-color 300ms var(--ease),
528
- background 300ms var(--ease),
529
- color 300ms var(--ease),
530
- box-shadow 300ms var(--ease);
531
- }
532
-
533
- .steps li em {
534
- font-style: normal;
535
- font-weight: 600;
536
- }
537
-
538
- .steps li[aria-current="step"] {
539
- color: var(--text);
540
- }
541
-
542
- .steps li[aria-current="step"] span {
543
- border-color: var(--accent);
544
- color: #fff;
545
- background: var(--accent);
546
- box-shadow: 0 0 0 5px rgb(19 124 116 / 15%);
547
- }
548
-
549
- .steps li.complete span {
550
- border-color: var(--accent);
551
- color: transparent;
552
- background: var(--accent);
553
- }
554
-
555
- .steps li.complete span::after {
556
- position: absolute;
557
- color: #fff;
558
- font-size: 0.8125rem;
559
- content: "✓";
560
- }
561
-
562
- .steps li.complete::before,
563
- .steps li[aria-current="step"]::before {
564
- background: var(--accent);
565
- }
566
-
567
- /* ---------- Global messages ---------- */
568
-
569
545
  .message,
570
546
  .error {
571
547
  display: grid;
572
548
  grid-template-columns: auto minmax(0, 1fr) auto;
573
549
  align-items: start;
574
550
  gap: 0.625rem;
575
- min-height: 3rem;
576
551
  margin: 0;
577
- padding: 0.75rem;
552
+ padding: 0.625rem 0.75rem;
578
553
  border-radius: var(--radius-sm);
579
- font-size: 0.9375rem;
554
+ font-size: 0.8125rem;
580
555
  }
581
556
 
582
557
  .message {
@@ -605,10 +580,12 @@ h3 {
605
580
  animation: shake 320ms var(--ease);
606
581
  }
607
582
 
608
- /* ---------- Panels ---------- */
583
+ /* ---------- Task panel ---------- */
609
584
 
610
585
  .panel {
611
- padding: clamp(1.25rem, 3vw, 1.75rem);
586
+ min-height: 0;
587
+ overflow-y: auto;
588
+ padding: clamp(1.125rem, 1rem + 0.6vw, 1.5rem);
612
589
  border: 1px solid var(--border);
613
590
  border-radius: var(--radius-lg);
614
591
  background: var(--surface);
@@ -617,19 +594,28 @@ h3 {
617
594
  }
618
595
 
619
596
  .panel-heading {
620
- margin-bottom: 1.125rem;
597
+ margin-bottom: 1rem;
598
+ }
599
+
600
+ .panel-heading h2 {
601
+ margin-bottom: 0.375rem;
602
+ font-size: clamp(1.3rem, 1.125rem + 0.7vw, 1.5rem);
603
+ line-height: 1.2;
604
+ letter-spacing: -0.025em;
621
605
  }
622
606
 
623
607
  .panel-heading p {
624
- max-width: 42rem;
608
+ max-width: 44rem;
625
609
  margin-bottom: 0;
610
+ color: var(--text-muted);
611
+ font-size: 0.9375rem;
626
612
  }
627
613
 
628
614
  .status-row {
629
615
  display: flex;
630
616
  align-items: flex-start;
631
617
  gap: 0.875rem;
632
- padding: 1rem 1.125rem;
618
+ padding: 0.875rem 1rem;
633
619
  border: 1px solid var(--border);
634
620
  border-radius: var(--radius);
635
621
  background: var(--surface-muted);
@@ -670,25 +656,25 @@ h3 {
670
656
  .field-grid {
671
657
  display: grid;
672
658
  grid-template-columns: minmax(0, 2fr) minmax(7rem, 1fr);
673
- gap: 1rem;
674
- margin-bottom: 1rem;
659
+ gap: 0.875rem;
660
+ margin-bottom: 0.875rem;
675
661
  }
676
662
 
677
663
  .field-grid.single {
678
- grid-template-columns: 1fr;
664
+ grid-template-columns: minmax(0, 30rem);
679
665
  }
680
666
 
681
667
  .field {
682
668
  display: grid;
683
669
  align-content: start;
684
- gap: 0.4375rem;
670
+ gap: 0.375rem;
685
671
  font-weight: 700;
686
672
  }
687
673
 
688
674
  .field input,
689
675
  .field select {
690
676
  width: 100%;
691
- min-height: 2.875rem;
677
+ min-height: 2.75rem;
692
678
  padding: 0.625rem 0.875rem;
693
679
  border: 1px solid var(--border-strong);
694
680
  border-radius: var(--radius-sm);
@@ -754,8 +740,8 @@ code {
754
740
  display: flex;
755
741
  flex-wrap: wrap;
756
742
  justify-content: flex-end;
757
- gap: 0.75rem;
758
- margin-top: 1.75rem;
743
+ gap: 0.625rem;
744
+ margin-top: 1.25rem;
759
745
  }
760
746
 
761
747
  .button {
@@ -764,7 +750,7 @@ code {
764
750
  align-items: center;
765
751
  justify-content: center;
766
752
  gap: 0.5rem;
767
- min-height: 2.875rem;
753
+ min-height: 2.75rem;
768
754
  padding: 0.625rem 1.125rem;
769
755
  border: 1px solid transparent;
770
756
  border-radius: 0.625rem;
@@ -847,8 +833,8 @@ code {
847
833
  /* ---------- Fingerprint & approvals ---------- */
848
834
 
849
835
  .fingerprint {
850
- margin-top: 1rem;
851
- padding: 1.125rem;
836
+ margin-top: 0.875rem;
837
+ padding: 0.875rem 1rem;
852
838
  border: 1px solid var(--warning-border);
853
839
  border-radius: var(--radius);
854
840
  background: var(--warning-soft);
@@ -866,8 +852,8 @@ code {
866
852
 
867
853
  .fingerprint > code {
868
854
  display: block;
869
- margin-bottom: 1rem;
870
- padding: 0.625rem 0.75rem;
855
+ margin-bottom: 0.75rem;
856
+ padding: 0.5rem 0.75rem;
871
857
  border: 1px solid var(--warning-border);
872
858
  border-radius: var(--radius-sm);
873
859
  background: var(--surface);
@@ -893,15 +879,15 @@ code {
893
879
  .version-strip {
894
880
  display: flex;
895
881
  flex-wrap: wrap;
896
- gap: 0.625rem;
897
- margin-bottom: 1.25rem;
882
+ gap: 0.5rem;
883
+ margin-bottom: 1rem;
898
884
  }
899
885
 
900
886
  .version-strip span {
901
887
  display: inline-flex;
902
888
  align-items: center;
903
889
  gap: 0.375rem;
904
- padding: 0.4375rem 0.75rem;
890
+ padding: 0.375rem 0.75rem;
905
891
  border: 1px solid var(--border);
906
892
  border-radius: 999px;
907
893
  background: var(--surface-muted);
@@ -913,11 +899,11 @@ code {
913
899
  .review-grid {
914
900
  display: grid;
915
901
  grid-template-columns: 1fr 1fr;
916
- gap: 1rem;
902
+ gap: 0.875rem;
917
903
  }
918
904
 
919
905
  .review-grid section {
920
- padding: 1.125rem;
906
+ padding: 0.875rem 1rem;
921
907
  border: 1px solid var(--border);
922
908
  border-radius: var(--radius);
923
909
  background: var(--surface-muted);
@@ -936,9 +922,10 @@ code {
936
922
  .check-list,
937
923
  .no-list {
938
924
  display: grid;
939
- gap: 0.625rem;
925
+ gap: 0.5rem;
940
926
  margin: 0;
941
927
  padding-left: 1.25rem;
928
+ font-size: 0.9375rem;
942
929
  }
943
930
 
944
931
  .check-list li::marker {
@@ -950,8 +937,8 @@ code {
950
937
  }
951
938
 
952
939
  .approval {
953
- margin-top: 1rem;
954
- padding: 1rem 1.125rem;
940
+ margin-top: 0.875rem;
941
+ padding: 0.875rem 1rem;
955
942
  border: 1px solid var(--warning-border);
956
943
  border-radius: var(--radius);
957
944
  background: var(--warning-soft);
@@ -959,35 +946,44 @@ code {
959
946
 
960
947
  /* ---------- Success ---------- */
961
948
 
962
- .success-panel {
963
- position: relative;
949
+ .success-heading {
950
+ display: flex;
951
+ align-items: flex-start;
952
+ gap: 0.875rem;
953
+ margin-bottom: 1rem;
954
+ }
955
+
956
+ .success-heading .panel-heading {
957
+ margin-bottom: 0;
964
958
  }
965
959
 
966
960
  .success-mark {
967
961
  display: grid;
968
- width: 3.25rem;
969
- height: 3.25rem;
970
- margin-bottom: 1.25rem;
962
+ width: 2.5rem;
963
+ height: 2.5rem;
964
+ margin-top: 0.125rem;
965
+ flex: none;
971
966
  place-items: center;
972
967
  border-radius: 50%;
973
968
  color: #fff;
974
- background: linear-gradient(140deg, #1d8a5f, var(--success));
975
- box-shadow: 0 0 0 6px rgb(23 101 63 / 14%);
976
- font-size: 1.5rem;
969
+ background: var(--success);
970
+ box-shadow: 0 0 0 5px rgb(23 101 63 / 14%);
971
+ font-size: 1.25rem;
977
972
  font-weight: 900;
978
973
  animation: pop-in 480ms var(--ease);
979
974
  }
980
975
 
981
976
  .result-list {
977
+ margin: 0;
982
978
  border-top: 1px solid var(--border);
983
979
  }
984
980
 
985
981
  .result-list div {
986
982
  display: grid;
987
- grid-template-columns: 9rem 1fr;
988
- gap: 1rem;
983
+ grid-template-columns: 8.5rem minmax(0, 1fr);
984
+ gap: 0.75rem;
989
985
  align-items: center;
990
- padding: 0.875rem 0;
986
+ padding: 0.5rem 0;
991
987
  border-bottom: 1px solid var(--border);
992
988
  }
993
989
 
@@ -1005,11 +1001,15 @@ code {
1005
1001
  flex-wrap: wrap;
1006
1002
  align-items: center;
1007
1003
  justify-content: space-between;
1008
- gap: 0.75rem;
1004
+ gap: 0.625rem;
1005
+ }
1006
+
1007
+ #copy-settings {
1008
+ margin-top: 0.875rem;
1009
1009
  }
1010
1010
 
1011
1011
  .copy-value {
1012
- min-height: 2.125rem;
1012
+ min-height: 2rem;
1013
1013
  padding: 0.3125rem 0.75rem;
1014
1014
  border-radius: 0.5rem;
1015
1015
  font-size: 0.8125rem;
@@ -1018,7 +1018,7 @@ code {
1018
1018
  .model-box,
1019
1019
  .final-note {
1020
1020
  margin-top: 1rem;
1021
- padding: 1.125rem;
1021
+ padding: 0.75rem 1rem;
1022
1022
  border: 1px solid var(--border);
1023
1023
  border-radius: var(--radius);
1024
1024
  background: var(--surface-muted);
@@ -1033,8 +1033,13 @@ code {
1033
1033
  color: var(--text-muted);
1034
1034
  }
1035
1035
 
1036
+ .final-note {
1037
+ color: var(--text-muted);
1038
+ font-size: 0.875rem;
1039
+ }
1040
+
1036
1041
  .recipe-disclosure {
1037
- margin-top: 1rem;
1042
+ margin-top: 0.75rem;
1038
1043
  border: 1px solid var(--border);
1039
1044
  border-radius: var(--radius);
1040
1045
  background: var(--surface-muted);
@@ -1045,7 +1050,8 @@ code {
1045
1050
  align-items: center;
1046
1051
  justify-content: space-between;
1047
1052
  gap: 0.75rem;
1048
- padding: 0.875rem 1rem;
1053
+ min-height: 2.75rem;
1054
+ padding: 0.5rem 1rem;
1049
1055
  cursor: pointer;
1050
1056
  font-weight: 750;
1051
1057
  list-style: none;
@@ -1067,11 +1073,6 @@ code {
1067
1073
  content: "−";
1068
1074
  }
1069
1075
 
1070
- .recipe-disclosure summary:focus-visible {
1071
- outline: 3px solid #f2a94a;
1072
- outline-offset: -3px;
1073
- }
1074
-
1075
1076
  .recipe-content {
1076
1077
  margin: 0;
1077
1078
  border: 0;
@@ -1079,6 +1080,10 @@ code {
1079
1080
  border-radius: 0;
1080
1081
  }
1081
1082
 
1083
+ .recipe-content .result-list {
1084
+ border-top: 0;
1085
+ }
1086
+
1082
1087
  .sample-body-row {
1083
1088
  align-items: start !important;
1084
1089
  }
@@ -1098,12 +1103,19 @@ code {
1098
1103
  line-height: 1.45;
1099
1104
  }
1100
1105
 
1106
+ #copy-http-recipe {
1107
+ margin-top: 0.875rem;
1108
+ }
1109
+
1110
+ /* ---------- Footer ---------- */
1111
+
1101
1112
  footer {
1102
- padding: 1.5rem 1rem;
1113
+ flex: none;
1114
+ padding: 0.4375rem 1rem;
1103
1115
  border-top: 1px solid var(--border);
1104
1116
  color: var(--text-muted);
1105
1117
  background: var(--surface);
1106
- font-size: 0.8125rem;
1118
+ font-size: 0.75rem;
1107
1119
  text-align: center;
1108
1120
  }
1109
1121
 
@@ -1119,22 +1131,12 @@ footer p {
1119
1131
  box-shadow: 0 0 0 1px rgb(255 255 255 / 14%);
1120
1132
  }
1121
1133
 
1122
- :root[data-theme="dark"] .eyebrow,
1123
- :root[data-theme="dark"] .step-kicker {
1124
- color: var(--accent-bright);
1125
- }
1126
-
1127
1134
  @media (prefers-color-scheme: dark) {
1128
1135
  :root:not([data-theme]) .brand-mark {
1129
1136
  padding: 0.125rem;
1130
1137
  background: #f7f8f5;
1131
1138
  box-shadow: 0 0 0 1px rgb(255 255 255 / 14%);
1132
1139
  }
1133
-
1134
- :root:not([data-theme]) .eyebrow,
1135
- :root:not([data-theme]) .step-kicker {
1136
- color: var(--accent-bright);
1137
- }
1138
1140
  }
1139
1141
 
1140
1142
  /* ---------- Animations ---------- */
@@ -1183,62 +1185,252 @@ footer p {
1183
1185
  }
1184
1186
  }
1185
1187
 
1186
- /* ---------- Responsive ---------- */
1188
+ /* ---------- Small screens: stack rail above the task ---------- */
1187
1189
 
1188
- @media (max-width: 42rem) {
1189
- .local-badge {
1190
- display: none;
1190
+ @media (max-width: 60rem) {
1191
+ .shell {
1192
+ grid-template-columns: minmax(0, 1fr);
1193
+ grid-template-rows: auto minmax(0, 1fr);
1194
+ gap: 0.75rem;
1195
+ width: min(100% - 1.25rem, 44rem);
1196
+ padding: 0.75rem 0;
1191
1197
  }
1192
1198
 
1193
- .site-header {
1194
- padding-inline: 1rem;
1199
+ .rail {
1200
+ overflow: visible;
1201
+ gap: 0.625rem;
1195
1202
  }
1196
1203
 
1197
- .header-actions {
1198
- gap: 0.375rem;
1204
+ .intro h1 {
1205
+ margin-bottom: 0.25rem;
1206
+ font-size: 1.25rem;
1199
1207
  }
1200
1208
 
1201
- .shell {
1202
- width: min(100% - 1rem, 62rem);
1203
- padding: 1.25rem 0 2.5rem;
1209
+ .lede {
1210
+ font-size: 0.8125rem;
1211
+ }
1212
+
1213
+ .steps {
1214
+ padding-top: 0.625rem;
1215
+ }
1216
+
1217
+ .steps ol {
1218
+ display: grid;
1219
+ grid-template-columns: repeat(5, minmax(0, 1fr));
1220
+ padding: 0;
1221
+ }
1222
+
1223
+ .steps li {
1224
+ grid-template-columns: 1fr;
1225
+ justify-items: center;
1226
+ gap: 0.3125rem;
1227
+ padding: 0;
1228
+ font-size: 0.75rem;
1229
+ text-align: center;
1230
+ }
1231
+
1232
+ .steps li::before {
1233
+ top: 0.8125rem;
1234
+ right: 50%;
1235
+ left: auto;
1236
+ width: 100%;
1237
+ height: 2px;
1238
+ }
1239
+
1240
+ .steps li span {
1241
+ width: 1.625rem;
1242
+ height: 1.625rem;
1204
1243
  }
1205
1244
 
1206
1245
  .toast-stack {
1207
- top: calc(var(--header-height) + 0.375rem);
1208
- right: 0.5rem;
1209
- width: calc(100vw - 1rem);
1210
- gap: 0.375rem;
1246
+ padding-top: 0.625rem;
1211
1247
  }
1212
1248
 
1213
- .safety-note,
1214
- .field-grid,
1215
- .review-grid {
1249
+ .panel {
1250
+ padding: 1rem;
1251
+ }
1252
+ }
1253
+
1254
+ /* Keep every desktop step visible on common 720–768px laptop displays. */
1255
+ @media (min-width: 961px) and (max-height: 768px) {
1256
+ .shell {
1257
+ padding-block: 0.5rem;
1258
+ }
1259
+
1260
+ .rail {
1261
+ gap: 0.625rem;
1262
+ }
1263
+
1264
+ .intro h1 {
1265
+ font-size: 1.375rem;
1266
+ }
1267
+
1268
+ .lede {
1269
+ font-size: 0.8125rem;
1270
+ line-height: 1.4;
1271
+ }
1272
+
1273
+ .steps {
1274
+ padding-top: 0.5rem;
1275
+ }
1276
+
1277
+ .steps ol {
1278
+ display: grid;
1279
+ grid-template-columns: repeat(5, minmax(0, 1fr));
1280
+ padding: 0;
1281
+ }
1282
+
1283
+ .steps li {
1216
1284
  grid-template-columns: 1fr;
1285
+ justify-items: center;
1286
+ gap: 0.25rem;
1287
+ padding: 0;
1288
+ font-size: 0.6875rem;
1289
+ text-align: center;
1290
+ }
1291
+
1292
+ .steps li::before {
1293
+ top: 0.75rem;
1294
+ right: 50%;
1295
+ left: auto;
1296
+ width: 100%;
1297
+ height: 2px;
1298
+ }
1299
+
1300
+ .steps li span {
1301
+ width: 1.5rem;
1302
+ height: 1.5rem;
1303
+ }
1304
+
1305
+ .toast-stack {
1306
+ gap: 0.5rem;
1307
+ padding-top: 0.5rem;
1308
+ }
1309
+
1310
+ .safety-note {
1311
+ grid-template-columns: 1.5rem minmax(0, 1fr) auto;
1312
+ padding: 0.5rem 0.5rem 0.5rem 0.625rem;
1313
+ font-size: 0.75rem;
1217
1314
  }
1218
1315
 
1219
1316
  .safety-note::before {
1220
- grid-row: auto;
1317
+ width: 1.5rem;
1318
+ height: 1.5rem;
1221
1319
  }
1222
1320
 
1223
- .toast-stack .safety-note {
1224
- grid-template-columns: 2rem minmax(0, 1fr) auto;
1225
- align-items: center;
1321
+ .safety-note > span {
1322
+ display: -webkit-box;
1323
+ overflow: hidden;
1324
+ -webkit-box-orient: vertical;
1325
+ -webkit-line-clamp: 2;
1226
1326
  }
1227
1327
 
1228
- .toast-stack .safety-note::before {
1229
- grid-row: auto;
1328
+ .message,
1329
+ .error {
1330
+ padding-block: 0.5rem;
1331
+ font-size: 0.75rem;
1230
1332
  }
1231
1333
 
1232
- .toast-stack .safety-note > span {
1334
+ .panel {
1335
+ padding: 1rem;
1336
+ }
1337
+
1338
+ .panel-heading {
1339
+ margin-bottom: 0.625rem;
1340
+ }
1341
+
1342
+ .panel-heading h2 {
1343
+ margin-bottom: 0.25rem;
1344
+ }
1345
+
1346
+ .panel-heading p {
1347
+ font-size: 0.875rem;
1348
+ }
1349
+
1350
+ .field-grid {
1351
+ gap: 0.5rem 0.75rem;
1352
+ margin-bottom: 0.625rem;
1353
+ }
1354
+
1355
+ .field {
1356
+ gap: 0.25rem;
1357
+ }
1358
+
1359
+ .field input,
1360
+ .field select {
1361
+ min-height: 2.5rem;
1362
+ }
1363
+
1364
+ .field small {
1365
+ font-size: 0.75rem;
1366
+ line-height: 1.25;
1367
+ }
1368
+
1369
+ .fingerprint {
1370
+ margin-top: 0.625rem;
1371
+ padding: 0.625rem 0.75rem;
1372
+ }
1373
+
1374
+ .fingerprint > code {
1375
+ margin-bottom: 0.5rem;
1376
+ padding-block: 0.375rem;
1377
+ }
1378
+
1379
+ .actions {
1380
+ margin-top: 0.75rem;
1381
+ }
1382
+
1383
+ .button {
1384
+ min-height: 2.5rem;
1385
+ }
1386
+
1387
+ .success-heading,
1388
+ .result-list,
1389
+ #copy-settings,
1390
+ .model-box,
1391
+ .final-note,
1392
+ .recipe-disclosure {
1393
+ margin-top: 0.625rem;
1394
+ }
1395
+
1396
+ .success-heading {
1397
+ margin-bottom: 0.625rem;
1398
+ }
1399
+
1400
+ .result-list div {
1401
+ padding-block: 0.375rem;
1402
+ }
1403
+
1404
+ .model-box,
1405
+ .final-note {
1406
+ padding-block: 0.625rem;
1407
+ }
1408
+ }
1409
+
1410
+ @media (max-width: 42rem) {
1411
+ .local-badge {
1233
1412
  display: none;
1234
1413
  }
1235
1414
 
1236
- .steps li em {
1237
- font-size: 0.6875rem;
1415
+ .site-header {
1416
+ padding-inline: 1rem;
1238
1417
  }
1239
1418
 
1240
- .panel {
1241
- border-radius: var(--radius);
1419
+ .header-actions {
1420
+ gap: 0.375rem;
1421
+ }
1422
+
1423
+ .safety-note {
1424
+ align-items: center;
1425
+ }
1426
+
1427
+ .safety-note > span {
1428
+ display: none;
1429
+ }
1430
+
1431
+ .field-grid,
1432
+ .review-grid {
1433
+ grid-template-columns: 1fr;
1242
1434
  }
1243
1435
 
1244
1436
  .actions {
@@ -1261,6 +1453,113 @@ footer p {
1261
1453
  }
1262
1454
  }
1263
1455
 
1456
+ @media (max-width: 24rem) {
1457
+ .lede {
1458
+ display: none;
1459
+ }
1460
+ }
1461
+
1462
+ /* Keep task controls usable in phone landscape and other short, narrow views. */
1463
+ @media (max-width: 60rem) and (max-height: 36rem) {
1464
+ .shell {
1465
+ grid-template-rows: auto minmax(7rem, 1fr);
1466
+ gap: 0.5rem;
1467
+ padding-block: 0.5rem;
1468
+ }
1469
+
1470
+ .rail {
1471
+ min-width: 0;
1472
+ gap: 0.375rem;
1473
+ overflow: hidden;
1474
+ }
1475
+
1476
+ .intro {
1477
+ display: none;
1478
+ }
1479
+
1480
+ .steps {
1481
+ padding-top: 0.375rem;
1482
+ }
1483
+
1484
+ .steps li {
1485
+ gap: 0.1875rem;
1486
+ font-size: 0.6875rem;
1487
+ }
1488
+
1489
+ .steps li::before {
1490
+ top: 0.75rem;
1491
+ }
1492
+
1493
+ .steps li span {
1494
+ width: 1.5rem;
1495
+ height: 1.5rem;
1496
+ }
1497
+
1498
+ .toast-stack {
1499
+ display: flex;
1500
+ min-width: 0;
1501
+ gap: 0.5rem;
1502
+ overflow-x: auto;
1503
+ overflow-y: hidden;
1504
+ padding-top: 0.375rem;
1505
+ scroll-padding-inline: 0.125rem;
1506
+ scrollbar-width: thin;
1507
+ }
1508
+
1509
+ .toast-stack .toast {
1510
+ flex: 0 0 min(14rem, calc(100vw - 2.5rem));
1511
+ min-width: 0;
1512
+ }
1513
+
1514
+ .safety-note {
1515
+ grid-template-columns: 1.5rem minmax(0, 1fr) 1.5rem;
1516
+ gap: 0.125rem 0.5rem;
1517
+ padding: 0.5rem 0.5rem 0.5rem 0.625rem;
1518
+ font-size: 0.75rem;
1519
+ }
1520
+
1521
+ .safety-note::before {
1522
+ width: 1.5rem;
1523
+ height: 1.5rem;
1524
+ }
1525
+
1526
+ .safety-note > span {
1527
+ display: none;
1528
+ }
1529
+
1530
+ .message,
1531
+ .error {
1532
+ padding: 0.5rem 0.625rem;
1533
+ font-size: 0.75rem;
1534
+ }
1535
+
1536
+ #global-message-text,
1537
+ .error > span {
1538
+ overflow: hidden;
1539
+ text-overflow: ellipsis;
1540
+ white-space: nowrap;
1541
+ }
1542
+
1543
+ .toast-close {
1544
+ width: 1.5rem;
1545
+ min-height: 1.5rem;
1546
+ }
1547
+
1548
+ .panel {
1549
+ min-height: 7rem;
1550
+ overflow-y: auto;
1551
+ padding: 0.875rem;
1552
+ }
1553
+
1554
+ .panel-heading {
1555
+ margin-bottom: 0.625rem;
1556
+ }
1557
+
1558
+ .panel-heading p {
1559
+ font-size: 0.875rem;
1560
+ }
1561
+ }
1562
+
1264
1563
  @media (prefers-reduced-motion: reduce) {
1265
1564
  html {
1266
1565
  scroll-behavior: auto;