@echomem/mcp 1.4.26 → 1.4.27

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.
@@ -14,7 +14,7 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
14
14
  width: 100%;
15
15
  min-height: 100vh;
16
16
  margin: 0;
17
- padding: clamp(28px, 5vw, 64px) clamp(18px, 5vw, 64px);
17
+ padding: clamp(16px, 2.4vw, 34px) clamp(18px, 5vw, 64px) clamp(38px, 6vw, 72px);
18
18
  }
19
19
  main > header { display: none; }
20
20
  #app.state { color: transparent; }
@@ -25,25 +25,93 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
25
25
  min-height: calc(100vh - clamp(56px, 10vw, 128px));
26
26
  }
27
27
 
28
- /* Permission ------------------------------------------------------------ */
29
- .mvpConsentStage {
30
- display: grid !important;
28
+ /* One calm map across local scan, account/Stripe, import, and first value. */
29
+ .setupJourney {
30
+ width: min(760px, 100%);
31
+ margin: 0 auto clamp(16px, 2.4vw, 26px);
32
+ color: var(--echo-ink-faint);
33
+ }
34
+ .setupJourney ol {
35
+ display: grid;
36
+ grid-template-columns: repeat(5, minmax(0, 1fr));
37
+ gap: 0;
38
+ margin: 0;
39
+ padding: 0;
40
+ list-style: none;
41
+ }
42
+ .setupJourneyStep {
43
+ position: relative;
44
+ display: grid;
45
+ justify-items: center;
46
+ gap: 7px;
47
+ min-width: 0;
48
+ text-align: center;
49
+ }
50
+ .setupJourneyStep:not(:last-child)::after {
51
+ content: "";
52
+ position: absolute;
53
+ z-index: 0;
54
+ top: 13px;
55
+ left: calc(50% + 17px);
56
+ width: calc(100% - 34px);
57
+ height: 1px;
58
+ background: rgba(26,58,143,0.16);
59
+ }
60
+ .setupJourneyStep > span {
61
+ position: relative;
62
+ z-index: 1;
63
+ display: grid;
64
+ width: 27px;
65
+ height: 27px;
31
66
  place-items: center;
67
+ border: 1px solid rgba(26,58,143,0.20);
68
+ border-radius: 50%;
69
+ background: var(--echo-paper-canvas);
70
+ font: 750 10px/1 var(--echo-font-mono);
32
71
  }
33
- .mvpConsent {
34
- display: flex;
35
- width: min(620px, 100%);
72
+ .setupJourneyStep > span .setupGlyph { width: 15px; height: 15px; }
73
+ .setupJourneyStep > b {
74
+ overflow: hidden;
75
+ max-width: 100%;
76
+ font: 700 9px/1.2 var(--echo-font-mono);
77
+ letter-spacing: 0.06em;
78
+ text-overflow: ellipsis;
79
+ text-transform: uppercase;
80
+ white-space: nowrap;
81
+ }
82
+ .setupJourneyStep.is-complete,
83
+ .setupJourneyStep.is-current { color: var(--echo-ink-primary); }
84
+ .setupJourneyStep.is-complete > span {
85
+ border-color: rgba(44,143,104,0.34);
86
+ background: rgba(44,143,104,0.12);
87
+ color: #257b59;
88
+ }
89
+ .setupJourneyStep.is-current > span {
90
+ border-color: var(--echo-ink-primary);
91
+ background: var(--echo-ink-primary);
92
+ box-shadow: 0 0 0 4px rgba(26,58,143,0.09);
93
+ color: white;
94
+ }
95
+ body.cityMode .setupJourney {
96
+ margin-top: 26px;
97
+ margin-bottom: 8px;
98
+ padding-inline: 18px;
99
+ }
100
+ body.readyMode #app:has(.readyDecision.extractionReady) {
101
+ padding-top: 124px;
102
+ }
103
+
104
+ /* Permission ------------------------------------------------------------ */
105
+ .mvpConsentStage {
106
+ display: flex !important;
36
107
  flex-direction: column;
37
108
  align-items: center;
38
- color: var(--echo-ink-text);
39
- text-align: center;
40
- }
41
- .mvpConsentEcho {
42
- width: clamp(82px, 9vw, 112px);
43
- height: auto;
44
- margin-bottom: 30px;
45
- filter: drop-shadow(0 18px 22px rgba(26,58,143,0.18));
109
+ justify-content: flex-start;
46
110
  }
111
+ .mvpConsent { display: grid; width: min(720px, 100%); gap: 18px; color: var(--echo-ink-text); text-align: center; }
112
+ .mvpConsentHero { display: flex; flex-direction: column; align-items: center; gap: 12px; }
113
+ .mvpConsentPitch { min-width: 0; }
114
+ .mvpConsentEcho { width: 86px; height: auto; flex: 0 0 auto; margin: 0; filter: drop-shadow(0 12px 18px rgba(26,58,143,0.16)); }
47
115
  .mvpKicker {
48
116
  margin: 0;
49
117
  color: var(--echo-ink-seal);
@@ -52,27 +120,59 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
52
120
  text-transform: uppercase;
53
121
  }
54
122
  .mvpConsent h2 {
55
- max-width: 560px;
56
- margin: 20px 0 0;
123
+ max-width: 660px;
124
+ margin: 12px auto 0;
57
125
  color: var(--echo-ink-text);
58
- font-size: clamp(42px, 4.3vw, 58px);
59
- font-weight: 500;
60
- line-height: 0.96;
126
+ font-size: clamp(40px, 4.2vw, 56px);
127
+ font-weight: 600;
128
+ line-height: 0.98;
61
129
  letter-spacing: -0.06em;
62
130
  }
63
131
  .mvpConsentIntro {
64
- max-width: 490px;
65
- margin: 38px 0 0;
132
+ max-width: 590px;
133
+ margin: 13px auto 0;
66
134
  color: var(--echo-ink-mute);
67
- font-size: clamp(16px, 2vw, 19px);
68
- line-height: 1.6;
135
+ font-size: clamp(15px, 1.5vw, 17px);
136
+ line-height: 1.55;
69
137
  }
70
- .mvpPrivacy {
71
- margin: 22px 0 0;
72
- color: var(--echo-ink-faint);
138
+ .mvpConsentTrustLine {
139
+ margin: 0;
140
+ color: var(--echo-ink-mute);
73
141
  font-size: 13px;
74
- line-height: 1.45;
142
+ line-height: 1.5;
143
+ text-align: center;
75
144
  }
145
+ .mvpConsentTrustLine strong { color: var(--echo-ink-text); }
146
+ .mvpReportPreview { overflow: hidden; border: 1px solid rgba(26,58,143,0.18); border-radius: 18px; background: rgba(255,255,255,0.84); box-shadow: 0 16px 36px -26px rgba(26,58,143,0.42); }
147
+ .mvpReportPreview header { display: flex; align-items: center; gap: 13px; border-bottom: 1px solid rgba(26,58,143,0.10); background: color-mix(in srgb, var(--echo-paper-white) 66%, var(--echo-note-blue) 34%); padding: 13px 15px; }
148
+ .mvpReportPreview header span,
149
+ .mvpReportPreview header small,
150
+ .mvpReportPreview header strong,
151
+ .mvpPreviewRow span,
152
+ .mvpPreviewRow small,
153
+ .mvpPreviewRow strong { display: block; }
154
+ .mvpReportPreview header small { color: var(--echo-ink-primary); font: 800 9px/1 var(--echo-font-mono); letter-spacing: 0.1em; text-transform: uppercase; }
155
+ .mvpReportPreview header strong { margin-top: 5px; color: var(--echo-ink-text); font-size: 15px; }
156
+ .mvpPreviewRow { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 10px; align-items: start; padding: 11px 15px; }
157
+ .mvpPreviewRow + .mvpPreviewRow { border-top: 1px solid rgba(26,58,143,0.08); }
158
+ .mvpPreviewRow .setupGlyph { width: 19px; height: 19px; color: #2c8f68; }
159
+ .mvpPreviewRow strong { color: var(--echo-ink-text); font-size: 13px; }
160
+ .mvpPreviewRow small { margin-top: 2px; color: var(--echo-ink-mute); font-size: 11px; line-height: 1.35; }
161
+ .mvpTrustCard { display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; gap: 12px; align-items: center; border: 1px solid rgba(44,143,104,0.28); border-radius: 15px; background: color-mix(in srgb, var(--echo-paper-white) 62%, var(--echo-note-mint) 38%); padding: 13px 15px; }
162
+ .mvpTrustIcon { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 50%; background: rgba(44,143,104,0.13); color: #257b59; }
163
+ .mvpTrustIcon .setupGlyph { width: 21px; height: 21px; }
164
+ .mvpTrustCard > span:nth-child(2),
165
+ .mvpTrustCard strong,
166
+ .mvpTrustCard small { display: block; }
167
+ .mvpTrustCard strong { color: var(--echo-ink-text); font-size: 13px; }
168
+ .mvpTrustCard small { margin-top: 3px; color: var(--echo-ink-mute); font-size: 12px; line-height: 1.4; }
169
+ .mvpTrustCard .dataHandlingLink { font-size: 11px; white-space: nowrap; }
170
+ .mvpNextPromise { margin: 0; color: var(--echo-ink-mute); font-size: 12px; line-height: 1.45; text-align: center; }
171
+ .mvpNextPromise strong { color: var(--echo-ink-primary); }
172
+ .mvpConsentFooter { display: flex; align-items: center; justify-content: center; gap: 18px; }
173
+ .mvpReadScope { max-width: 660px; color: var(--echo-ink-mute); font-size: 12px; line-height: 1.5; }
174
+ .mvpReadScope summary { color: var(--echo-ink-primary); font-weight: 800; cursor: pointer; }
175
+ .mvpReadScope p { margin: 8px 0 0; }
76
176
  .mvpConsentCheck {
77
177
  display: flex;
78
178
  max-width: 520px;
@@ -94,9 +194,9 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
94
194
  }
95
195
  .mvpPrimary {
96
196
  display: flex;
97
- width: min(500px, 100%);
197
+ width: min(620px, 100%);
98
198
  min-height: 58px;
99
- margin-top: 46px;
199
+ margin: 0 auto;
100
200
  padding: 0 24px;
101
201
  align-items: center;
102
202
  justify-content: space-between;
@@ -115,7 +215,7 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
115
215
  .mvpQuiet {
116
216
  display: block;
117
217
  width: fit-content;
118
- margin: 30px auto 0;
218
+ margin: 0;
119
219
  border: 0;
120
220
  background: transparent;
121
221
  color: var(--echo-ink-mute);
@@ -130,6 +230,19 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
130
230
  margin: 14px 0 0;
131
231
  color: var(--echo-ink-seal);
132
232
  font-size: 13px;
233
+ text-align: center;
234
+ }
235
+ .lifecycleResume code { border: 1px solid var(--echo-line-soft); border-radius: 5px; background: var(--echo-paper-soft); padding: 1px 5px; color: var(--echo-ink-primary); font-family: var(--echo-font-mono); }
236
+ .dataHandlingLink {
237
+ color: var(--echo-ink-primary);
238
+ font-weight: 700;
239
+ text-decoration: underline;
240
+ text-underline-offset: 3px;
241
+ }
242
+ .localAuthDataLink,
243
+ .readyDataLink {
244
+ margin: 10px 0 0;
245
+ font-size: 12px;
133
246
  }
134
247
 
135
248
  /* Local auth follows the public login surface ------------------------- */
@@ -138,9 +251,32 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
138
251
  }
139
252
  .localAuthStage,
140
253
  .localAuthWelcomeStage {
254
+ display: flex;
255
+ flex-direction: column;
256
+ align-items: center;
257
+ justify-content: flex-start;
141
258
  width: 100%;
142
259
  min-height: calc(100vh - clamp(56px, 10vw, 128px));
143
260
  }
261
+ .localAuthWelcomeStage .localAuthWelcome { margin-block: auto; }
262
+ body.readyMode #app.localAuthEmailStage {
263
+ display: flex;
264
+ flex-direction: column;
265
+ align-items: center;
266
+ justify-content: flex-start;
267
+ }
268
+ .localAuthWelcomeStage.localAuthEmailStage .localAuthWelcome {
269
+ margin: clamp(36px, 7vh, 64px) auto 0;
270
+ }
271
+ body.readyMode #app.localAuthPassphraseStage {
272
+ display: flex;
273
+ flex-direction: column;
274
+ align-items: center;
275
+ justify-content: flex-start;
276
+ }
277
+ .localAuthWelcomeStage.localAuthPassphraseStage .localAuthWelcome {
278
+ margin: clamp(24px, 5vh, 48px) auto 0;
279
+ }
144
280
  .localAuthWelcome {
145
281
  width: min(440px, 100%);
146
282
  gap: 14px;
@@ -185,13 +321,19 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
185
321
  }
186
322
  .localAuthEmailCapsule {
187
323
  min-height: 54px;
188
- grid-template-columns: minmax(0, 1fr) 44px;
324
+ grid-template-columns: minmax(0, 1fr) auto;
189
325
  padding: 5px 6px 5px 18px;
190
326
  }
191
327
  .localAuthEmailCapsule button {
192
- width: 42px;
328
+ width: auto;
329
+ min-width: 126px;
193
330
  height: 42px;
194
- font-size: 20px;
331
+ padding: 0 16px;
332
+ gap: 8px;
333
+ border-radius: 999px;
334
+ font-size: 12px;
335
+ font-weight: 750;
336
+ white-space: nowrap;
195
337
  }
196
338
  .localAuthSpinner {
197
339
  width: 15px;
@@ -262,6 +404,80 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
262
404
  justify-self: center;
263
405
  text-align: center;
264
406
  }
407
+ .localAuthVaultDeferNote {
408
+ margin: 0;
409
+ color: var(--echo-ink-mute);
410
+ font-size: 12px;
411
+ line-height: 1.45;
412
+ text-align: center;
413
+ }
414
+ .localAuthTextAction {
415
+ justify-self: center;
416
+ min-height: 36px;
417
+ padding: 0 8px;
418
+ border: 0;
419
+ background: transparent;
420
+ box-shadow: none;
421
+ color: var(--echo-blue);
422
+ font-size: 13px;
423
+ font-weight: 750;
424
+ text-decoration: underline;
425
+ text-underline-offset: 3px;
426
+ }
427
+ .localAuthTextAction:hover:not(:disabled) {
428
+ background: transparent;
429
+ box-shadow: none;
430
+ transform: none;
431
+ }
432
+ .localAuthRestartAction {
433
+ color: var(--echo-ink-mute);
434
+ font-weight: 650;
435
+ }
436
+ .localAuthDeferred {
437
+ min-height: 280px;
438
+ align-content: center;
439
+ }
440
+ .accountSwitchStage {
441
+ display: flex !important;
442
+ flex-direction: column;
443
+ align-items: center;
444
+ }
445
+ .accountSwitchConfirm {
446
+ display: grid;
447
+ width: min(520px, 100%);
448
+ gap: 18px;
449
+ color: var(--echo-ink-text);
450
+ }
451
+ .accountSwitchConfirm h2 {
452
+ margin: 0;
453
+ font-size: clamp(42px, 5vw, 58px);
454
+ font-weight: 650;
455
+ line-height: 1;
456
+ letter-spacing: -0.045em;
457
+ }
458
+ .accountSwitchConfirm > p {
459
+ margin: 0;
460
+ color: var(--echo-ink-mute);
461
+ font-size: 15px;
462
+ line-height: 1.55;
463
+ }
464
+ .accountSwitchConfirm > p strong { color: var(--echo-ink-text); }
465
+ .accountSwitchConfirm > .primary {
466
+ width: 100%;
467
+ min-height: 54px;
468
+ border-radius: 999px;
469
+ justify-content: center;
470
+ }
471
+ .flowBack {
472
+ width: fit-content;
473
+ min-height: 36px;
474
+ border: 0;
475
+ background: transparent;
476
+ padding: 0;
477
+ box-shadow: none;
478
+ color: var(--echo-ink-primary);
479
+ font-weight: 750;
480
+ }
265
481
 
266
482
  /* Reading --------------------------------------------------------------- */
267
483
  .scanLoading {
@@ -276,50 +492,79 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
276
492
  color: var(--echo-ink-text);
277
493
  text-align: center;
278
494
  }
279
- .mvpReadingAnimation {
280
- width: 176px !important;
281
- height: 176px !important;
495
+ .mvpReadingMascot {
496
+ display: block;
497
+ width: 150px;
498
+ height: 150px;
282
499
  margin: 0 auto 18px;
283
- border: 0;
284
- border-radius: 0;
285
- background: transparent;
286
- box-shadow: none;
287
- transform: none;
288
- }
289
- .mvpReading .scanMascotFrames {
290
- width: 100%;
291
- height: 100%;
292
- }
293
- .mvpReading .scanMascotFrame {
500
+ object-fit: contain;
294
501
  filter: none;
295
- animation-name: mvpScanFrame;
296
- animation-timing-function: steps(1, end);
297
- }
298
- @keyframes mvpScanFrame {
299
- 0%, 14.28% { opacity: 1; visibility: visible; }
300
- 14.29%, 100% { opacity: 0; visibility: hidden; }
301
502
  }
302
503
  .mvpReading h2 {
303
504
  margin: 0;
304
505
  color: var(--echo-ink-primary);
305
506
  font: 650 38px/1.05 var(--echo-font-script), cursive;
306
507
  }
307
- .mvpReading .scanCaption {
508
+ .mvpReadingCount {
509
+ min-height: 18px;
308
510
  margin: 13px 0 0;
309
- color: var(--echo-ink-faint);
310
- font: 500 12px/1.5 var(--echo-font-mono);
511
+ color: var(--echo-ink-mute);
512
+ font: 650 13px/1.4 var(--echo-font-mono);
513
+ }
514
+ .mvpReadingCount[hidden] {
515
+ display: block;
516
+ visibility: hidden;
311
517
  }
312
518
  .mvpReadingProgress {
313
519
  width: min(260px, 100%);
314
520
  height: 3px;
315
- margin: 18px 0 0;
521
+ margin: 8px 0 0;
316
522
  background: rgba(26,58,143,0.12);
317
523
  }
524
+ .reportMessageStage {
525
+ display: flex !important;
526
+ justify-content: center;
527
+ color: var(--echo-ink-text);
528
+ }
529
+ .reportMessage {
530
+ width: min(620px, 100%);
531
+ padding-top: clamp(48px, 10vh, 112px);
532
+ }
533
+ .reportMessage h2 {
534
+ margin: 0;
535
+ font-size: clamp(42px, 5vw, 58px);
536
+ font-weight: 650;
537
+ line-height: 1;
538
+ letter-spacing: -0.045em;
539
+ }
540
+ .reportMessage p {
541
+ margin: 16px 0 0;
542
+ color: var(--echo-ink-mute);
543
+ font-size: 16px;
544
+ line-height: 1.55;
545
+ }
546
+ .reportMessage code {
547
+ color: var(--echo-ink-primary);
548
+ font-family: var(--echo-font-mono);
549
+ }
550
+ .reportTechnical {
551
+ width: fit-content;
552
+ margin-top: 22px;
553
+ color: var(--echo-ink-faint);
554
+ font: 650 11px/1.5 var(--echo-font-mono);
555
+ }
556
+ .reportTechnical summary {
557
+ cursor: pointer;
558
+ text-decoration: underline;
559
+ text-underline-offset: 3px;
560
+ }
561
+ .reportTechnical code { display: block; margin-top: 8px; }
318
562
 
319
563
  /* Pricing copied from the public Echo habitat -------------------------- */
320
564
  .planGateStage {
321
- display: grid !important;
322
- place-items: start center;
565
+ display: flex !important;
566
+ flex-direction: column;
567
+ align-items: center;
323
568
  }
324
569
  .planGateDecision {
325
570
  width: 100%;
@@ -332,7 +577,7 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
332
577
  .mvpPricingIntro {
333
578
  display: block;
334
579
  width: min(960px, 100%);
335
- margin: 20px auto 30px;
580
+ margin: 8px auto 22px;
336
581
  text-align: center;
337
582
  }
338
583
  .mvpPricingIntro > span {
@@ -342,9 +587,9 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
342
587
  text-transform: uppercase;
343
588
  }
344
589
  .mvpPricingIntro h2 {
345
- margin: 10px 0 0;
590
+ margin: 0;
346
591
  color: var(--echo-ink-text);
347
- font-size: 4.6rem;
592
+ font-size: clamp(48px, 5vw, 64px);
348
593
  font-weight: 450;
349
594
  line-height: 0.92;
350
595
  letter-spacing: -0.07em;
@@ -401,10 +646,10 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
401
646
  min-height: 410px;
402
647
  margin: 0 auto;
403
648
  overflow: hidden;
404
- border: 1px solid color-mix(in srgb, var(--habitat-accent) 26%, white);
649
+ border: 0;
405
650
  border-radius: 34px;
406
651
  background: var(--habitat-bg);
407
- box-shadow: 0 28px 60px rgba(28,40,72,0.14);
652
+ box-shadow: none;
408
653
  }
409
654
  .mvpPlanHabitat[data-plan="pro"] {
410
655
  --habitat-bg: #eaf1ff;
@@ -648,9 +893,11 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
648
893
 
649
894
  /* Found sessions: one message, one next action -------------------------- */
650
895
  .readyDecision.extractionReady {
896
+ display: flex;
897
+ flex-direction: column;
651
898
  overflow: visible;
652
- width: min(920px, 100%);
653
- padding-top: 58px;
899
+ width: min(760px, 100%);
900
+ padding-top: 8px;
654
901
  border: 0;
655
902
  border-radius: 0;
656
903
  background: transparent;
@@ -658,32 +905,39 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
658
905
  }
659
906
  .readyDecision.extractionReady::before,
660
907
  .exHero::before { display: none; }
661
- .extractionReady .readyEyebrow { display: none; }
908
+ .extractionReady .readyEyebrow {
909
+ display: block;
910
+ order: -1;
911
+ margin: 18px 0 8px;
912
+ text-align: left;
913
+ }
662
914
  .extractionReady .readyHero {
663
- display: flex;
915
+ display: grid;
916
+ order: 0;
917
+ grid-template-columns: 54px minmax(0, 1fr);
664
918
  width: 100%;
665
- padding: 14px 0 0;
666
- flex-direction: column;
667
- align-items: center;
668
- gap: 16px;
919
+ padding: 0;
920
+ align-items: start;
921
+ gap: 18px;
669
922
  border: 0;
670
923
  background: transparent;
671
- text-align: center;
924
+ text-align: left;
672
925
  }
673
926
  .extractionReady .readyMascot {
674
- width: 82px;
927
+ width: 54px;
675
928
  height: auto;
676
- filter: drop-shadow(0 16px 22px rgba(26,58,143,0.16));
929
+ margin-top: 4px;
930
+ filter: drop-shadow(0 10px 16px rgba(26,58,143,0.14));
677
931
  }
678
932
  .extractionReady .readyHero .exCopy h2 {
679
- max-width: 760px;
933
+ max-width: 680px;
680
934
  color: var(--echo-ink-text) !important;
681
935
  -webkit-text-fill-color: var(--echo-ink-text);
682
936
  background: none;
683
- font-size: 4rem;
684
- font-weight: 450;
685
- line-height: 0.92;
686
- letter-spacing: -0.07em !important;
937
+ font-size: clamp(40px, 4.2vw, 54px);
938
+ font-weight: 500;
939
+ line-height: 0.98;
940
+ letter-spacing: -0.055em !important;
687
941
  }
688
942
  .extractionReady .readyHero .exCopy h2 strong {
689
943
  color: var(--echo-ink-primary);
@@ -691,25 +945,27 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
691
945
  font-weight: 650;
692
946
  }
693
947
  .extractionReady .readyHero .exSub {
694
- max-width: 590px;
695
- margin: 18px auto 0;
696
- font-size: 15px;
697
- line-height: 1.5;
698
- text-align: center;
948
+ max-width: 620px;
949
+ margin: 10px 0 0;
950
+ font-size: 14px;
951
+ line-height: 1.45;
952
+ text-align: left;
699
953
  }
700
954
  .extractionReady .proofStrip {
955
+ order: 1;
701
956
  width: fit-content;
702
- min-height: 36px;
703
- margin: 20px auto 0;
957
+ min-height: 30px;
958
+ margin: 14px 0 0 72px;
704
959
  border: 0;
705
960
  border-radius: 999px;
706
961
  background: rgba(255,255,255,0.65);
707
- padding: 8px 14px;
708
- box-shadow: 0 6px 20px rgba(26,58,143,0.07);
962
+ padding: 5px 10px;
963
+ box-shadow: none;
709
964
  }
710
965
  .extractionReady .readyGo {
711
- width: min(560px, 100%);
712
- margin: 24px auto 0;
966
+ order: 3;
967
+ width: 100%;
968
+ margin: 16px auto 0;
713
969
  padding: 0;
714
970
  justify-items: center;
715
971
  background: transparent;
@@ -721,36 +977,72 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
721
977
  }
722
978
  .extractionReady .actions .primary {
723
979
  width: 100%;
724
- min-height: 60px;
980
+ min-height: 54px;
725
981
  border: 0;
726
982
  border-radius: 999px;
727
983
  box-shadow: 0 8px 0 color-mix(in srgb, var(--echo-ink-primary) 77%, black);
728
984
  font-size: 17px;
729
985
  }
730
986
  .extractionReady .skipHistoryButton {
731
- min-height: 44px !important;
987
+ min-height: 38px !important;
732
988
  border: 0;
733
989
  background: transparent;
734
990
  box-shadow: none;
735
991
  color: var(--echo-ink-mute);
736
992
  }
737
993
  .extractionReady .ctaMeta {
738
- margin-top: 14px;
994
+ margin-top: 11px;
739
995
  justify-content: center;
740
996
  color: var(--echo-ink-faint);
741
997
  font-size: 11px;
742
998
  }
999
+ .extractionReady .ctaMeta .dataHandlingLink { font-size: inherit; }
1000
+ .extractionReady .readyFoot { order: 4; }
1001
+ .billingCommitmentSlot {
1002
+ display: none;
1003
+ order: 2;
1004
+ width: calc(100% - 72px);
1005
+ margin: 12px 0 0 72px;
1006
+ }
1007
+ .billingCommitmentSlot.is-visible { display: block; }
1008
+ .billingCommitment {
1009
+ display: flex;
1010
+ flex-wrap: wrap;
1011
+ gap: 4px 14px;
1012
+ align-items: baseline;
1013
+ border: 0;
1014
+ border-left: 3px solid #2c8f68;
1015
+ border-radius: 0;
1016
+ background: transparent;
1017
+ padding: 3px 0 3px 12px;
1018
+ box-shadow: none;
1019
+ text-align: left;
1020
+ }
1021
+ .billingCommitment.is-canceled {
1022
+ border-left-color: #c4942a;
1023
+ background: transparent;
1024
+ box-shadow: none;
1025
+ }
1026
+ .billingCommitmentIdentity { display: flex; gap: 7px; align-items: baseline; }
1027
+ .billingCommitmentIdentity span {
1028
+ color: var(--echo-ink-accent-deep);
1029
+ font: 800 9px/1 var(--echo-font-mono);
1030
+ letter-spacing: 0.1em;
1031
+ text-transform: uppercase;
1032
+ }
1033
+ .billingCommitmentIdentity strong { color: var(--echo-ink-text); font-size: 13px; }
1034
+ .billingCommitmentFacts { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; color: var(--echo-ink-mute); font-size: 11px; }
1035
+ .billingCommitmentFacts b { color: var(--echo-ink-text); }
1036
+ .billingCommitment > p { flex-basis: 100%; margin: 0; color: var(--echo-ink-mute); font-size: 11px; font-weight: 600; line-height: 1.4; }
743
1037
  .extractionReady .readySettings {
744
1038
  display: flex;
745
- position: fixed;
746
- top: 18px;
747
- right: 22px;
748
- left: 22px;
749
- z-index: 20;
750
- width: auto;
751
- margin: 0;
1039
+ position: static;
1040
+ order: -2;
1041
+ z-index: auto;
1042
+ width: 100%;
1043
+ margin: 0 0 2px;
752
1044
  align-items: center;
753
- justify-content: space-between;
1045
+ justify-content: flex-end;
754
1046
  gap: 18px;
755
1047
  border: 0;
756
1048
  background: transparent;
@@ -762,10 +1054,10 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
762
1054
  gap: 7px;
763
1055
  border: 0;
764
1056
  border-radius: 999px;
765
- background: rgba(255,255,255,0.76);
766
- padding: 7px 10px 7px 12px;
767
- box-shadow: 0 6px 20px rgba(26,58,143,0.06);
768
- backdrop-filter: blur(12px);
1057
+ background: transparent;
1058
+ padding: 2px 0;
1059
+ box-shadow: none;
1060
+ backdrop-filter: none;
769
1061
  }
770
1062
  .extractionReady .readySettingLabel {
771
1063
  position: static;
@@ -796,6 +1088,17 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
796
1088
  .extractionReady .setupPlanConfirmedCopy span { display: none; }
797
1089
  .extractionReady .setupAccountCopy,
798
1090
  .extractionReady .setupPlanConfirmedCopy { flex: 0 1 auto; }
1091
+ .extractionReady .setupPlanConfirmed.has-lifecycle .setupPlanConfirmedCopy > span {
1092
+ display: block;
1093
+ max-width: 520px;
1094
+ margin-top: 3px;
1095
+ color: var(--echo-ink-mute);
1096
+ font-size: 11px;
1097
+ line-height: 1.35;
1098
+ }
1099
+ body:has(.billingCommitmentSlot.is-visible) .extractionReady .setupPlanConfirmed.has-lifecycle .setupPlanConfirmedCopy > span {
1100
+ display: none;
1101
+ }
799
1102
  .extractionReady .setupAccountCopy strong,
800
1103
  .extractionReady .setupPlanConfirmedCopy strong {
801
1104
  color: var(--echo-ink-mute);
@@ -808,11 +1111,16 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
808
1111
  font-size: 11px;
809
1112
  }
810
1113
  .extractionReady .readySettings.is-checkout-pending {
1114
+ top: 132px;
1115
+ right: auto;
1116
+ left: 50%;
1117
+ width: min(760px, calc(100vw - 44px));
811
1118
  align-items: flex-start;
1119
+ transform: translateX(-50%);
812
1120
  }
813
1121
  .extractionReady .readySettings.is-checkout-pending .readyPlanSetting {
814
1122
  display: block;
815
- width: min(680px, calc(100vw - 260px));
1123
+ width: 100%;
816
1124
  overflow: visible;
817
1125
  border: 0;
818
1126
  border-radius: 0;
@@ -835,56 +1143,59 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
835
1143
  }
836
1144
  .extractionReady .setupPlanCheckout {
837
1145
  display: grid;
838
- grid-template-columns: minmax(0, 1fr) auto;
839
- grid-template-rows: auto auto;
840
- column-gap: 18px;
841
- row-gap: 2px;
1146
+ grid-template-columns: 1fr;
1147
+ gap: 16px;
842
1148
  align-items: center;
843
1149
  margin: 0;
844
- overflow: hidden;
845
- border: 1px solid rgba(26,58,143,0.16);
846
- border-radius: 18px;
847
- background: rgba(255,255,255,0.94);
848
- padding: 13px 15px 12px 18px;
849
- box-shadow: 0 12px 32px rgba(26,58,143,0.12);
850
- backdrop-filter: blur(16px);
1150
+ overflow: visible;
1151
+ border: 0;
1152
+ border-radius: 0;
1153
+ background: transparent;
1154
+ padding: 0;
1155
+ box-shadow: none;
1156
+ backdrop-filter: none;
1157
+ }
1158
+ .setupPlanCheckout {
1159
+ width: min(760px, 100%);
1160
+ margin-inline: auto;
851
1161
  }
852
1162
  .extractionReady .setupPlanCheckout::before {
853
- display: block;
854
- position: absolute;
855
- inset: 0 auto 0 0;
856
- width: 4px;
857
- height: auto;
858
- background: var(--echo-ink-primary);
859
- opacity: 1;
1163
+ display: none;
860
1164
  }
861
1165
  .extractionReady .setupPlanCheckout .setupPlanIntro {
862
1166
  min-width: 0;
863
1167
  padding: 0;
864
1168
  }
865
1169
  .extractionReady .setupPlanCheckout .setupPlanIntro h3 {
866
- font-size: 16px;
1170
+ font-size: 25px;
867
1171
  line-height: 1.2;
868
1172
  letter-spacing: -0.01em;
869
1173
  }
870
1174
  .extractionReady .setupPlanCheckout .setupPlanIntro p {
871
- margin-top: 3px;
872
- font-size: 11px;
873
- line-height: 1.35;
1175
+ max-width: 620px;
1176
+ margin-top: 7px;
1177
+ font-size: 14px;
1178
+ line-height: 1.5;
874
1179
  }
875
- .extractionReady .setupPlanCheckout > .primary {
876
- grid-column: 2;
877
- grid-row: 1 / span 2;
878
- min-height: 42px;
879
- border-radius: 999px;
880
- padding: 0 18px;
881
- white-space: nowrap;
882
- box-shadow: 0 7px 18px rgba(26,58,143,0.18);
1180
+ .checkoutState { display: flex; align-items: center; gap: 8px; color: var(--echo-ink-primary); font: 800 11px/1 var(--echo-font-mono); letter-spacing: 0.08em; text-transform: uppercase; }
1181
+ .checkoutStateDot { width: 9px; height: 9px; border-radius: 50%; background: #e2ad34; box-shadow: 0 0 0 5px rgba(226,173,52,0.14); }
1182
+ .checkoutCommitment { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 0; }
1183
+ .checkoutCommitment > div { border: 0; border-radius: 12px; background: rgba(247,249,255,0.82); padding: 11px 12px; }
1184
+ .checkoutCommitment dt { color: var(--echo-ink-faint); font: 800 9px/1 var(--echo-font-mono); letter-spacing: 0.08em; text-transform: uppercase; }
1185
+ .checkoutCommitment dd { margin: 6px 0 0; color: var(--echo-ink-text); font-size: 14px; font-weight: 800; }
1186
+ .checkoutActions { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; }
1187
+ .checkoutActions button { min-height: 48px; border-radius: 999px; }
1188
+ .checkoutActions .secondary { border: 1px solid rgba(26,58,143,0.18); background: white; color: var(--echo-ink-primary); box-shadow: none; }
1189
+ .checkoutPollStatus { margin: -4px 0 0; color: var(--echo-ink-mute); font-size: 12px; }
1190
+ .checkoutPollStatus::before { content: "↻"; margin-right: 6px; color: var(--echo-ink-primary); font-weight: 900; }
1191
+ .extractionReady .setupPlanCheckout .dataHandlingLink {
1192
+ font-size: 10px;
1193
+ font-weight: 700;
883
1194
  }
884
1195
  .extractionReady .setupPlanCheckout .setupPlanFoot {
885
- justify-content: flex-start;
886
- gap: 8px;
887
- margin-top: 1px;
1196
+ justify-content: space-between;
1197
+ gap: 12px;
1198
+ margin-top: 0;
888
1199
  }
889
1200
  .extractionReady .setupPlanCheckout .setupPlanFoot .textButton {
890
1201
  min-height: 0;
@@ -906,11 +1217,14 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
906
1217
  .extractionReady .readyExplain { text-align: center; }
907
1218
  .extractionReady .readyExplain > p,
908
1219
  .extractionReady .readySteps { display: none; }
1220
+ .extractionReady .readyExplain > .readyDataLink { display: block; }
909
1221
 
910
1222
  /* Session review is a full canvas, not a floating legacy card ---------- */
911
1223
  .sessionPicker {
912
- width: 100vw;
913
- max-width: none;
1224
+ /* Percentage width follows the viewport's layout area, excluding classic
1225
+ scrollbars on Linux. 100vw includes that scrollbar and overflows. */
1226
+ width: 100%;
1227
+ max-width: 100%;
914
1228
  height: 100vh;
915
1229
  max-height: none;
916
1230
  margin: 0;
@@ -1032,8 +1346,96 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
1032
1346
  box-shadow: none;
1033
1347
  }
1034
1348
  .exHeroActive .extractEndRow { border: 0; background: transparent; padding: 0; }
1349
+ .exActivity {
1350
+ margin: 0;
1351
+ color: var(--echo-ink-mute);
1352
+ font-size: 13px;
1353
+ line-height: 1.45;
1354
+ }
1355
+ .resultSummary {
1356
+ margin: 18px 0 0;
1357
+ color: var(--echo-ink-mute);
1358
+ font: 700 12px/1.5 var(--echo-font-mono);
1359
+ }
1360
+
1361
+ .recallPromptPrimary {
1362
+ margin-top: 24px;
1363
+ border: 0;
1364
+ background: color-mix(in srgb, var(--echo-paper-white) 86%, var(--echo-note-blue) 14%);
1365
+ box-shadow: none;
1366
+ }
1367
+ .recallAgentPrimary {
1368
+ min-width: 180px;
1369
+ border-color: var(--echo-ink-primary);
1370
+ background: var(--echo-ink-primary);
1371
+ color: white;
1372
+ }
1373
+ .recallMore {
1374
+ margin-top: 18px;
1375
+ border-top: 1px solid var(--echo-line-soft);
1376
+ padding-top: 14px;
1377
+ }
1378
+ .recallMore > summary {
1379
+ width: fit-content;
1380
+ color: var(--echo-ink-mute);
1381
+ font: 700 11px/1.4 var(--echo-font-mono);
1382
+ cursor: pointer;
1383
+ }
1384
+ .recallMore .recallPromptList { margin-top: 14px; }
1385
+ .tryCard.is-recalled {
1386
+ border-color: rgba(44,143,104,0.42);
1387
+ border-left-color: #257b59;
1388
+ background: color-mix(in srgb, var(--echo-paper-white) 90%, #e7f5ed 10%);
1389
+ }
1390
+ .tryCard.is-recalled .launchStatus {
1391
+ color: #257b59;
1392
+ font-weight: 750;
1393
+ }
1394
+ .audit-memory-bridge {
1395
+ max-width: 680px;
1396
+ margin: 0 auto 22px;
1397
+ color: var(--echo-ink-mute);
1398
+ font-size: 15px;
1399
+ line-height: 1.55;
1400
+ }
1401
+ .resultTop { border-top: 0; padding-top: 0; }
1402
+ .tryCard,
1403
+ .tryCard.is-recalled {
1404
+ max-width: none;
1405
+ border: 0;
1406
+ border-radius: 0;
1407
+ background: transparent;
1408
+ padding: 0;
1409
+ box-shadow: none;
1410
+ }
1411
+ .lifecycleState { align-self: start; width: min(760px, 100%); margin: 0 auto; border: 0; border-radius: 0; background: transparent; padding: 0; box-shadow: none; }
1412
+ .lifecycleStatus { display: flex; align-items: center; gap: 9px; color: var(--echo-ink-primary); font: 800 10px/1 var(--echo-font-mono); letter-spacing: 0.08em; text-transform: uppercase; }
1413
+ .lifecycleStatus > span { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; background: var(--echo-note-blue); }
1414
+ .lifecycleStatus .setupGlyph { width: 18px; height: 18px; }
1415
+ .lifecycleState > h2,
1416
+ .lifecycleIntro h2 { max-width: 650px; margin: 0; color: var(--echo-ink-text); font-size: clamp(34px, 4vw, 48px); font-weight: 650; line-height: 1.02; letter-spacing: -0.045em; }
1417
+ .lifecycleIntro { border-bottom: 0; padding-bottom: 0; }
1418
+ .lifecycleState > p,
1419
+ .lifecycleIntro > p:last-child { margin: 15px 0 0; max-width: 630px; color: var(--echo-ink-mute); font-size: 15px; line-height: 1.55; }
1420
+ .lifecycleIntro .utilityEyebrow { margin-top: 22px; }
1421
+ .lifecycleFacts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; margin-top: 22px; }
1422
+ .lifecycleFacts > span { border: 1px solid rgba(26,58,143,0.10); border-radius: 12px; background: var(--echo-paper-soft); padding: 11px 12px; }
1423
+ .lifecycleFacts small,
1424
+ .lifecycleFacts strong { display: block; }
1425
+ .lifecycleFacts small { color: var(--echo-ink-faint); font: 800 8px/1 var(--echo-font-mono); letter-spacing: 0.08em; text-transform: uppercase; }
1426
+ .lifecycleFacts strong { margin-top: 6px; color: var(--echo-ink-text); font-size: 13px; }
1427
+ .lifecyclePaused .tryCard { width: 100%; max-width: none; margin-top: 20px; }
1428
+ .lifecyclePaused .tryCard > .tryTitle { font-size: clamp(30px, 3.4vw, 42px); }
1429
+ .lifecycleResume { display: block; margin-top: 16px; border-top: 0; padding-top: 0; color: var(--echo-ink-mute); font-size: 12px; line-height: 1.5; }
1430
+ .lifecycleResume strong { color: var(--echo-ink-text); font-size: 13px; }
1035
1431
 
1036
1432
  @media (max-width: 860px) {
1433
+ .mvpConsentHero { grid-template-columns: 1fr; }
1434
+ .mvpConsentPitch { text-align: center; }
1435
+ .mvpConsentPitch .mvpKicker { margin-inline: auto; }
1436
+ .mvpConsentPitch .mvpConsentIntro { margin-right: auto; margin-left: auto; }
1437
+ .mvpTrustCard { grid-template-columns: 38px minmax(0, 1fr); }
1438
+ .mvpTrustCard .dataHandlingLink { grid-column: 2; }
1037
1439
  .mvpPlanHabitat {
1038
1440
  grid-template-columns: 1fr;
1039
1441
  min-height: 0;
@@ -1044,7 +1446,7 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
1044
1446
  .mvpHabitatEcho { width: min(66%, 360px); }
1045
1447
  .extractionReady .readySettings { flex-direction: column; gap: 9px; }
1046
1448
  body.readyMode:has(.readySettings.is-checkout-pending) main {
1047
- padding-top: 190px;
1449
+ padding-top: 520px;
1048
1450
  }
1049
1451
  .extractionReady .readySettings.is-checkout-pending .readyAccountSetting { display: none; }
1050
1452
  .extractionReady .readySettings.is-checkout-pending .readyPlanSetting { width: 100%; }
@@ -1052,11 +1454,8 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
1052
1454
  grid-template-columns: 1fr;
1053
1455
  gap: 9px;
1054
1456
  }
1055
- .extractionReady .setupPlanCheckout > .primary {
1056
- grid-column: 1;
1057
- grid-row: auto;
1058
- width: 100%;
1059
- }
1457
+ .checkoutCommitment,
1458
+ .checkoutActions { grid-template-columns: 1fr; }
1060
1459
  .exHero.exHeroActive { grid-template-columns: 1fr; }
1061
1460
  .exHeroActive .exPlate { min-height: 440px; }
1062
1461
  }
@@ -1064,6 +1463,15 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
1064
1463
  body.readyMode main,
1065
1464
  body.scanMode main,
1066
1465
  body.extractMode main { padding: 22px 14px 38px; }
1466
+ .setupJourney { margin-bottom: 24px; }
1467
+ .mvpConsentFooter { align-items: stretch; flex-direction: column; }
1468
+ .mvpConsentFooter .mvpQuiet { align-self: flex-start; }
1469
+ .lifecycleFacts { grid-template-columns: 1fr; }
1470
+ .setupJourneyStep > b { font-size: 7px; letter-spacing: 0; }
1471
+ .setupJourneyStep:not(:last-child)::after {
1472
+ left: calc(50% + 14px);
1473
+ width: calc(100% - 28px);
1474
+ }
1067
1475
  .mvpConsent h2 { font-size: 42px; }
1068
1476
  .mvpPricingIntro h2 { font-size: 3.5rem; }
1069
1477
  .mvpPlanTabs { margin-bottom: 16px; }
@@ -1072,7 +1480,17 @@ export const SETUP_PAGE_STYLES_MVP = String.raw `
1072
1480
  .mvpHabitatScene { min-height: 310px; }
1073
1481
  .mvpHabitatDetails h3 { font-size: 3.25rem; }
1074
1482
  .mvpPlanPrice strong { font-size: 48px; }
1075
- .extractionReady .readyHero .exCopy h2 { font-size: 3.5rem; }
1483
+ .extractionReady .readyHero {
1484
+ grid-template-columns: 44px minmax(0, 1fr);
1485
+ gap: 12px;
1486
+ }
1487
+ .extractionReady .readyMascot { width: 44px; }
1488
+ .extractionReady .readyHero .exCopy h2 { font-size: 40px; }
1489
+ .extractionReady .proofStrip,
1490
+ .billingCommitmentSlot {
1491
+ width: 100%;
1492
+ margin-left: 0;
1493
+ }
1076
1494
  .sessionPickerShell { width: calc(100% - 18px); }
1077
1495
  .sessionPickerHead h2 { font-size: 42px; }
1078
1496
  }