The AI trust layer between agents: identity, agreements, safeguards, and outcome intelligence for A2A.

Viewing files at commit b95ad82c1c50Commit detailsView latest

apps/dashboard/src/landing.css 1041 lines · 17.8 KB · css
1
/* Public landing — protocol document */
2
3
html:has(.landingPage),
4
html:has(.landingPage) body {
5
  scrollbar-gutter: stable;
6
  scrollbar-width: thin;
7
  scrollbar-color: color-mix(in srgb, var(--accent) 70%, #8a6a62)
8
    color-mix(in srgb, var(--bg) 92%, var(--border));
9
}
10
11
html:has(.landingPage)::-webkit-scrollbar,
12
html:has(.landingPage) body::-webkit-scrollbar {
13
  width: 10px;
14
}
15
16
html:has(.landingPage)::-webkit-scrollbar-track,
17
html:has(.landingPage) body::-webkit-scrollbar-track {
18
  background: color-mix(in srgb, var(--bg) 96%, #000);
19
  box-shadow: inset 1px 0 0 var(--border);
20
}
21
22
html:has(.landingPage)::-webkit-scrollbar-thumb,
23
html:has(.landingPage) body::-webkit-scrollbar-thumb {
24
  background: color-mix(in srgb, var(--accent) 58%, #6e534c);
25
  border: 3px solid color-mix(in srgb, var(--bg) 96%, #000);
26
  background-clip: padding-box;
27
}
28
29
html:has(.landingPage)::-webkit-scrollbar-thumb:hover,
30
html:has(.landingPage) body::-webkit-scrollbar-thumb:hover {
31
  background: var(--accent);
32
  border: 3px solid color-mix(in srgb, var(--bg) 96%, #000);
33
  background-clip: padding-box;
34
}
35
36
html:has(.landingPage)::-webkit-scrollbar-corner,
37
html:has(.landingPage) body::-webkit-scrollbar-corner {
38
  background: transparent;
39
}
40
41
.landingPage {
42
  position: relative;
43
  isolation: isolate;
44
  min-height: 100vh;
45
  overflow-x: clip;
46
  color: var(--text);
47
  font-family: var(--mono);
48
  background: var(--bg);
49
}
50
51
.landingPage > main,
52
.landingFooter {
53
  position: relative;
54
  z-index: 1;
55
}
56
57
.landingPage a {
58
  color: inherit;
59
  text-decoration: none;
60
}
61
62
.landingPage :is(a, button) {
63
  -webkit-tap-highlight-color: transparent;
64
}
65
66
.landingPage button,
67
.landingPage .navCta,
68
.landingPage .landingPrimary,
69
.landingPage .landingSecondary,
70
.landingPage .themeButton,
71
.landingPage .accessCard .socialButtons button {
72
  border-radius: 0;
73
}
74
75
.landingNav {
76
  position: sticky;
77
  top: 0;
78
  z-index: 20;
79
  display: grid;
80
  min-height: 52px;
81
  padding: 0 max(24px, calc((100% - 1120px) / 2));
82
  grid-template-columns: 1fr auto 1fr;
83
  align-items: center;
84
  border-bottom: 1px solid var(--border);
85
  background: color-mix(in srgb, var(--bg) 88%, transparent);
86
  backdrop-filter: blur(12px);
87
  -webkit-backdrop-filter: blur(12px);
88
}
89
90
.landingBrand {
91
  display: inline-flex;
92
  width: fit-content;
93
  align-items: center;
94
  gap: 8px;
95
  font-size: 13px;
96
  font-weight: 500;
97
  letter-spacing: 0.04em;
98
  text-transform: lowercase;
99
}
100
101
.landingBrand strong {
102
  font-weight: 500;
103
}
104
105
.landingBrand .landingMark {
106
  display: block;
107
  width: 22px;
108
  height: 22px;
109
  flex: none;
110
}
111
112
.landingClock {
113
  color: var(--text-faint);
114
  font-size: 11px;
115
  letter-spacing: 0.08em;
116
  font-variant-numeric: tabular-nums;
117
}
118
119
.landingMark {
120
  color: var(--accent);
121
}
122
123
.landingNav nav {
124
  display: flex;
125
  align-items: center;
126
  gap: 28px;
127
  color: var(--text-muted);
128
  font-size: 12px;
129
}
130
131
.landingNav nav a {
132
  letter-spacing: 0.06em;
133
  text-transform: lowercase;
134
}
135
136
.landingNav nav a::before {
137
  margin-right: 2px;
138
  color: var(--text-faint);
139
  content: '/';
140
}
141
142
.landingNav nav a,
143
.landingSecondary {
144
  transition: color 140ms ease;
145
}
146
147
.landingNav nav a:hover,
148
.landingSecondary:hover {
149
  color: var(--text);
150
}
151
152
.landingNavActions {
153
  display: flex;
154
  justify-content: flex-end;
155
  align-items: center;
156
  gap: 8px;
157
}
158
159
.themeButton {
160
  display: grid;
161
  width: 34px;
162
  height: 34px;
163
  padding: 0;
164
  place-items: center;
165
  border: 1px solid var(--border);
166
  color: var(--text-muted);
167
  background: transparent;
168
  cursor: pointer;
169
}
170
171
.themeButton:hover {
172
  border-color: var(--border-strong);
173
  color: var(--text);
174
}
175
176
.themeButton svg,
177
.navCta svg,
178
.landingPrimary svg {
179
  width: 14px;
180
  height: 14px;
181
}
182
183
.navCta,
184
.landingPrimary {
185
  display: inline-flex;
186
  align-items: center;
187
  justify-content: center;
188
  gap: 8px;
189
  color: #fff !important;
190
  background: var(--accent);
191
  font-size: 12px;
192
  font-weight: 500;
193
  letter-spacing: 0.04em;
194
  text-transform: lowercase;
195
  transition:
196
    background 140ms ease,
197
    transform 140ms ease;
198
}
199
200
.navCta svg,
201
.landingPrimary svg {
202
  transition: transform 160ms ease;
203
}
204
205
.navCta {
206
  min-height: 34px;
207
  padding: 0 12px;
208
}
209
210
.navCta:hover,
211
.landingPrimary:hover {
212
  background: var(--accent-hover);
213
}
214
215
.navCta:hover svg,
216
.landingPrimary:hover svg {
217
  transform: translateX(3px);
218
}
219
220
.navCta:active,
221
.landingPrimary:active {
222
  transform: translateY(1px);
223
}
224
225
.landingHero {
226
  position: relative;
227
  display: grid;
228
  width: min(100% - 48px, 1120px);
229
  min-height: 640px;
230
  margin: 0 auto;
231
  padding: 72px 0 80px;
232
  grid-template-columns: minmax(0, 0.96fr) minmax(380px, 1fr);
233
  align-items: center;
234
  gap: clamp(32px, 5vw, 72px);
235
}
236
237
.heroCopy {
238
  position: relative;
239
  z-index: 2;
240
  animation: landingReveal 640ms cubic-bezier(0.22, 1, 0.36, 1) both;
241
}
242
243
.landingKicker {
244
  display: flex;
245
  align-items: center;
246
  gap: 10px;
247
  margin: 0;
248
  color: var(--text-faint);
249
  font-family: var(--mono);
250
  font-size: 11px;
251
  font-weight: 400;
252
  letter-spacing: 0.08em;
253
  line-height: 1.4;
254
  text-transform: lowercase;
255
}
256
257
.landingKicker > span {
258
  color: var(--accent);
259
}
260
261
.heroCopy h1,
262
.sectionIntro h2,
263
.principlesSection h2,
264
.accessCopy h2 {
265
  margin: 18px 0;
266
  font-weight: 500;
267
  letter-spacing: -0.045em;
268
  line-height: 0.96;
269
}
270
271
.heroCopy h1 {
272
  max-width: 16ch;
273
  font-size: clamp(40px, 5.4vw, 68px);
274
}
275
276
.heroCopy h1 em,
277
.sectionIntro h2 em,
278
.principlesSection h2 em {
279
  display: inline-block;
280
  color: var(--text-muted);
281
  font-style: normal;
282
  font-weight: 400;
283
}
284
285
.heroCopy h1 em {
286
  padding-left: 0.55em;
287
}
288
289
.heroCopy h1 em::after {
290
  display: inline-block;
291
  width: 0.55ch;
292
  margin-left: 2px;
293
  color: var(--accent);
294
  content: '_';
295
  animation: caretBlink 1.1s steps(1) infinite;
296
}
297
298
.heroCopy > p {
299
  max-width: 42em;
300
  margin: 0;
301
  color: var(--text-muted);
302
  font-family: var(--font);
303
  font-size: 15px;
304
  line-height: 1.6;
305
}
306
307
.heroActions {
308
  display: flex;
309
  flex-wrap: wrap;
310
  align-items: center;
311
  gap: 22px;
312
  margin-top: 32px;
313
}
314
315
.landingPrimary {
316
  min-height: 42px;
317
  padding: 0 16px;
318
}
319
320
.landingSecondary {
321
  padding: 6px 0;
322
  border-bottom: 1px solid var(--border-strong);
323
  color: var(--text-muted);
324
  font-size: 12px;
325
  letter-spacing: 0.04em;
326
  text-transform: lowercase;
327
}
328
329
.landingSecondary:active,
330
.landingNav nav a:active {
331
  color: var(--accent);
332
}
333
334
.heroNotes {
335
  display: flex;
336
  flex-wrap: wrap;
337
  gap: 8px 18px;
338
  margin-top: 44px;
339
  color: var(--text-faint);
340
  font-size: 11px;
341
  letter-spacing: 0.04em;
342
}
343
344
.heroNotes span {
345
  color: var(--text-muted);
346
}
347
348
/* Live ASCII backdrop — one figure */
349
350
.landingBackdrop {
351
  position: fixed;
352
  inset: 0;
353
  z-index: 0;
354
  overflow: hidden;
355
  pointer-events: none;
356
}
357
358
.liveAscii {
359
  position: absolute;
360
  top: 50%;
361
  left: 50%;
362
  margin: 0;
363
  color: color-mix(in srgb, var(--accent) 46%, var(--text-faint));
364
  font: 400 16px/1 var(--mono);
365
  letter-spacing: 0;
366
  opacity: 0.36;
367
  user-select: none;
368
  white-space: pre;
369
  transform: translate(-50%, -46%);
370
}
371
372
/* 2D exchange diagram */
373
374
.asciiDiagram {
375
  position: relative;
376
  z-index: 2;
377
  display: grid;
378
  min-height: 0;
379
  padding: 22px 22px 18px;
380
  align-content: start;
381
  border-top: 1px solid var(--border-strong);
382
  border-right: 1px dashed var(--border);
383
  border-bottom: 0;
384
  border-left: 1px solid var(--border-strong);
385
  background: color-mix(in srgb, var(--bg) 70%, transparent);
386
  animation: landingReveal 720ms 80ms cubic-bezier(0.22, 1, 0.36, 1) both;
387
}
388
389
.sceneCorner {
390
  position: absolute;
391
  z-index: 4;
392
  color: var(--accent);
393
  font: 500 12px/1 var(--mono);
394
  pointer-events: none;
395
}
396
397
.sceneTL {
398
  top: -7px;
399
  left: -5px;
400
}
401
402
.sceneTR {
403
  top: -7px;
404
  right: -5px;
405
}
406
407
.sceneBL {
408
  bottom: -6px;
409
  left: -5px;
410
}
411
412
.diagramHud {
413
  display: flex;
414
  justify-content: space-between;
415
  color: var(--text-faint);
416
  font-size: 10px;
417
  letter-spacing: 0.1em;
418
}
419
420
.diagramLive {
421
  color: var(--live);
422
}
423
424
.sessionLog {
425
  display: grid;
426
  margin: 28px 0 0;
427
  padding: 0;
428
  list-style: none;
429
  gap: 9px;
430
}
431
432
.sessionLog li {
433
  display: grid;
434
  grid-template-columns: 7ch 6ch minmax(0, 1fr);
435
  gap: 12px;
436
  color: var(--text-muted);
437
  font-size: 12px;
438
  line-height: 1.4;
439
}
440
441
.sessionLog time {
442
  color: var(--text-faint);
443
  font-variant-numeric: tabular-nums;
444
}
445
446
.sessionLog b {
447
  color: var(--text);
448
  font-weight: 500;
449
}
450
451
.sessionLog .is-live {
452
  color: var(--accent);
453
}
454
455
.sessionLog .is-live b {
456
  color: var(--accent);
457
}
458
459
.diagramSpec {
460
  margin: 28px 0 0;
461
  padding-top: 16px;
462
  border-top: 1px dashed var(--border);
463
  color: var(--text-faint);
464
  font: 400 11px/1.7 var(--mono);
465
  letter-spacing: 0.04em;
466
}
467
468
.capabilityRail {
469
  display: flex;
470
  flex-wrap: wrap;
471
  justify-content: center;
472
  align-items: center;
473
  gap: 10px 22px;
474
  padding: 16px 24px;
475
  border-top: 1px solid var(--border);
476
  border-bottom: 1px solid var(--border);
477
  color: var(--text-muted);
478
  background: color-mix(in srgb, var(--bg) 58%, transparent);
479
  font-size: 11px;
480
  letter-spacing: 0.1em;
481
}
482
483
.capabilityRail span::after {
484
  margin-left: 22px;
485
  color: var(--accent);
486
  content: '──';
487
}
488
489
.capabilityRail span:last-child::after {
490
  content: none;
491
}
492
493
.productSection,
494
.principlesSection,
495
.accessSection {
496
  width: min(100% - 48px, 1120px);
497
  margin: 0 auto;
498
  scroll-margin-top: 72px;
499
}
500
501
.productSection {
502
  padding: 120px 0;
503
}
504
505
.sectionIntro {
506
  display: grid;
507
  margin-bottom: 36px;
508
  grid-template-columns: 1fr 0.72fr;
509
  column-gap: 72px;
510
}
511
512
.sectionIntro .landingKicker {
513
  grid-column: 1 / -1;
514
}
515
516
.sectionIntro h2,
517
.principlesSection h2 {
518
  font-size: clamp(32px, 4.4vw, 52px);
519
}
520
521
.sectionIntro > p:last-child {
522
  align-self: end;
523
  margin: 0 0 8px;
524
  color: var(--text-muted);
525
  font-family: var(--font);
526
  font-size: 15px;
527
  line-height: 1.65;
528
}
529
530
.recordAsk {
531
  display: flex;
532
  flex-wrap: wrap;
533
  margin-bottom: 36px;
534
  align-items: baseline;
535
  gap: 10px 22px;
536
  color: var(--text-muted);
537
  font-size: 12px;
538
}
539
540
.recordAsk > span {
541
  color: var(--accent);
542
  letter-spacing: 0.08em;
543
}
544
545
.recordAsk p {
546
  margin: 0;
547
}
548
549
.recordAsk p::before {
550
  margin-right: 8px;
551
  color: var(--text-faint);
552
  content: '>';
553
}
554
555
.recordSteps {
556
  display: grid;
557
  margin: 0;
558
  padding: 0;
559
  list-style: none;
560
  border-top: 1px solid var(--border);
561
}
562
563
.recordSteps li {
564
  display: grid;
565
  padding: 28px 0;
566
  grid-template-columns: 88px minmax(0, 1fr);
567
  gap: 28px;
568
  border-bottom: 1px dashed var(--border);
569
}
570
571
.recordSteps li > span {
572
  color: var(--accent);
573
  font-size: 11px;
574
  letter-spacing: 0.1em;
575
}
576
577
.recordSteps h3 {
578
  max-width: 20ch;
579
  margin: 0 0 8px;
580
  font-size: clamp(20px, 2.2vw, 30px);
581
  font-weight: 500;
582
  letter-spacing: -0.04em;
583
  line-height: 1.05;
584
}
585
586
.recordSteps p {
587
  max-width: 42em;
588
  margin: 0;
589
  color: var(--text-muted);
590
  font-family: var(--font);
591
  font-size: 14px;
592
  line-height: 1.6;
593
}
594
595
.asciiMini {
596
  margin: 18px 0 0;
597
  color: var(--text-muted);
598
  font: 400 11px/1.55 var(--mono);
599
  letter-spacing: 0.02em;
600
}
601
602
.principlesSection {
603
  display: grid;
604
  padding: 110px 0;
605
  grid-template-columns: 1fr 0.9fr;
606
  gap: 72px;
607
  border-top: 1px solid var(--border);
608
}
609
610
.principlesSection h2 {
611
  margin-bottom: 0;
612
}
613
614
.principleList {
615
  display: grid;
616
}
617
618
.principleList article {
619
  display: grid;
620
  padding: 22px 0;
621
  grid-template-columns: 72px 1fr;
622
  gap: 16px;
623
  border-bottom: 1px dashed var(--border);
624
}
625
626
.principleList article:first-child {
627
  border-top: 1px dashed var(--border);
628
}
629
630
.principleList article > span {
631
  color: var(--accent);
632
  font-size: 11px;
633
}
634
635
.principleList h3 {
636
  margin: -2px 0 6px;
637
  font-size: 15px;
638
  font-weight: 500;
639
  letter-spacing: -0.02em;
640
}
641
642
.principleList p {
643
  margin: 0;
644
  color: var(--text-muted);
645
  font-family: var(--font);
646
  font-size: 13px;
647
  line-height: 1.6;
648
}
649
650
.accessSection {
651
  display: grid;
652
  margin-bottom: 80px;
653
  padding: clamp(28px, 5vw, 56px) 0 0;
654
  grid-template-columns: 1.1fr 0.9fr;
655
  align-items: start;
656
  gap: clamp(36px, 6vw, 88px);
657
  border-top: 1px solid var(--border);
658
}
659
660
.accessCopy h2 {
661
  max-width: 16ch;
662
  margin: 16px 0;
663
  font-size: clamp(32px, 4vw, 48px);
664
}
665
666
.accessCopy > p:last-child {
667
  max-width: 40em;
668
  margin: 0;
669
  color: var(--text-muted);
670
  font-family: var(--font);
671
  font-size: 15px;
672
  line-height: 1.65;
673
}
674
675
.accessCard {
676
  display: grid;
677
  gap: 14px;
678
  border: 1px solid var(--border-strong);
679
  background: var(--bg);
680
}
681
682
.accessChrome {
683
  display: flex;
684
  padding: 8px 12px;
685
  align-items: center;
686
  justify-content: space-between;
687
  border-bottom: 1px solid var(--border);
688
  color: var(--text-faint);
689
  font-size: 11px;
690
  letter-spacing: 0.08em;
691
}
692
693
.accessBlink {
694
  color: var(--accent);
695
  animation: caretBlink 1.1s steps(1) infinite;
696
}
697
698
.accessCard .socialButtons {
699
  padding: 16px 16px 4px;
700
}
701
702
.accessCard .socialButtons button {
703
  min-height: 42px;
704
  border-radius: 0;
705
  font-family: var(--mono);
706
  font-size: 12px;
707
  font-weight: 500;
708
  letter-spacing: 0.03em;
709
}
710
711
.accessCard .socialButtons button:last-child svg:last-child {
712
  width: 14px;
713
  margin-left: auto;
714
}
715
716
.accessCard > small {
717
  padding: 0 16px 16px;
718
  color: var(--text-faint);
719
  font-size: 11px;
720
  line-height: 1.55;
721
}
722
723
.accessCard .loginError {
724
  margin: 0 16px;
725
}
726
727
.landingFooter {
728
  display: grid;
729
  width: min(100% - 48px, 1120px);
730
  min-height: 88px;
731
  margin: 0 auto;
732
  padding: 24px 0 36px;
733
  grid-template-columns: 1fr auto 1fr;
734
  align-items: center;
735
  gap: 20px;
736
  border-top: 1px solid var(--border);
737
}
738
739
.landingFooter p,
740
.landingFooter small {
741
  margin: 0;
742
  color: var(--text-faint);
743
  font-size: 11px;
744
}
745
746
.landingFooter small {
747
  justify-self: end;
748
  max-width: 34em;
749
  text-align: right;
750
  line-height: 1.5;
751
}
752
753
@keyframes landingReveal {
754
  from {
755
    opacity: 0;
756
    translate: 0 14px;
757
  }
758
  to {
759
    opacity: 1;
760
    translate: 0 0;
761
  }
762
}
763
764
@keyframes caretBlink {
765
  50% {
766
    opacity: 0;
767
  }
768
}
769
770
@keyframes sectionArrival {
771
  from {
772
    opacity: 0;
773
    translate: 0 14px;
774
  }
775
  to {
776
    opacity: 1;
777
    translate: 0 0;
778
  }
779
}
780
781
@keyframes destinationPulse {
782
  0% {
783
    box-shadow: inset 0 0 0 1px transparent;
784
  }
785
  42% {
786
    box-shadow: inset 0 0 0 1px var(--accent-line);
787
  }
788
  100% {
789
    box-shadow: inset 0 0 0 1px transparent;
790
  }
791
}
792
793
@keyframes scrollReveal {
794
  from {
795
    opacity: 0;
796
    translate: 0 20px;
797
  }
798
  to {
799
    opacity: 1;
800
    translate: 0 0;
801
  }
802
}
803
804
@keyframes themeClick {
805
  50% {
806
    opacity: 0.35;
807
    transform: rotate(110deg) scale(0.65);
808
  }
809
}
810
811
.themeButton:active svg {
812
  animation: themeClick 340ms cubic-bezier(0.22, 1, 0.36, 1);
813
}
814
815
@supports (animation-timeline: view()) {
816
  .sectionIntro,
817
  .recordSteps li,
818
  .principlesSection > div,
819
  .accessSection {
820
    animation: scrollReveal linear both;
821
    animation-timeline: view();
822
    animation-range: entry 5% cover 27%;
823
  }
824
825
  .recordSteps li:nth-child(2) {
826
    animation-range: entry 10% cover 30%;
827
  }
828
829
  .recordSteps li:nth-child(3) {
830
    animation-range: entry 15% cover 33%;
831
  }
832
}
833
834
.productSection.is-arriving .sectionIntro,
835
.principlesSection.is-arriving > div,
836
.accessSection.is-arriving .accessCopy,
837
.accessSection.is-arriving .accessCard {
838
  animation: sectionArrival 640ms cubic-bezier(0.22, 1, 0.36, 1) both;
839
  animation-timeline: auto;
840
}
841
842
.productSection.is-arriving .recordSteps li {
843
  animation: sectionArrival 600ms 80ms cubic-bezier(0.22, 1, 0.36, 1) both;
844
  animation-timeline: auto;
845
}
846
847
.productSection.is-arriving .recordSteps li:nth-child(2),
848
.principlesSection.is-arriving > div:nth-child(2),
849
.accessSection.is-arriving .accessCard {
850
  animation-delay: 130ms;
851
}
852
853
.productSection.is-arriving .recordSteps li:nth-child(3) {
854
  animation-delay: 190ms;
855
}
856
857
.accessSection.is-arriving {
858
  animation: destinationPulse 880ms ease-out;
859
  animation-timeline: auto;
860
}
861
862
863
@media (max-width: 1080px) {
864
  .landingHero {
865
    grid-template-columns: minmax(0, 1fr) minmax(380px, 0.95fr);
866
    gap: 36px;
867
  }
868
869
  .sectionIntro,
870
  .principlesSection {
871
    gap: 40px;
872
  }
873
}
874
875
@media (max-width: 900px) {
876
  .landingNav {
877
    grid-template-columns: 1fr auto;
878
  }
879
880
  .landingNav nav {
881
    display: none;
882
  }
883
884
  .landingHero {
885
    min-height: auto;
886
    padding: 56px 0 64px;
887
    grid-template-columns: 1fr;
888
  }
889
890
  .heroCopy {
891
    max-width: 40em;
892
  }
893
894
  .asciiDiagram {
895
    margin-top: 8px;
896
  }
897
898
  .liveAscii {
899
    top: 42%;
900
    left: 50%;
901
    right: auto;
902
    bottom: auto;
903
    font-size: 14px;
904
    opacity: 0.2;
905
  }
906
907
  .sectionIntro,
908
  .principlesSection,
909
  .accessSection {
910
    grid-template-columns: 1fr;
911
  }
912
913
  .principlesSection {
914
    gap: 36px;
915
  }
916
917
  .accessCard {
918
    max-width: 520px;
919
  }
920
921
  .landingFooter {
922
    grid-template-columns: 1fr auto;
923
  }
924
925
  .landingFooter p {
926
    display: none;
927
  }
928
}
929
930
@media (max-width: 720px) {
931
  .landingNav,
932
  .landingHero,
933
  .productSection,
934
  .principlesSection,
935
  .accessSection,
936
  .landingFooter {
937
    width: min(100% - 32px, 1120px);
938
  }
939
940
  .landingNav {
941
    padding-inline: 16px;
942
    width: 100%;
943
  }
944
945
  .navCta,
946
  .landingClock {
947
    display: none;
948
  }
949
950
  .heroCopy h1 {
951
    font-size: clamp(34px, 11vw, 52px);
952
  }
953
954
  .heroNotes {
955
    display: grid;
956
    margin-top: 32px;
957
  }
958
959
  .asciiDiagram {
960
    padding: 18px 16px 14px;
961
  }
962
963
  .sessionLog li {
964
    grid-template-columns: 6.5ch 5.5ch minmax(0, 1fr);
965
    gap: 8px;
966
    font-size: 11px;
967
  }
968
969
  .recordSteps li {
970
    grid-template-columns: 64px minmax(0, 1fr);
971
    gap: 16px;
972
    padding: 22px 0;
973
  }
974
975
  .productSection,
976
  .principlesSection {
977
    padding: 80px 0;
978
  }
979
980
  .sectionIntro {
981
    display: block;
982
    margin-bottom: 0;
983
  }
984
985
  .sectionIntro h2,
986
  .principlesSection h2 {
987
    font-size: clamp(30px, 9vw, 44px);
988
  }
989
990
  .recordAsk {
991
    margin: 24px 0 28px;
992
    flex-direction: column;
993
  }
994
995
  .accessSection {
996
    margin-bottom: 48px;
997
    gap: 28px;
998
  }
999
1000
  .landingFooter {
1001
    padding-top: 28px;
1002
    grid-template-columns: 1fr;
1003
    align-items: start;
1004
  }
1005
1006
  .landingFooter small {
1007
    justify-self: start;
1008
    text-align: left;
1009
  }
1010
}
1011
1012
@media (prefers-reduced-motion: reduce) {
1013
  html {
1014
    scroll-behavior: auto;
1015
  }
1016
1017
  .heroCopy,
1018
  .asciiDiagram,
1019
  .heroCopy h1 em::after,
1020
  .accessBlink,
1021
  .sectionIntro,
1022
  .recordSteps li,
1023
  .principlesSection > div,
1024
  .accessSection {
1025
    animation: none;
1026
  }
1027
1028
  .productSection.is-arriving *,
1029
  .principlesSection.is-arriving > div,
1030
  .accessSection.is-arriving,
1031
  .accessSection.is-arriving * {
1032
    animation: none !important;
1033
  }
1034
1035
  .themeButton,
1036
  .navCta,
1037
  .landingPrimary,
1038
  .landingSecondary {
1039
    transition: none;
1040
  }
1041
}