@echomem/mcp 1.4.18 → 1.4.20

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,818 @@
1
+ // Final visual layer for setup. It preserves the existing onboarding composition while
2
+ // translating it into the public website's Memory Atelier language.
3
+ export const SETUP_PAGE_STYLES_WEBSITE_ALIGNMENT = String.raw `
4
+ :root {
5
+ --echo-note-mint: #dcefd9;
6
+ --echo-note-cream: #f5ebd5;
7
+ --echo-note-blue: #dde6f5;
8
+ --echo-note-pink: #f5d5d5;
9
+ --echo-font-script: "Caveat", cursive;
10
+ --echo-radius-card: 16px;
11
+ --echo-radius-panel: 22px;
12
+ --echo-shadow-paper: 0 4px 14px rgba(20, 24, 34, 0.10), 0 1px 2px rgba(20, 24, 34, 0.06);
13
+ --echo-shadow-pop: 0 18px 46px -24px rgba(20, 36, 84, 0.34), 0 5px 16px rgba(20, 24, 34, 0.08);
14
+ --echo-shadow-glass: inset 0 1px 0 rgba(255,255,255,0.78), 0 8px 24px rgba(26,58,143,0.09), 0 1px 2px rgba(20,24,34,0.06);
15
+ }
16
+
17
+ body.readyMode,
18
+ body.extractMode {
19
+ background:
20
+ radial-gradient(circle, rgba(26,58,143,0.075) 0 1px, transparent 1.35px) 0 0 / 18px 18px,
21
+ radial-gradient(circle, rgba(78,205,196,0.07) 0 1px, transparent 1.35px) 9px 9px / 22px 22px,
22
+ var(--echo-paper-canvas);
23
+ }
24
+ body.readyMode main,
25
+ body.extractMode main {
26
+ padding: clamp(38px, 6vw, 76px) clamp(18px, 5vw, 58px) clamp(56px, 8vw, 96px);
27
+ }
28
+
29
+ /* Website headline: dotted context with a solid, high-weight conclusion. */
30
+ .siteHeadline {
31
+ color: transparent !important;
32
+ -webkit-text-fill-color: transparent;
33
+ background-image:
34
+ radial-gradient(circle, rgba(26,58,143,0.78) 0 1.05px, transparent 1.25px),
35
+ radial-gradient(circle, rgba(43,42,38,0.43) 0 0.68px, transparent 0.9px);
36
+ background-size: 4px 4px, 14px 14px;
37
+ background-position: 0 1px, 1px 0;
38
+ -webkit-background-clip: text;
39
+ background-clip: text;
40
+ letter-spacing: -0.025em !important;
41
+ }
42
+ .siteHeadline strong {
43
+ color: var(--echo-ink-text);
44
+ -webkit-text-fill-color: var(--echo-ink-text);
45
+ font-weight: 900;
46
+ background: none;
47
+ -webkit-background-clip: border-box;
48
+ background-clip: border-box;
49
+ }
50
+ .siteHeadline .viewEchoLink {
51
+ color: var(--echo-ink-mute);
52
+ -webkit-text-fill-color: var(--echo-ink-mute);
53
+ background: none;
54
+ -webkit-background-clip: border-box;
55
+ background-clip: border-box;
56
+ }
57
+
58
+ .consentEyebrow,
59
+ .utilityEyebrow {
60
+ width: fit-content;
61
+ border: 1px solid rgba(26,58,143,0.13);
62
+ border-radius: 999px;
63
+ background: rgba(255,255,255,0.72);
64
+ padding: 6px 11px;
65
+ box-shadow: var(--echo-shadow-glass);
66
+ color: color-mix(in srgb, var(--echo-ink-primary) 70%, var(--echo-ink-accent) 30%);
67
+ }
68
+
69
+ button,
70
+ .button {
71
+ border-radius: 999px;
72
+ box-shadow: var(--echo-shadow-glass);
73
+ }
74
+ button:not(:disabled):hover,
75
+ .button:hover {
76
+ box-shadow: 0 13px 30px rgba(26,58,143,0.13), 0 2px 5px rgba(20,24,34,0.07);
77
+ }
78
+ .primary {
79
+ border-color: rgba(255,255,255,0.28);
80
+ box-shadow: inset 0 1px 0 rgba(255,255,255,0.26), 0 12px 28px rgba(26,58,143,0.20);
81
+ }
82
+ .secondary {
83
+ border-color: rgba(26,58,143,0.24);
84
+ background: rgba(255,255,255,0.72);
85
+ }
86
+ .textButton {
87
+ border-radius: 999px;
88
+ box-shadow: none;
89
+ }
90
+
91
+ /* Local scan -------------------------------------------------------------- */
92
+ body.scanMode {
93
+ background:
94
+ radial-gradient(circle, rgba(26,58,143,0.075) 0 1px, transparent 1.35px) 0 0 / 18px 18px,
95
+ radial-gradient(circle, rgba(78,205,196,0.07) 0 1px, transparent 1.35px) 9px 9px / 22px 22px,
96
+ var(--echo-paper-canvas);
97
+ }
98
+ body.scanMode main {
99
+ padding: clamp(32px, 6vw, 72px) clamp(18px, 5vw, 58px);
100
+ }
101
+ body.scanMode #app {
102
+ width: min(860px, 100%);
103
+ min-height: min(72vh, 680px);
104
+ }
105
+ .scanLoader {
106
+ position: relative;
107
+ overflow: visible;
108
+ width: min(760px, 100%);
109
+ border: 1.5px solid rgba(26,58,143,0.20);
110
+ border-radius: var(--echo-radius-panel);
111
+ background: rgba(255,255,255,0.92);
112
+ padding: clamp(26px, 5vw, 48px);
113
+ box-shadow: var(--echo-shadow-pop);
114
+ }
115
+ .scanLoader::before {
116
+ content: "";
117
+ position: absolute;
118
+ top: -11px;
119
+ left: 50%;
120
+ z-index: 2;
121
+ width: 88px;
122
+ height: 25px;
123
+ border: 1px solid rgba(43,42,38,0.07);
124
+ background: color-mix(in srgb, var(--echo-note-cream) 72%, white 28%);
125
+ box-shadow: 0 1px 2px rgba(43,42,38,0.07);
126
+ opacity: 0.82;
127
+ transform: translateX(-50%) rotate(-1deg);
128
+ }
129
+ .scanLoaderLead {
130
+ display: grid;
131
+ grid-template-columns: auto minmax(0, 1fr);
132
+ align-items: center;
133
+ gap: clamp(20px, 4vw, 34px);
134
+ }
135
+ .scanMascot {
136
+ display: grid;
137
+ place-items: center;
138
+ width: clamp(92px, 13vw, 118px);
139
+ aspect-ratio: 1;
140
+ flex: 0 0 auto;
141
+ border: 1px solid rgba(26,58,143,0.11);
142
+ border-radius: 20px;
143
+ background: color-mix(in srgb, var(--echo-paper-white) 64%, var(--echo-note-cream) 36%);
144
+ box-shadow: var(--echo-shadow-paper);
145
+ transform: rotate(-1.5deg);
146
+ }
147
+ .scanMascot img {
148
+ display: block;
149
+ width: 76%;
150
+ height: 76%;
151
+ object-fit: contain;
152
+ filter: drop-shadow(0 12px 14px rgba(26,58,143,0.16));
153
+ }
154
+ .scanLoaderCopy { min-width: 0; }
155
+ .scanEyebrow {
156
+ width: fit-content;
157
+ margin: 0 0 15px;
158
+ border: 1px solid rgba(26,58,143,0.13);
159
+ border-radius: 999px;
160
+ background: rgba(255,255,255,0.72);
161
+ padding: 6px 11px;
162
+ box-shadow: var(--echo-shadow-glass);
163
+ color: color-mix(in srgb, var(--echo-ink-primary) 70%, var(--echo-ink-accent) 30%);
164
+ font-size: 11px;
165
+ letter-spacing: 0.11em;
166
+ }
167
+ .scanLoader h2.siteHeadline {
168
+ max-width: 560px;
169
+ font-size: clamp(40px, 6vw, 64px);
170
+ line-height: 0.98;
171
+ }
172
+ .scanIntro {
173
+ max-width: 520px;
174
+ margin: 18px 0 0;
175
+ color: var(--echo-ink-mute);
176
+ font-size: 15px;
177
+ font-weight: 500;
178
+ line-height: 1.55;
179
+ }
180
+ .scanProgressCard {
181
+ margin-top: clamp(26px, 5vw, 38px);
182
+ border: 1px solid rgba(26,58,143,0.10);
183
+ border-radius: var(--echo-radius-card);
184
+ background: color-mix(in srgb, var(--echo-paper-white) 68%, var(--echo-note-blue) 32%);
185
+ padding: 17px 18px 15px;
186
+ box-shadow: var(--echo-shadow-paper);
187
+ }
188
+ .scanProgress {
189
+ width: 100%;
190
+ height: 10px;
191
+ margin: 0;
192
+ border-radius: 999px;
193
+ background: rgba(255,255,255,0.78);
194
+ box-shadow: inset 0 1px 3px rgba(20,24,34,0.10);
195
+ }
196
+ .scanProgressFill {
197
+ min-width: 10px;
198
+ border-radius: 999px;
199
+ background: linear-gradient(90deg, var(--echo-ink-primary), color-mix(in srgb, var(--echo-ink-primary) 72%, var(--echo-ink-accent) 28%));
200
+ box-shadow: 0 0 0 1px rgba(26,58,143,0.08), 0 3px 9px rgba(26,58,143,0.20);
201
+ }
202
+ .scanCaption {
203
+ margin: 12px 0 0;
204
+ color: var(--echo-ink-mute);
205
+ font-size: 12px;
206
+ font-weight: 700;
207
+ line-height: 1.5;
208
+ }
209
+ .scanPrivacy {
210
+ display: flex;
211
+ align-items: center;
212
+ gap: 8px;
213
+ margin: 15px 2px 0;
214
+ color: var(--echo-ink-faint);
215
+ font-family: var(--echo-font-mono);
216
+ font-size: 11px;
217
+ font-weight: 600;
218
+ line-height: 1.45;
219
+ }
220
+ .scanPrivacy > span {
221
+ width: 8px;
222
+ height: 8px;
223
+ flex: 0 0 auto;
224
+ border-radius: 50%;
225
+ background: var(--echo-ink-accent-deep);
226
+ box-shadow: 0 0 0 4px rgba(78,205,196,0.13);
227
+ }
228
+
229
+ /* Permission and skip states ------------------------------------------------ */
230
+ .localConsent {
231
+ overflow: visible;
232
+ border: 1.5px solid rgba(26,58,143,0.20);
233
+ border-radius: var(--echo-radius-panel);
234
+ background: rgba(255,255,255,0.92);
235
+ box-shadow: var(--echo-shadow-pop);
236
+ }
237
+ .localConsent::before {
238
+ content: "";
239
+ position: absolute;
240
+ top: -11px;
241
+ left: 50%;
242
+ z-index: 3;
243
+ display: block;
244
+ width: 88px;
245
+ height: 25px;
246
+ border: 1px solid rgba(43,42,38,0.07);
247
+ background: color-mix(in srgb, var(--echo-note-cream) 72%, white 28%);
248
+ box-shadow: 0 1px 2px rgba(43,42,38,0.07);
249
+ opacity: 0.82;
250
+ transform: translateX(-50%) rotate(-1deg);
251
+ }
252
+ .localConsentAccess {
253
+ overflow: visible;
254
+ }
255
+ .consentLead {
256
+ border-right-color: rgba(26,58,143,0.10);
257
+ border-radius: calc(var(--echo-radius-panel) - 2px) 0 0 calc(var(--echo-radius-panel) - 2px);
258
+ background: color-mix(in srgb, var(--echo-paper-white) 70%, var(--echo-note-cream) 30%);
259
+ }
260
+ .consentLead h2 {
261
+ font-size: clamp(38px, 4.6vw, 54px);
262
+ }
263
+ .consentIntro {
264
+ color: color-mix(in srgb, var(--echo-ink-text) 68%, var(--echo-ink-mute) 32%);
265
+ font-weight: 500;
266
+ }
267
+ .consentLocalMark {
268
+ margin-top: auto;
269
+ border: 1px solid rgba(26,58,143,0.10);
270
+ border-radius: var(--echo-radius-card);
271
+ background: color-mix(in srgb, var(--echo-paper-white) 66%, var(--echo-note-mint) 34%);
272
+ padding: 13px 15px;
273
+ box-shadow: var(--echo-shadow-paper);
274
+ }
275
+ .consentLocalMark img {
276
+ filter: drop-shadow(0 10px 14px rgba(26,58,143,0.16));
277
+ }
278
+ .consentDecision {
279
+ border-radius: 0 calc(var(--echo-radius-panel) - 2px) calc(var(--echo-radius-panel) - 2px) 0;
280
+ background: rgba(255,255,255,0.72);
281
+ }
282
+ .consentScopeHead span {
283
+ border: 1px solid rgba(26,58,143,0.12);
284
+ border-radius: 999px;
285
+ background: color-mix(in srgb, var(--echo-paper-white) 68%, var(--echo-note-blue) 32%);
286
+ padding: 5px 9px;
287
+ color: var(--echo-ink-primary);
288
+ }
289
+ .consentScope {
290
+ overflow: hidden;
291
+ border: 1px solid rgba(26,58,143,0.12);
292
+ border-radius: 14px;
293
+ background: rgba(255,255,255,0.58);
294
+ }
295
+ .consentScope > div {
296
+ grid-template-columns: 32px 1fr;
297
+ padding: 14px;
298
+ }
299
+ .consentScope > div:nth-child(2) {
300
+ background: color-mix(in srgb, var(--echo-paper-white) 76%, var(--echo-note-blue) 24%);
301
+ }
302
+ .consentScope > div + div {
303
+ border-top-color: rgba(26,58,143,0.09);
304
+ }
305
+ .consentScopeNumber {
306
+ display: grid;
307
+ place-items: center;
308
+ width: 28px;
309
+ height: 28px;
310
+ border: 1px solid rgba(26,58,143,0.15);
311
+ border-radius: 50%;
312
+ background: rgba(255,255,255,0.70);
313
+ padding: 0;
314
+ }
315
+ .consentCheck {
316
+ border-color: rgba(26,58,143,0.18);
317
+ border-radius: 14px;
318
+ background: color-mix(in srgb, var(--echo-paper-white) 72%, var(--echo-note-blue) 28%);
319
+ box-shadow: var(--echo-shadow-paper);
320
+ }
321
+ .consentActions button {
322
+ border-radius: 999px;
323
+ }
324
+
325
+ .localConsentSkipped {
326
+ overflow: visible;
327
+ border-left-width: 1.5px;
328
+ }
329
+ .skippedEcho {
330
+ border-radius: calc(var(--echo-radius-panel) - 2px) 0 0 calc(var(--echo-radius-panel) - 2px);
331
+ background:
332
+ radial-gradient(circle, rgba(255,255,255,0.13) 0 1px, transparent 1.35px) 0 0 / 17px 17px,
333
+ var(--echo-ink-primary);
334
+ }
335
+ .skippedEcho strong {
336
+ font-family: var(--echo-font-script);
337
+ font-size: 38px;
338
+ font-weight: 700;
339
+ transform: rotate(-3deg);
340
+ transform-origin: left center;
341
+ }
342
+ .skippedCopy {
343
+ border-radius: 0 calc(var(--echo-radius-panel) - 2px) calc(var(--echo-radius-panel) - 2px) 0;
344
+ background: rgba(255,255,255,0.90);
345
+ }
346
+ .skippedNext {
347
+ border: 1px solid rgba(26,58,143,0.10);
348
+ border-radius: 12px;
349
+ background: color-mix(in srgb, var(--echo-paper-white) 68%, var(--echo-note-mint) 32%);
350
+ padding: 13px 14px;
351
+ }
352
+
353
+ /* Ready/review state ------------------------------------------------------- */
354
+ .readyDecision {
355
+ position: relative;
356
+ overflow: visible;
357
+ border: 1.5px solid rgba(26,58,143,0.20);
358
+ border-radius: var(--echo-radius-panel);
359
+ background: rgba(255,255,255,0.92);
360
+ box-shadow: var(--echo-shadow-pop);
361
+ }
362
+ .readyDecision::before {
363
+ content: "";
364
+ position: absolute;
365
+ top: -11px;
366
+ left: 50%;
367
+ z-index: 3;
368
+ width: 92px;
369
+ height: 25px;
370
+ border: 1px solid rgba(43,42,38,0.07);
371
+ background: color-mix(in srgb, var(--echo-note-blue) 64%, white 36%);
372
+ box-shadow: 0 1px 2px rgba(43,42,38,0.07);
373
+ opacity: 0.80;
374
+ transform: translateX(-50%) rotate(1deg);
375
+ }
376
+ .readyEyebrow {
377
+ border: 0;
378
+ border-bottom: 1px solid rgba(26,58,143,0.10);
379
+ border-radius: calc(var(--echo-radius-panel) - 2px) calc(var(--echo-radius-panel) - 2px) 0 0;
380
+ background: color-mix(in srgb, var(--echo-paper-white) 70%, var(--echo-note-cream) 30%);
381
+ box-shadow: none;
382
+ padding: 14px clamp(22px, 4vw, 34px);
383
+ }
384
+ .readyHero {
385
+ border-bottom-color: rgba(26,58,143,0.10);
386
+ background: rgba(255,255,255,0.72);
387
+ }
388
+ .readyMascot {
389
+ filter: drop-shadow(0 12px 18px rgba(26,58,143,0.18));
390
+ }
391
+ .readyHero .exCopy h2 {
392
+ font-size: clamp(42px, 5.4vw, 66px);
393
+ }
394
+ .proofStrip {
395
+ border-bottom-color: rgba(26,58,143,0.10);
396
+ background: color-mix(in srgb, var(--echo-paper-white) 64%, var(--echo-note-mint) 36%);
397
+ }
398
+ .proofStrip .pfIcon {
399
+ border-radius: 7px;
400
+ box-shadow: var(--echo-shadow-paper);
401
+ }
402
+ .setupAccountCard {
403
+ border-bottom-color: rgba(26,58,143,0.10);
404
+ background: color-mix(in srgb, var(--echo-paper-white) 72%, var(--echo-note-cream) 28%);
405
+ }
406
+ .setupAccountAvatar {
407
+ border-radius: 12px;
408
+ box-shadow: var(--echo-shadow-paper);
409
+ }
410
+ .setupAccountChange,
411
+ .sessionEditButton {
412
+ border-radius: 999px;
413
+ }
414
+ .setupPlanChoice {
415
+ border-bottom-color: rgba(26,58,143,0.10);
416
+ background: rgba(255,255,255,0.70);
417
+ }
418
+ .setupPlanGrid {
419
+ gap: 16px;
420
+ border: 0;
421
+ }
422
+ .setupPlanCard {
423
+ overflow: visible;
424
+ border: 1.5px solid rgba(26,58,143,0.13);
425
+ border-radius: var(--echo-radius-card);
426
+ background: color-mix(in srgb, var(--echo-paper-white) 70%, var(--echo-note-cream) 30%);
427
+ box-shadow: var(--echo-shadow-paper);
428
+ transform: rotate(-0.45deg) translateY(5px);
429
+ transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
430
+ }
431
+ .setupPlanCard + .setupPlanCard {
432
+ border-left: 1.5px solid rgba(26,58,143,0.13);
433
+ }
434
+ .setupPlanCard:nth-child(2) {
435
+ background: color-mix(in srgb, var(--echo-paper-white) 68%, var(--echo-note-blue) 32%);
436
+ transform: translateY(-3px);
437
+ }
438
+ .setupPlanCard:nth-child(3) {
439
+ background: color-mix(in srgb, var(--echo-paper-white) 68%, var(--echo-note-mint) 32%);
440
+ transform: rotate(0.45deg) translateY(5px);
441
+ }
442
+ .setupPlanCard::after {
443
+ content: "";
444
+ position: absolute;
445
+ top: -8px;
446
+ left: 50%;
447
+ width: 58px;
448
+ height: 18px;
449
+ border: 1px solid rgba(43,42,38,0.06);
450
+ background: rgba(245,235,213,0.72);
451
+ transform: translateX(-50%) rotate(1deg);
452
+ }
453
+ .setupPlanCard:nth-child(2)::after { background: rgba(221,230,245,0.78); }
454
+ .setupPlanCard:nth-child(3)::after { background: rgba(220,239,217,0.78); transform: translateX(-50%) rotate(-1deg); }
455
+ .setupPlanCard:hover {
456
+ border-color: rgba(26,58,143,0.28);
457
+ background: inherit;
458
+ box-shadow: var(--echo-shadow-pop);
459
+ transform: translateY(-5px) rotate(0);
460
+ }
461
+ .setupPlanCard.is-pro {
462
+ border-color: rgba(26,58,143,0.55);
463
+ background: color-mix(in srgb, var(--echo-paper-white) 68%, var(--echo-note-blue) 32%);
464
+ box-shadow: var(--echo-shadow-pop), 0 0 0 4px rgba(221,230,245,0.54);
465
+ }
466
+ .setupPlanCard.is-pro::before {
467
+ top: -23px;
468
+ right: 13px;
469
+ z-index: 3;
470
+ display: grid;
471
+ place-items: center;
472
+ width: 61px;
473
+ height: 61px;
474
+ border: 3px double rgba(255,255,255,0.62);
475
+ border-radius: 50%;
476
+ background: var(--echo-ink-seal);
477
+ padding: 8px;
478
+ color: #fff;
479
+ font-size: 8px;
480
+ line-height: 1.05;
481
+ text-align: center;
482
+ transform: rotate(8deg);
483
+ box-shadow: 0 6px 14px rgba(199,55,47,0.24), inset 0 0 0 2px rgba(255,255,255,0.13);
484
+ }
485
+ .setupPlanCard button {
486
+ border-radius: 999px;
487
+ box-shadow: var(--echo-shadow-glass);
488
+ }
489
+ .setupPlanFoot {
490
+ margin-top: 24px;
491
+ }
492
+ .setupPlanConfirmed {
493
+ border-bottom-color: rgba(26,58,143,0.10);
494
+ background: color-mix(in srgb, var(--echo-paper-white) 66%, var(--echo-note-mint) 34%);
495
+ box-shadow: inset 4px 0 0 var(--echo-ink-accent-deep);
496
+ }
497
+ .setupPlanConfirmedIcon {
498
+ border-radius: 50%;
499
+ background: rgba(255,255,255,0.64);
500
+ }
501
+ .sessionSelectionCard {
502
+ border-bottom-color: rgba(26,58,143,0.10);
503
+ background: color-mix(in srgb, var(--echo-paper-white) 68%, var(--echo-note-blue) 32%);
504
+ }
505
+ .sessionSelectionIcon {
506
+ border-color: rgba(26,58,143,0.12);
507
+ border-radius: 11px;
508
+ box-shadow: var(--echo-shadow-paper);
509
+ }
510
+ .readyGo {
511
+ background: rgba(255,255,255,0.74);
512
+ }
513
+ .readyDecision .actions .primary {
514
+ border-radius: 999px;
515
+ box-shadow: inset 0 1px 0 rgba(255,255,255,0.26), 0 12px 28px rgba(26,58,143,0.20);
516
+ }
517
+ .readyDecision .actions .primary:not(:disabled):hover {
518
+ box-shadow: inset 0 1px 0 rgba(255,255,255,0.28), 0 16px 34px rgba(26,58,143,0.25);
519
+ }
520
+ .readyDecision .actions .skipHistoryButton {
521
+ border-radius: 999px;
522
+ }
523
+ .readyFoot {
524
+ border-top-color: rgba(26,58,143,0.10);
525
+ border-radius: 0 0 calc(var(--echo-radius-panel) - 2px) calc(var(--echo-radius-panel) - 2px);
526
+ background: color-mix(in srgb, var(--echo-paper-white) 72%, var(--echo-note-cream) 28%);
527
+ }
528
+ .readySteps {
529
+ gap: 10px;
530
+ border: 0;
531
+ }
532
+ .readyStep {
533
+ border: 1px solid rgba(26,58,143,0.10);
534
+ border-radius: 12px;
535
+ background: rgba(255,255,255,0.62);
536
+ }
537
+ .readyStep + .readyStep {
538
+ border-left: 1px solid rgba(26,58,143,0.10);
539
+ }
540
+
541
+ /* Live extraction, completion, and pause states --------------------------- */
542
+ .loading-panel,
543
+ .exHeroActive,
544
+ .exHeroResult,
545
+ .miniLoad,
546
+ .skipStage {
547
+ position: relative;
548
+ overflow: visible;
549
+ border: 1.5px solid rgba(26,58,143,0.20);
550
+ border-radius: var(--echo-radius-panel);
551
+ background: rgba(255,255,255,0.92);
552
+ box-shadow: var(--echo-shadow-pop);
553
+ }
554
+ .exHeroActive,
555
+ .exHeroResult {
556
+ padding: clamp(30px, 5vw, 52px);
557
+ }
558
+ .exHeroActive::before,
559
+ .exHeroResult::before,
560
+ .miniLoad::before,
561
+ .skipStage::before {
562
+ content: "";
563
+ position: absolute;
564
+ top: -10px;
565
+ left: 50%;
566
+ width: 82px;
567
+ height: 23px;
568
+ border: 1px solid rgba(43,42,38,0.07);
569
+ background: rgba(221,230,245,0.78);
570
+ opacity: 0.84;
571
+ transform: translateX(-50%) rotate(-1deg);
572
+ }
573
+ .workbench .track {
574
+ height: 8px;
575
+ border-radius: 999px;
576
+ background: color-mix(in srgb, var(--echo-note-blue) 64%, var(--echo-paper-soft) 36%);
577
+ }
578
+ .workbench .track .fill {
579
+ border-radius: 999px;
580
+ background: linear-gradient(90deg, var(--echo-ink-primary), var(--echo-ink-accent));
581
+ }
582
+ .exCurrent {
583
+ border: 1px solid rgba(26,58,143,0.10);
584
+ border-radius: 13px;
585
+ background: color-mix(in srgb, var(--echo-paper-white) 68%, var(--echo-note-mint) 32%);
586
+ padding: 12px 14px;
587
+ }
588
+ .exCurrent i {
589
+ border-radius: 50%;
590
+ box-shadow: 0 0 0 4px rgba(78,205,196,0.15);
591
+ }
592
+ .extractEndRow button {
593
+ min-height: 38px;
594
+ border: 1px solid rgba(26,58,143,0.18);
595
+ border-radius: 999px;
596
+ background: rgba(255,255,255,0.70);
597
+ padding: 0 13px;
598
+ box-shadow: var(--echo-shadow-glass);
599
+ }
600
+ .extractEndRow button:hover {
601
+ text-decoration: none;
602
+ }
603
+ .exOverdue {
604
+ border-radius: 13px;
605
+ }
606
+ .tryCard {
607
+ border: 1.5px solid rgba(26,58,143,0.24);
608
+ border-radius: 24px;
609
+ background: color-mix(in srgb, var(--echo-paper-white) 74%, var(--echo-note-blue) 26%);
610
+ box-shadow: var(--echo-shadow-paper);
611
+ }
612
+ .recallPrompt {
613
+ border-color: rgba(26,58,143,0.15);
614
+ border-radius: 17px;
615
+ background: rgba(255,255,255,0.82);
616
+ }
617
+ .recallPromptText {
618
+ border-color: rgba(26,58,143,0.10);
619
+ border-radius: 12px;
620
+ }
621
+ .recallCopy,
622
+ .recallAgent { border-radius: 999px; }
623
+ .recallAgentIcon { border-radius: 7px; }
624
+ .tryCard pre,
625
+ .promptPeek pre {
626
+ border-color: rgba(26,58,143,0.10);
627
+ border-radius: 12px;
628
+ background: color-mix(in srgb, var(--echo-paper-white) 48%, var(--echo-note-cream) 52%);
629
+ }
630
+ .promptCopyLabel {
631
+ border-radius: 999px;
632
+ box-shadow: var(--echo-shadow-glass);
633
+ }
634
+ .agentLaunch {
635
+ gap: 12px;
636
+ border: 0;
637
+ }
638
+ .agentLaunch button {
639
+ border: 1px solid rgba(26,58,143,0.12);
640
+ border-radius: 14px;
641
+ background: rgba(255,255,255,0.72);
642
+ box-shadow: var(--echo-shadow-paper);
643
+ }
644
+ .agentLaunch button + button {
645
+ border-left: 1px solid rgba(26,58,143,0.12);
646
+ }
647
+ .agentIcon {
648
+ border-radius: 11px;
649
+ box-shadow: var(--echo-shadow-paper);
650
+ }
651
+ .hudTip {
652
+ border: 1px solid rgba(26,58,143,0.10);
653
+ border-radius: 14px;
654
+ background: color-mix(in srgb, var(--echo-paper-white) 68%, var(--echo-note-mint) 32%);
655
+ padding: 14px;
656
+ }
657
+ .hudTip img {
658
+ filter: drop-shadow(0 9px 14px rgba(26,58,143,0.16));
659
+ }
660
+ .pauseStatus > span {
661
+ border-radius: 50%;
662
+ background: color-mix(in srgb, var(--echo-paper-white) 66%, var(--echo-note-blue) 34%);
663
+ box-shadow: var(--echo-shadow-paper);
664
+ }
665
+ .skipStage {
666
+ gap: 18px;
667
+ }
668
+ .skipStage > p:not(.hudTip) {
669
+ color: color-mix(in srgb, var(--echo-ink-text) 68%, var(--echo-ink-mute) 32%);
670
+ }
671
+
672
+ /* Session picker remains a utility surface, but uses the same material. */
673
+ .sessionPicker {
674
+ overflow: hidden;
675
+ border: 1.5px solid rgba(26,58,143,0.24);
676
+ border-radius: var(--echo-radius-panel);
677
+ box-shadow: 0 34px 90px -30px rgba(10,18,46,0.58);
678
+ }
679
+ .sessionPicker::backdrop {
680
+ background: rgba(20,25,40,0.52);
681
+ backdrop-filter: blur(5px);
682
+ }
683
+ .sessionPickerHead {
684
+ background: color-mix(in srgb, var(--echo-paper-white) 70%, var(--echo-note-cream) 30%);
685
+ }
686
+ .sessionPickerToolbar,
687
+ .sessionPickerFoot {
688
+ background: color-mix(in srgb, var(--echo-paper-white) 70%, var(--echo-note-blue) 30%);
689
+ }
690
+ .sessionPickerClose,
691
+ .sessionPickerToolbar input,
692
+ .sessionPickerToolbar select {
693
+ border-radius: 11px;
694
+ }
695
+ .sessionPickerRow {
696
+ margin: 5px 8px;
697
+ border: 1px solid transparent;
698
+ border-radius: 12px;
699
+ }
700
+ .sessionPickerRow.is-selected {
701
+ border-color: rgba(26,58,143,0.16);
702
+ border-bottom-color: rgba(26,58,143,0.16);
703
+ border-radius: 12px;
704
+ background: color-mix(in srgb, var(--echo-paper-white) 64%, var(--echo-note-blue) 36%);
705
+ box-shadow: inset 3px 0 0 var(--echo-ink-primary);
706
+ }
707
+ .sessionPickerLimitCard {
708
+ border-color: rgba(26,58,143,0.16);
709
+ border-radius: var(--echo-radius-card);
710
+ background: color-mix(in srgb, rgba(255,255,255,0.94) 84%, var(--echo-note-cream) 16%);
711
+ box-shadow: var(--echo-shadow-pop);
712
+ }
713
+ .sessionPickerLimitActions .button,
714
+ .sessionPickerLimitActions button {
715
+ border-radius: 999px;
716
+ }
717
+ .sessionPickerSource {
718
+ border-radius: 9px;
719
+ box-shadow: var(--echo-shadow-paper);
720
+ }
721
+ .sessionPickerFoot button {
722
+ border-radius: 999px;
723
+ }
724
+
725
+ @media (max-width: 720px) {
726
+ body.readyMode main,
727
+ body.extractMode main {
728
+ padding: 34px 14px 56px;
729
+ }
730
+ .localConsent,
731
+ .readyDecision,
732
+ .loading-panel,
733
+ .exHeroActive,
734
+ .exHeroResult,
735
+ .miniLoad,
736
+ .skipStage {
737
+ border-radius: 18px;
738
+ }
739
+ body.scanMode main {
740
+ padding: 34px 14px 52px;
741
+ }
742
+ body.scanMode #app {
743
+ min-height: calc(100vh - 86px);
744
+ }
745
+ .scanLoader {
746
+ border-radius: 18px;
747
+ padding: 28px 20px 22px;
748
+ }
749
+ .scanLoaderLead {
750
+ grid-template-columns: 1fr;
751
+ gap: 18px;
752
+ }
753
+ .scanMascot {
754
+ width: 76px;
755
+ border-radius: 16px;
756
+ }
757
+ .scanLoader h2.siteHeadline {
758
+ font-size: clamp(38px, 12vw, 52px);
759
+ }
760
+ .scanIntro {
761
+ margin-top: 14px;
762
+ font-size: 14px;
763
+ }
764
+ .scanProgressCard {
765
+ margin-top: 24px;
766
+ padding: 15px 14px 13px;
767
+ }
768
+ .scanPrivacy {
769
+ align-items: flex-start;
770
+ }
771
+ .consentLead,
772
+ .skippedEcho {
773
+ border-radius: 16px 16px 0 0;
774
+ }
775
+ .consentDecision,
776
+ .skippedCopy {
777
+ border-radius: 0 0 16px 16px;
778
+ }
779
+ .readyEyebrow {
780
+ border-radius: 16px 16px 0 0;
781
+ }
782
+ .readyHero .exCopy h2,
783
+ .consentLead h2 {
784
+ font-size: clamp(36px, 11vw, 48px);
785
+ }
786
+ .setupPlanGrid {
787
+ gap: 20px;
788
+ }
789
+ .setupPlanCard,
790
+ .setupPlanCard:nth-child(2),
791
+ .setupPlanCard:nth-child(3) {
792
+ transform: none;
793
+ }
794
+ .setupPlanCard + .setupPlanCard {
795
+ border-top: 1.5px solid rgba(26,58,143,0.13);
796
+ border-left: 1.5px solid rgba(26,58,143,0.13);
797
+ }
798
+ .readyStep + .readyStep {
799
+ border-top: 1px solid rgba(26,58,143,0.10);
800
+ }
801
+ .agentLaunch button + button {
802
+ border-top: 1px solid rgba(26,58,143,0.12);
803
+ border-left: 1px solid rgba(26,58,143,0.12);
804
+ }
805
+ .sessionPicker {
806
+ border-radius: 0;
807
+ }
808
+ }
809
+
810
+ @media (prefers-reduced-motion: reduce) {
811
+ .setupPlanCard,
812
+ .setupPlanCard:nth-child(2),
813
+ .setupPlanCard:nth-child(3) {
814
+ transition: none;
815
+ transform: none;
816
+ }
817
+ }
818
+ `;