@echomem/mcp 1.4.21 → 1.4.23

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,1079 @@
1
+ // Final MVP onboarding layer. It deliberately mirrors the public Echo pricing,
2
+ // login, and report surfaces instead of introducing another local-only design system.
3
+ export const SETUP_PAGE_STYLES_MVP = String.raw `
4
+ body.readyMode,
5
+ body.scanMode,
6
+ body.extractMode {
7
+ background:
8
+ radial-gradient(circle, rgba(26,58,143,0.12) 0 1.2px, transparent 1.5px) 0 0 / 22px 22px,
9
+ var(--echo-paper-canvas);
10
+ }
11
+ body.readyMode main,
12
+ body.scanMode main,
13
+ body.extractMode main {
14
+ width: 100%;
15
+ min-height: 100vh;
16
+ margin: 0;
17
+ padding: clamp(28px, 5vw, 64px) clamp(18px, 5vw, 64px);
18
+ }
19
+ main > header { display: none; }
20
+ #app.state { color: transparent; }
21
+ body.readyMode #app,
22
+ body.scanMode #app,
23
+ body.extractMode #app {
24
+ width: 100%;
25
+ min-height: calc(100vh - clamp(56px, 10vw, 128px));
26
+ }
27
+
28
+ /* Permission ------------------------------------------------------------ */
29
+ .mvpConsentStage {
30
+ display: grid !important;
31
+ place-items: center;
32
+ }
33
+ .mvpConsent {
34
+ display: flex;
35
+ width: min(620px, 100%);
36
+ flex-direction: column;
37
+ 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));
46
+ }
47
+ .mvpKicker {
48
+ margin: 0;
49
+ color: var(--echo-ink-seal);
50
+ font: 700 10px/1 var(--echo-font-mono);
51
+ letter-spacing: 0.18em;
52
+ text-transform: uppercase;
53
+ }
54
+ .mvpConsent h2 {
55
+ max-width: 560px;
56
+ margin: 20px 0 0;
57
+ color: var(--echo-ink-text);
58
+ font-size: clamp(42px, 4.3vw, 58px);
59
+ font-weight: 500;
60
+ line-height: 0.96;
61
+ letter-spacing: -0.06em;
62
+ }
63
+ .mvpConsentIntro {
64
+ max-width: 490px;
65
+ margin: 38px 0 0;
66
+ color: var(--echo-ink-mute);
67
+ font-size: clamp(16px, 2vw, 19px);
68
+ line-height: 1.6;
69
+ }
70
+ .mvpPrivacy {
71
+ margin: 22px 0 0;
72
+ color: var(--echo-ink-faint);
73
+ font-size: 13px;
74
+ line-height: 1.45;
75
+ }
76
+ .mvpConsentCheck {
77
+ display: flex;
78
+ max-width: 520px;
79
+ margin: 30px 0 0;
80
+ align-items: flex-start;
81
+ gap: 11px;
82
+ color: var(--echo-ink-mute);
83
+ font-size: 14px;
84
+ line-height: 1.4;
85
+ text-align: left;
86
+ cursor: pointer;
87
+ }
88
+ .mvpConsentCheck input {
89
+ width: 19px;
90
+ height: 19px;
91
+ margin: 0;
92
+ flex: 0 0 19px;
93
+ accent-color: var(--echo-ink-primary);
94
+ }
95
+ .mvpPrimary {
96
+ display: flex;
97
+ width: min(500px, 100%);
98
+ min-height: 58px;
99
+ margin-top: 46px;
100
+ padding: 0 24px;
101
+ align-items: center;
102
+ justify-content: space-between;
103
+ border: 0;
104
+ border-radius: 999px;
105
+ background: var(--echo-ink-primary);
106
+ box-shadow: 0 7px 0 color-mix(in srgb, var(--echo-ink-primary) 77%, black);
107
+ color: white;
108
+ font-size: 16px;
109
+ font-weight: 700;
110
+ }
111
+ .mvpPrimary:disabled {
112
+ box-shadow: 0 5px 0 #aeb3c6;
113
+ opacity: 0.48;
114
+ }
115
+ .mvpQuiet {
116
+ display: block;
117
+ width: fit-content;
118
+ margin: 30px auto 0;
119
+ border: 0;
120
+ background: transparent;
121
+ color: var(--echo-ink-mute);
122
+ box-shadow: none;
123
+ font-size: 15px;
124
+ font-weight: 700;
125
+ text-decoration: underline;
126
+ text-underline-offset: 3px;
127
+ }
128
+ .mvpConsent .consentFine {
129
+ min-height: 20px;
130
+ margin: 14px 0 0;
131
+ color: var(--echo-ink-seal);
132
+ font-size: 13px;
133
+ }
134
+
135
+ /* Local auth follows the public login surface ------------------------- */
136
+ body.readyMode:has(.localAuthWelcome) {
137
+ background: var(--echo-paper-canvas);
138
+ }
139
+ .localAuthStage,
140
+ .localAuthWelcomeStage {
141
+ width: 100%;
142
+ min-height: calc(100vh - clamp(56px, 10vw, 128px));
143
+ }
144
+ .localAuthWelcome {
145
+ width: min(440px, 100%);
146
+ gap: 14px;
147
+ }
148
+ .localAuthWelcome .srOnly {
149
+ position: absolute;
150
+ width: 1px;
151
+ height: 1px;
152
+ padding: 0;
153
+ margin: -1px;
154
+ overflow: hidden;
155
+ clip: rect(0, 0, 0, 0);
156
+ white-space: nowrap;
157
+ border: 0;
158
+ }
159
+ .localAuthOrbScene {
160
+ width: 96px;
161
+ height: 112px;
162
+ margin-bottom: 8px;
163
+ }
164
+ .localAuthOrb {
165
+ width: 60px;
166
+ height: 60px;
167
+ }
168
+ .localAuthOrb::before,
169
+ .localAuthOrb::after { top: 26px; }
170
+ .localAuthOrb::before { left: 22px; }
171
+ .localAuthOrb::after { right: 22px; }
172
+ .localAuthWelcomeCopy { gap: 8px; }
173
+ .localAuthWelcomeCopy h2 {
174
+ font-size: 40px;
175
+ line-height: 1;
176
+ }
177
+ .localAuthWelcomeCopy p {
178
+ max-width: 390px;
179
+ font-size: 14px;
180
+ line-height: 1.5;
181
+ }
182
+ .localAuthWelcomeForm {
183
+ width: min(440px, 100%);
184
+ gap: 12px;
185
+ }
186
+ .localAuthEmailCapsule {
187
+ min-height: 54px;
188
+ grid-template-columns: minmax(0, 1fr) 44px;
189
+ padding: 5px 6px 5px 18px;
190
+ }
191
+ .localAuthEmailCapsule button {
192
+ width: 42px;
193
+ height: 42px;
194
+ font-size: 20px;
195
+ }
196
+ .localAuthSpinner {
197
+ width: 15px;
198
+ height: 15px;
199
+ border: 2px solid rgba(255,255,255,0.42);
200
+ border-top-color: white;
201
+ border-radius: 50%;
202
+ animation: localAuthSpin 700ms linear infinite;
203
+ }
204
+ @keyframes localAuthSpin { to { transform: rotate(360deg); } }
205
+ .localAuthConsent {
206
+ width: min(360px, calc(100% - 24px));
207
+ grid-template-columns: 16px minmax(0, 1fr);
208
+ gap: 9px;
209
+ font-size: 12px;
210
+ line-height: 1.5;
211
+ }
212
+ .localAuthConsent input {
213
+ width: 16px;
214
+ height: 16px;
215
+ }
216
+ .localAuthWelcomeForm .localAuthStatus {
217
+ width: min(360px, calc(100% - 24px));
218
+ justify-self: center;
219
+ text-align: center;
220
+ }
221
+ .localAuthOtpWelcome {
222
+ width: min(440px, 100%);
223
+ gap: 14px;
224
+ }
225
+ .localAuthOtpForm { width: 100%; gap: 12px; }
226
+ .localAuthOtpForm .localAuthStatus:not(.is-error),
227
+ .localAuthPassphraseForm .localAuthStatus:not(.is-error) { display: none; }
228
+ .localAuthOtpCells { gap: 8px; }
229
+ .localAuthOtpCells input {
230
+ min-height: 52px;
231
+ aspect-ratio: auto;
232
+ border-radius: 10px;
233
+ font-size: 22px;
234
+ }
235
+ .localAuthVerifyWide,
236
+ .localAuthBackWide,
237
+ .localAuthPassphraseSubmit {
238
+ width: 100%;
239
+ min-height: 44px;
240
+ border-radius: 999px;
241
+ justify-content: center;
242
+ }
243
+ .localAuthPassphraseWelcome { width: min(440px, 100%); }
244
+ .localAuthPassphraseWelcome .localAuthWelcomeCopy p { max-width: 420px; }
245
+ .localAuthPassphraseForm { width: 100%; gap: 12px; }
246
+ .localAuthPassphraseForm .localAuthField { gap: 0; }
247
+ .localAuthPassphraseForm .localAuthField > span {
248
+ position: absolute;
249
+ width: 1px;
250
+ height: 1px;
251
+ overflow: hidden;
252
+ clip: rect(0 0 0 0);
253
+ }
254
+ .localAuthPassphraseForm .localAuthField input {
255
+ min-height: 52px;
256
+ border: 1px solid var(--echo-glass-border-strong);
257
+ border-radius: 12px;
258
+ background: var(--echo-paper-white);
259
+ box-shadow: var(--echo-shadow-soft);
260
+ }
261
+ .localAuthPassphraseForm .localAuthStatus {
262
+ justify-self: center;
263
+ text-align: center;
264
+ }
265
+
266
+ /* Reading --------------------------------------------------------------- */
267
+ .scanLoading {
268
+ display: grid !important;
269
+ place-items: center;
270
+ }
271
+ .mvpReading {
272
+ display: flex;
273
+ width: min(460px, 100%);
274
+ flex-direction: column;
275
+ align-items: center;
276
+ color: var(--echo-ink-text);
277
+ text-align: center;
278
+ }
279
+ .mvpReadingAnimation {
280
+ width: 176px !important;
281
+ height: 176px !important;
282
+ 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 {
294
+ 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
+ }
302
+ .mvpReading h2 {
303
+ margin: 0;
304
+ color: var(--echo-ink-primary);
305
+ font: 650 38px/1.05 var(--echo-font-script), cursive;
306
+ }
307
+ .mvpReading .scanCaption {
308
+ margin: 13px 0 0;
309
+ color: var(--echo-ink-faint);
310
+ font: 500 12px/1.5 var(--echo-font-mono);
311
+ }
312
+ .mvpReadingProgress {
313
+ width: min(260px, 100%);
314
+ height: 3px;
315
+ margin: 18px 0 0;
316
+ background: rgba(26,58,143,0.12);
317
+ }
318
+
319
+ /* Pricing copied from the public Echo habitat -------------------------- */
320
+ .planGateStage {
321
+ display: grid !important;
322
+ place-items: start center;
323
+ }
324
+ .planGateDecision {
325
+ width: 100%;
326
+ color: var(--echo-ink-text);
327
+ text-align: left;
328
+ }
329
+ .mvpPricing {
330
+ width: 100%;
331
+ }
332
+ .mvpPricingIntro {
333
+ display: block;
334
+ width: min(960px, 100%);
335
+ margin: 20px auto 30px;
336
+ text-align: center;
337
+ }
338
+ .mvpPricingIntro > span {
339
+ color: var(--echo-ink-seal);
340
+ font: 700 10px/1 var(--echo-font-mono);
341
+ letter-spacing: 0.18em;
342
+ text-transform: uppercase;
343
+ }
344
+ .mvpPricingIntro h2 {
345
+ margin: 10px 0 0;
346
+ color: var(--echo-ink-text);
347
+ font-size: 4.6rem;
348
+ font-weight: 450;
349
+ line-height: 0.92;
350
+ letter-spacing: -0.07em;
351
+ }
352
+ .mvpPricingDiscovery {
353
+ margin: 18px 0 0;
354
+ color: var(--echo-ink-mute);
355
+ font-size: 15px;
356
+ }
357
+ .mvpPricingDiscovery strong { color: var(--echo-ink-primary); }
358
+ .mvpPlanTabs {
359
+ display: grid;
360
+ grid-template-columns: repeat(3, minmax(0, 1fr));
361
+ width: min(640px, 100%);
362
+ margin: 0 auto 30px;
363
+ padding: 6px;
364
+ border: 1px solid rgba(26,58,143,0.18);
365
+ border-radius: 999px;
366
+ background: rgba(255,255,255,0.75);
367
+ box-shadow: 0 9px 25px rgba(34,45,74,0.08);
368
+ }
369
+ .mvpPlanTab {
370
+ display: flex;
371
+ min-height: 48px;
372
+ padding: 0 18px;
373
+ align-items: center;
374
+ justify-content: center;
375
+ gap: 9px;
376
+ border: 0;
377
+ border-radius: 999px;
378
+ background: transparent;
379
+ box-shadow: none;
380
+ color: var(--echo-ink-mute);
381
+ cursor: pointer;
382
+ font: 650 16px/1 var(--echo-font-body);
383
+ }
384
+ .mvpPlanTab b {
385
+ font: 650 12px/1 var(--echo-font-mono);
386
+ opacity: 0.66;
387
+ }
388
+ .mvpPlanTab[aria-selected="true"] {
389
+ background: white;
390
+ color: var(--echo-ink-primary);
391
+ box-shadow: 0 5px 14px rgba(31,61,132,0.13);
392
+ transform: translateY(-1px);
393
+ }
394
+ .mvpPlanHabitat {
395
+ --habitat-bg: #fff7e6;
396
+ --habitat-sky: #ddf3ff;
397
+ --habitat-accent: #d89a1c;
398
+ display: grid;
399
+ grid-template-columns: minmax(0, 1.04fr) minmax(360px, 0.96fr);
400
+ width: min(980px, 100%);
401
+ min-height: 410px;
402
+ margin: 0 auto;
403
+ overflow: hidden;
404
+ border: 1px solid color-mix(in srgb, var(--habitat-accent) 26%, white);
405
+ border-radius: 34px;
406
+ background: var(--habitat-bg);
407
+ box-shadow: 0 28px 60px rgba(28,40,72,0.14);
408
+ }
409
+ .mvpPlanHabitat[data-plan="pro"] {
410
+ --habitat-bg: #eaf1ff;
411
+ --habitat-sky: #c9e6ff;
412
+ --habitat-accent: #2446a8;
413
+ }
414
+ .mvpPlanHabitat[data-plan="power"] {
415
+ --habitat-bg: #fff1c7;
416
+ --habitat-sky: #ffe2d5;
417
+ --habitat-accent: #a6402d;
418
+ }
419
+ .mvpHabitatScene {
420
+ position: relative;
421
+ min-height: 410px;
422
+ overflow: hidden;
423
+ background:
424
+ radial-gradient(circle at 23% 18%, rgba(255,255,255,0.88) 0 8%, transparent 24%),
425
+ linear-gradient(158deg, var(--habitat-sky), var(--habitat-bg) 65%);
426
+ isolation: isolate;
427
+ }
428
+ .mvpHabitatScene::before {
429
+ position: absolute;
430
+ inset: 0;
431
+ z-index: -2;
432
+ background-image: radial-gradient(circle, color-mix(in srgb, var(--habitat-accent) 23%, transparent) 1.2px, transparent 1.4px);
433
+ background-size: 22px 22px;
434
+ content: "";
435
+ opacity: 0.35;
436
+ }
437
+ .mvpHabitatScene::after {
438
+ position: absolute;
439
+ right: -5%;
440
+ bottom: -18%;
441
+ left: -5%;
442
+ z-index: -1;
443
+ height: 49%;
444
+ border-top: 1px solid color-mix(in srgb, var(--habitat-accent) 18%, transparent);
445
+ background: color-mix(in srgb, var(--habitat-bg) 78%, white);
446
+ content: "";
447
+ transform: skewY(-2deg);
448
+ }
449
+ .mvpHabitatWindow {
450
+ position: absolute;
451
+ top: 11%;
452
+ left: 10%;
453
+ width: 30%;
454
+ aspect-ratio: 1 / 1.28;
455
+ border: 8px solid rgba(255,255,255,0.8);
456
+ border-radius: 90px 90px 20px 20px;
457
+ background: linear-gradient(180deg, white, var(--habitat-sky));
458
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--habitat-accent) 14%, transparent), 0 14px 30px rgba(32,46,78,0.08);
459
+ }
460
+ .mvpHabitatShelf {
461
+ position: absolute;
462
+ top: 31%;
463
+ right: 8%;
464
+ display: flex;
465
+ width: 31%;
466
+ height: 12%;
467
+ padding: 0 9%;
468
+ align-items: flex-end;
469
+ gap: 5px;
470
+ border-bottom: 8px solid color-mix(in srgb, var(--habitat-accent) 50%, #754f31);
471
+ }
472
+ .mvpHabitatShelf i {
473
+ display: block;
474
+ width: 15%;
475
+ height: 54%;
476
+ border-radius: 3px 3px 0 0;
477
+ background: var(--habitat-accent);
478
+ transform: rotate(-3deg);
479
+ }
480
+ .mvpHabitatShelf i:nth-child(2) { height: 77%; background: #f1b84a; transform: rotate(2deg); }
481
+ .mvpHabitatShelf i:nth-child(3) { height: 66%; background: #68b9c4; }
482
+ .mvpHabitatShelf i:nth-child(4) { height: 88%; background: #f19a87; transform: rotate(3deg); }
483
+ .mvpHabitatShelf i:nth-child(5) { height: 61%; background: white; }
484
+ .mvpHabitatRug {
485
+ position: absolute;
486
+ right: 10%;
487
+ bottom: 8%;
488
+ left: 10%;
489
+ height: 24%;
490
+ border: 2px solid color-mix(in srgb, var(--habitat-accent) 18%, transparent);
491
+ border-radius: 50%;
492
+ background: color-mix(in srgb, var(--habitat-accent) 12%, white);
493
+ transform: rotate(-2deg);
494
+ }
495
+ .mvpHabitatEcho {
496
+ position: absolute;
497
+ bottom: 0;
498
+ left: 49%;
499
+ z-index: 2;
500
+ display: block;
501
+ width: min(62%, 310px);
502
+ height: auto;
503
+ filter: drop-shadow(0 20px 25px rgba(25,41,72,0.18));
504
+ object-fit: contain;
505
+ transform: translateX(-50%);
506
+ }
507
+ .mvpHabitatDetails {
508
+ display: flex;
509
+ padding: 32px 38px;
510
+ flex-direction: column;
511
+ justify-content: center;
512
+ background: rgba(255,255,255,0.7);
513
+ backdrop-filter: blur(12px);
514
+ }
515
+ .mvpPlanIdentity {
516
+ display: flex;
517
+ min-height: 26px;
518
+ align-items: center;
519
+ justify-content: space-between;
520
+ color: var(--habitat-accent);
521
+ font: 700 10px/1 var(--echo-font-mono);
522
+ letter-spacing: 0.15em;
523
+ text-transform: uppercase;
524
+ }
525
+ .mvpPlanIdentity b {
526
+ padding: 8px 11px;
527
+ border-radius: 999px;
528
+ background: var(--echo-ink-primary);
529
+ color: white;
530
+ font-size: 8px;
531
+ letter-spacing: 0.08em;
532
+ }
533
+ .mvpHabitatDetails h3 {
534
+ margin: 14px 0 7px;
535
+ color: var(--echo-ink-text);
536
+ font-size: 3.5rem;
537
+ font-weight: 450;
538
+ line-height: 0.94;
539
+ letter-spacing: -0.06em;
540
+ }
541
+ .mvpPlanPromise {
542
+ min-height: 38px;
543
+ margin: 0;
544
+ color: var(--habitat-accent);
545
+ font: 650 22px/1.12 var(--echo-font-script), cursive;
546
+ }
547
+ .mvpPlanPrice {
548
+ display: flex;
549
+ margin-top: 18px;
550
+ align-items: flex-end;
551
+ gap: 13px;
552
+ }
553
+ .mvpPlanPrice strong {
554
+ color: var(--echo-ink-text);
555
+ font-size: 48px;
556
+ line-height: 0.9;
557
+ letter-spacing: -0.065em;
558
+ }
559
+ .mvpPlanPrice span {
560
+ padding-bottom: 5px;
561
+ color: var(--echo-ink-mute);
562
+ font-size: 13px;
563
+ line-height: 1.35;
564
+ }
565
+ .mvpPacksLabel {
566
+ margin: 17px 0 9px;
567
+ color: var(--echo-ink-faint);
568
+ font: 700 9px/1 var(--echo-font-mono);
569
+ letter-spacing: 0.15em;
570
+ text-transform: uppercase;
571
+ }
572
+ .mvpPlanFacts {
573
+ display: grid;
574
+ gap: 8px;
575
+ margin: 0;
576
+ padding: 0;
577
+ list-style: none;
578
+ }
579
+ .mvpPlanFacts li {
580
+ display: grid;
581
+ grid-template-columns: 18px 1fr;
582
+ gap: 9px;
583
+ color: var(--echo-ink-mute);
584
+ font-size: 14px;
585
+ line-height: 1.35;
586
+ }
587
+ .mvpPlanFacts .setupGlyph { width: 16px; height: 16px; color: #2f9d62; }
588
+ .mvpPlanCta {
589
+ display: flex;
590
+ width: 100%;
591
+ min-height: 52px;
592
+ margin: 20px 0 0;
593
+ padding: 0 24px;
594
+ align-items: center;
595
+ justify-content: space-between;
596
+ border: 0;
597
+ border-radius: 999px;
598
+ background: var(--echo-ink-primary);
599
+ box-shadow: 0 8px 0 color-mix(in srgb, var(--echo-ink-primary) 77%, black);
600
+ color: white;
601
+ font-size: 16px;
602
+ font-weight: 700;
603
+ }
604
+ .mvpPlanStatus {
605
+ min-height: 20px;
606
+ margin: 18px 0 0;
607
+ color: var(--echo-ink-mute);
608
+ font-size: 13px;
609
+ text-align: center;
610
+ }
611
+ .planGateAccount {
612
+ position: fixed;
613
+ top: 20px;
614
+ left: 22px;
615
+ z-index: 20;
616
+ width: auto;
617
+ max-width: min(360px, calc(100vw - 44px));
618
+ margin: 0;
619
+ border: 0;
620
+ }
621
+ .planGateAccount .setupAccountCard {
622
+ justify-content: start;
623
+ margin: 0;
624
+ border: 1px solid rgba(26,58,143,0.10);
625
+ border-radius: 999px;
626
+ background: rgba(255,255,255,0.78);
627
+ padding: 8px 10px 8px 14px;
628
+ box-shadow: 0 6px 20px rgba(26,58,143,0.07);
629
+ backdrop-filter: blur(12px);
630
+ }
631
+ .planGateAccount .setupAccountAvatar,
632
+ .planGateAccount .setupAccountCopy span { display: none; }
633
+ .planGateAccount .setupAccountCopy { flex: 0 1 auto; }
634
+ .planGateAccount .setupAccountCopy strong {
635
+ color: var(--echo-ink-mute);
636
+ font-size: 13px;
637
+ font-weight: 500;
638
+ }
639
+ .planGateAccount .setupAccountCopy small {
640
+ display: block;
641
+ margin-bottom: 2px;
642
+ color: var(--echo-ink-faint);
643
+ font: 700 8px/1 var(--echo-font-mono);
644
+ letter-spacing: 0.1em;
645
+ text-transform: uppercase;
646
+ }
647
+ .planGateAccount .setupAccountChange { min-height: 34px; }
648
+
649
+ /* Found sessions: one message, one next action -------------------------- */
650
+ .readyDecision.extractionReady {
651
+ overflow: visible;
652
+ width: min(920px, 100%);
653
+ padding-top: 58px;
654
+ border: 0;
655
+ border-radius: 0;
656
+ background: transparent;
657
+ box-shadow: none;
658
+ }
659
+ .readyDecision.extractionReady::before,
660
+ .exHero::before { display: none; }
661
+ .extractionReady .readyEyebrow { display: none; }
662
+ .extractionReady .readyHero {
663
+ display: flex;
664
+ width: 100%;
665
+ padding: 14px 0 0;
666
+ flex-direction: column;
667
+ align-items: center;
668
+ gap: 16px;
669
+ border: 0;
670
+ background: transparent;
671
+ text-align: center;
672
+ }
673
+ .extractionReady .readyMascot {
674
+ width: 82px;
675
+ height: auto;
676
+ filter: drop-shadow(0 16px 22px rgba(26,58,143,0.16));
677
+ }
678
+ .extractionReady .readyHero .exCopy h2 {
679
+ max-width: 760px;
680
+ color: var(--echo-ink-text) !important;
681
+ -webkit-text-fill-color: var(--echo-ink-text);
682
+ background: none;
683
+ font-size: 4rem;
684
+ font-weight: 450;
685
+ line-height: 0.92;
686
+ letter-spacing: -0.07em !important;
687
+ }
688
+ .extractionReady .readyHero .exCopy h2 strong {
689
+ color: var(--echo-ink-primary);
690
+ -webkit-text-fill-color: var(--echo-ink-primary);
691
+ font-weight: 650;
692
+ }
693
+ .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;
699
+ }
700
+ .extractionReady .proofStrip {
701
+ width: fit-content;
702
+ min-height: 36px;
703
+ margin: 20px auto 0;
704
+ border: 0;
705
+ border-radius: 999px;
706
+ background: rgba(255,255,255,0.65);
707
+ padding: 8px 14px;
708
+ box-shadow: 0 6px 20px rgba(26,58,143,0.07);
709
+ }
710
+ .extractionReady .readyGo {
711
+ width: min(560px, 100%);
712
+ margin: 24px auto 0;
713
+ padding: 0;
714
+ justify-items: center;
715
+ background: transparent;
716
+ }
717
+ .extractionReady .readyDecision .actions,
718
+ .extractionReady .actions {
719
+ width: 100%;
720
+ justify-content: center;
721
+ }
722
+ .extractionReady .actions .primary {
723
+ width: 100%;
724
+ min-height: 60px;
725
+ border: 0;
726
+ border-radius: 999px;
727
+ box-shadow: 0 8px 0 color-mix(in srgb, var(--echo-ink-primary) 77%, black);
728
+ font-size: 17px;
729
+ }
730
+ .extractionReady .skipHistoryButton {
731
+ min-height: 44px !important;
732
+ border: 0;
733
+ background: transparent;
734
+ box-shadow: none;
735
+ color: var(--echo-ink-mute);
736
+ }
737
+ .extractionReady .ctaMeta {
738
+ margin-top: 14px;
739
+ justify-content: center;
740
+ color: var(--echo-ink-faint);
741
+ font-size: 11px;
742
+ }
743
+ .extractionReady .readySettings {
744
+ display: flex;
745
+ position: fixed;
746
+ top: 18px;
747
+ right: 22px;
748
+ left: 22px;
749
+ z-index: 20;
750
+ width: auto;
751
+ margin: 0;
752
+ align-items: center;
753
+ justify-content: space-between;
754
+ gap: 18px;
755
+ border: 0;
756
+ background: transparent;
757
+ }
758
+ .extractionReady .readySetting {
759
+ display: flex;
760
+ width: auto;
761
+ align-items: center;
762
+ gap: 7px;
763
+ border: 0;
764
+ 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);
769
+ }
770
+ .extractionReady .readySettingLabel {
771
+ position: static;
772
+ width: auto;
773
+ height: auto;
774
+ overflow: visible;
775
+ clip: auto;
776
+ clip-path: none;
777
+ color: var(--echo-ink-faint);
778
+ font: 700 9px/1 var(--echo-font-mono);
779
+ letter-spacing: 0.12em;
780
+ text-transform: uppercase;
781
+ }
782
+ .extractionReady .setupAccountCard,
783
+ .extractionReady .setupPlanConfirmed {
784
+ display: flex;
785
+ margin: 0;
786
+ align-items: center;
787
+ border: 0;
788
+ background: transparent;
789
+ padding: 0;
790
+ box-shadow: none;
791
+ }
792
+ .extractionReady .setupAccountAvatar,
793
+ .extractionReady .setupAccountCopy small,
794
+ .extractionReady .setupAccountCopy span,
795
+ .extractionReady .setupPlanConfirmedIcon,
796
+ .extractionReady .setupPlanConfirmedCopy span { display: none; }
797
+ .extractionReady .setupAccountCopy,
798
+ .extractionReady .setupPlanConfirmedCopy { flex: 0 1 auto; }
799
+ .extractionReady .setupAccountCopy strong,
800
+ .extractionReady .setupPlanConfirmedCopy strong {
801
+ color: var(--echo-ink-mute);
802
+ font-size: 12px;
803
+ font-weight: 600;
804
+ }
805
+ .extractionReady .textButton {
806
+ min-height: 32px;
807
+ padding: 0 8px;
808
+ font-size: 11px;
809
+ }
810
+ .extractionReady .readySettings.is-checkout-pending {
811
+ align-items: flex-start;
812
+ }
813
+ .extractionReady .readySettings.is-checkout-pending .readyPlanSetting {
814
+ display: block;
815
+ width: min(680px, calc(100vw - 260px));
816
+ overflow: visible;
817
+ border: 0;
818
+ border-radius: 0;
819
+ background: transparent;
820
+ padding: 0;
821
+ box-shadow: none;
822
+ backdrop-filter: none;
823
+ }
824
+ .extractionReady .readySettings.is-checkout-pending .readyPlanSetting > .readySettingLabel {
825
+ position: absolute;
826
+ width: 1px;
827
+ height: 1px;
828
+ overflow: hidden;
829
+ clip: rect(0 0 0 0);
830
+ clip-path: inset(50%);
831
+ white-space: nowrap;
832
+ }
833
+ .extractionReady .readySettings.is-checkout-pending .setupPlanSlot {
834
+ margin: 0;
835
+ }
836
+ .extractionReady .setupPlanCheckout {
837
+ display: grid;
838
+ grid-template-columns: minmax(0, 1fr) auto;
839
+ grid-template-rows: auto auto;
840
+ column-gap: 18px;
841
+ row-gap: 2px;
842
+ align-items: center;
843
+ 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);
851
+ }
852
+ .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;
860
+ }
861
+ .extractionReady .setupPlanCheckout .setupPlanIntro {
862
+ min-width: 0;
863
+ padding: 0;
864
+ }
865
+ .extractionReady .setupPlanCheckout .setupPlanIntro h3 {
866
+ font-size: 16px;
867
+ line-height: 1.2;
868
+ letter-spacing: -0.01em;
869
+ }
870
+ .extractionReady .setupPlanCheckout .setupPlanIntro p {
871
+ margin-top: 3px;
872
+ font-size: 11px;
873
+ line-height: 1.35;
874
+ }
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);
883
+ }
884
+ .extractionReady .setupPlanCheckout .setupPlanFoot {
885
+ justify-content: flex-start;
886
+ gap: 8px;
887
+ margin-top: 1px;
888
+ }
889
+ .extractionReady .setupPlanCheckout .setupPlanFoot .textButton {
890
+ min-height: 0;
891
+ padding: 2px 0;
892
+ color: var(--echo-ink-mute);
893
+ font-size: 10px;
894
+ font-weight: 700;
895
+ }
896
+ .extractionReady .setupPlanCheckout .setupPlanFoot span {
897
+ font-size: 10px;
898
+ }
899
+ .extractionReady .readyFoot {
900
+ width: min(620px, 100%);
901
+ margin: 12px auto 0;
902
+ border: 0;
903
+ padding: 0;
904
+ opacity: 0.68;
905
+ }
906
+ .extractionReady .readyExplain { text-align: center; }
907
+ .extractionReady .readyExplain > p,
908
+ .extractionReady .readySteps { display: none; }
909
+
910
+ /* Session review is a full canvas, not a floating legacy card ---------- */
911
+ .sessionPicker {
912
+ width: 100vw;
913
+ max-width: none;
914
+ height: 100vh;
915
+ max-height: none;
916
+ margin: 0;
917
+ border: 0;
918
+ border-radius: 0;
919
+ background:
920
+ radial-gradient(circle, rgba(26,58,143,0.10) 0 1.1px, transparent 1.4px) 0 0 / 22px 22px,
921
+ var(--echo-paper-canvas);
922
+ box-shadow: none;
923
+ }
924
+ .sessionPicker::backdrop { background: var(--echo-paper-canvas); }
925
+ .sessionPickerShell {
926
+ width: min(980px, calc(100% - 32px));
927
+ height: 100vh;
928
+ max-height: none;
929
+ margin: 0 auto;
930
+ background: transparent;
931
+ }
932
+ .sessionPickerHead {
933
+ padding: clamp(28px, 5vw, 54px) 8px 24px;
934
+ border: 0;
935
+ background: transparent;
936
+ }
937
+ .sessionPickerHead > div > span { color: var(--echo-ink-seal); }
938
+ .sessionPickerHead h2 {
939
+ margin-top: 10px;
940
+ color: var(--echo-ink-text);
941
+ font-size: clamp(42px, 6vw, 70px);
942
+ font-weight: 450;
943
+ letter-spacing: -0.06em;
944
+ }
945
+ .sessionPickerHead p { margin-top: 12px; font-size: 14px; }
946
+ .sessionPickerClose {
947
+ border: 0;
948
+ background: rgba(255,255,255,0.72);
949
+ box-shadow: 0 4px 14px rgba(26,58,143,0.09);
950
+ }
951
+ .sessionPickerToolbar,
952
+ .sessionPickerActions,
953
+ .sessionPickerFoot {
954
+ border: 0;
955
+ background: transparent;
956
+ padding-right: 8px;
957
+ padding-left: 8px;
958
+ }
959
+ .sessionPickerListWrap {
960
+ border: 1px solid rgba(26,58,143,0.12);
961
+ border-radius: 24px;
962
+ background: rgba(255,255,255,0.72);
963
+ box-shadow: 0 14px 36px rgba(26,58,143,0.08);
964
+ }
965
+ .sessionPickerList { background: transparent; padding: 8px; }
966
+ .sessionPickerRow {
967
+ margin: 0;
968
+ border: 0;
969
+ border-bottom: 1px solid rgba(26,58,143,0.08);
970
+ border-radius: 0;
971
+ background: transparent;
972
+ padding: 14px 12px;
973
+ }
974
+ .sessionPickerRow:last-child { border-bottom: 0; }
975
+ .sessionPickerRow.is-selected { background: rgba(234,241,255,0.72); }
976
+ .sessionPickerFoot {
977
+ padding-top: 18px;
978
+ padding-bottom: 24px;
979
+ }
980
+ .sessionPickerFoot .primary {
981
+ border: 0;
982
+ border-radius: 999px;
983
+ box-shadow: 0 6px 0 color-mix(in srgb, var(--echo-ink-primary) 77%, black);
984
+ }
985
+
986
+ /* Extraction: let the existing animated plate carry the page ----------- */
987
+ .exHero {
988
+ width: min(1180px, 100%);
989
+ min-height: calc(100vh - clamp(56px, 10vw, 128px));
990
+ border: 0;
991
+ border-radius: 0;
992
+ background: transparent;
993
+ box-shadow: none;
994
+ }
995
+ .exHero.exHeroActive {
996
+ grid-template-columns: minmax(320px, 0.72fr) minmax(460px, 1.28fr);
997
+ align-items: center;
998
+ }
999
+ .exHeroActive #exText { padding: clamp(20px, 4vw, 44px); }
1000
+ .exHeroActive .workbench {
1001
+ border: 0;
1002
+ border-radius: 0;
1003
+ background: transparent;
1004
+ padding: 0;
1005
+ box-shadow: none;
1006
+ }
1007
+ .exHeroActive .utilityEyebrow { display: none; }
1008
+ .exHeroActive .workbench h2 {
1009
+ color: var(--echo-ink-text) !important;
1010
+ -webkit-text-fill-color: var(--echo-ink-text);
1011
+ background: none;
1012
+ font-size: clamp(46px, 6vw, 76px);
1013
+ font-weight: 450;
1014
+ letter-spacing: -0.06em !important;
1015
+ }
1016
+ .exHeroActive .workbench h2 strong {
1017
+ color: var(--echo-ink-primary);
1018
+ -webkit-text-fill-color: var(--echo-ink-primary);
1019
+ font-weight: 650;
1020
+ }
1021
+ .exHeroActive .exPlate { min-height: min(72vh, 720px); }
1022
+ .exHeroActive .exMeter {
1023
+ margin-top: 28px;
1024
+ border: 0;
1025
+ background: transparent;
1026
+ padding: 0;
1027
+ }
1028
+ .exHeroActive .exMeter strong { color: var(--echo-ink-primary); }
1029
+ .exHeroActive .exCurrent {
1030
+ border: 0;
1031
+ background: rgba(255,255,255,0.58);
1032
+ box-shadow: none;
1033
+ }
1034
+ .exHeroActive .extractEndRow { border: 0; background: transparent; padding: 0; }
1035
+
1036
+ @media (max-width: 860px) {
1037
+ .mvpPlanHabitat {
1038
+ grid-template-columns: 1fr;
1039
+ min-height: 0;
1040
+ border-radius: 28px;
1041
+ }
1042
+ .mvpHabitatScene { min-height: 390px; }
1043
+ .mvpHabitatDetails { padding: 28px 24px 34px; }
1044
+ .mvpHabitatEcho { width: min(66%, 360px); }
1045
+ .extractionReady .readySettings { flex-direction: column; gap: 9px; }
1046
+ body.readyMode:has(.readySettings.is-checkout-pending) main {
1047
+ padding-top: 190px;
1048
+ }
1049
+ .extractionReady .readySettings.is-checkout-pending .readyAccountSetting { display: none; }
1050
+ .extractionReady .readySettings.is-checkout-pending .readyPlanSetting { width: 100%; }
1051
+ .extractionReady .setupPlanCheckout {
1052
+ grid-template-columns: 1fr;
1053
+ gap: 9px;
1054
+ }
1055
+ .extractionReady .setupPlanCheckout > .primary {
1056
+ grid-column: 1;
1057
+ grid-row: auto;
1058
+ width: 100%;
1059
+ }
1060
+ .exHero.exHeroActive { grid-template-columns: 1fr; }
1061
+ .exHeroActive .exPlate { min-height: 440px; }
1062
+ }
1063
+ @media (max-width: 560px) {
1064
+ body.readyMode main,
1065
+ body.scanMode main,
1066
+ body.extractMode main { padding: 22px 14px 38px; }
1067
+ .mvpConsent h2 { font-size: 42px; }
1068
+ .mvpPricingIntro h2 { font-size: 3.5rem; }
1069
+ .mvpPlanTabs { margin-bottom: 16px; }
1070
+ .mvpPlanTab { min-height: 46px; padding: 0 8px; font-size: 13px; }
1071
+ .mvpPlanTab b { font-size: 10px; }
1072
+ .mvpHabitatScene { min-height: 310px; }
1073
+ .mvpHabitatDetails h3 { font-size: 3.25rem; }
1074
+ .mvpPlanPrice strong { font-size: 48px; }
1075
+ .extractionReady .readyHero .exCopy h2 { font-size: 3.5rem; }
1076
+ .sessionPickerShell { width: calc(100% - 18px); }
1077
+ .sessionPickerHead h2 { font-size: 42px; }
1078
+ }
1079
+ `;