@echomem/mcp 1.4.20 → 1.4.22

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.
@@ -139,6 +139,429 @@ export const SETUP_PAGE_STYLES_EXTRACTION = String.raw ` /* ---- dashboard (p
139
139
  font-size: 12px;
140
140
  font-weight: 650;
141
141
  }
142
+ .localAuthStage {
143
+ display: grid;
144
+ place-items: center;
145
+ width: min(720px, 100%);
146
+ min-height: min(660px, calc(100vh - 120px));
147
+ margin: 0 auto;
148
+ }
149
+ .localAuthWelcomeStage {
150
+ width: min(760px, 100%);
151
+ min-height: calc(100vh - clamp(56px, 10vw, 116px));
152
+ }
153
+ body.readyMode:has(.localAuthWelcome) {
154
+ background: var(--echo-paper-canvas);
155
+ background-image: none;
156
+ }
157
+ .localAuthWelcome {
158
+ width: min(590px, 100%);
159
+ display: grid;
160
+ justify-items: center;
161
+ gap: 22px;
162
+ text-align: center;
163
+ color: var(--echo-ink-text);
164
+ }
165
+ .localAuthOrbScene {
166
+ position: relative;
167
+ display: grid;
168
+ justify-items: center;
169
+ width: 108px;
170
+ height: 142px;
171
+ margin-bottom: 2px;
172
+ }
173
+ .localAuthOrb {
174
+ position: relative;
175
+ display: block;
176
+ width: 66px;
177
+ height: 66px;
178
+ border-radius: 50%;
179
+ background:
180
+ radial-gradient(circle at 36% 30%, rgba(255,255,255,0.56) 0 4%, transparent 24%),
181
+ radial-gradient(circle at 54% 66%, #147fdc 0 22%, transparent 58%),
182
+ linear-gradient(145deg, #68d9ff 0%, #21a9f4 46%, #1172d3 100%);
183
+ box-shadow:
184
+ inset -9px -12px 18px rgba(0,74,177,0.18),
185
+ 0 12px 24px rgba(17,114,211,0.16);
186
+ animation: localAuthOrbFloat 3.2s ease-in-out infinite;
187
+ }
188
+ .localAuthOrb::before,
189
+ .localAuthOrb::after {
190
+ content: "";
191
+ position: absolute;
192
+ top: 28px;
193
+ width: 5px;
194
+ height: 8px;
195
+ border-radius: 50%;
196
+ background: #11100f;
197
+ }
198
+ .localAuthOrb::before { left: 24px; }
199
+ .localAuthOrb::after { right: 24px; }
200
+ .localAuthOrbShadow {
201
+ position: absolute;
202
+ left: 50%;
203
+ bottom: 2px;
204
+ width: 90px;
205
+ height: 10px;
206
+ border-radius: 50%;
207
+ background: rgba(65,61,54,0.12);
208
+ filter: blur(7px);
209
+ transform: translateX(-50%);
210
+ animation: localAuthOrbShadow 3.2s ease-in-out infinite;
211
+ }
212
+ @keyframes localAuthOrbFloat {
213
+ 0%, 100% { transform: translateY(0); }
214
+ 50% { transform: translateY(-10px); }
215
+ }
216
+ @keyframes localAuthOrbShadow {
217
+ 0%, 100% { opacity: 0.78; transform: translateX(-50%) scaleX(1); }
218
+ 50% { opacity: 0.42; transform: translateX(-50%) scaleX(0.72); }
219
+ }
220
+ .localAuthWelcomeCopy {
221
+ display: grid;
222
+ justify-items: center;
223
+ gap: 6px;
224
+ }
225
+ .localAuthWelcomeCopy h2 {
226
+ margin: 0;
227
+ color: var(--echo-ink-primary);
228
+ font-family: var(--echo-font-script, "Caveat", cursive);
229
+ font-size: clamp(44px, 6vw, 58px);
230
+ font-weight: 700;
231
+ line-height: 0.95;
232
+ letter-spacing: 0;
233
+ }
234
+ .localAuthWelcomeCopy p {
235
+ margin: 0;
236
+ color: #74736f;
237
+ font-size: clamp(14px, 1.7vw, 17px);
238
+ line-height: 1.45;
239
+ letter-spacing: 0.01em;
240
+ }
241
+ .localAuthWelcomeForm {
242
+ width: min(520px, 100%);
243
+ display: grid;
244
+ gap: 16px;
245
+ }
246
+ .localAuthEmailCapsule {
247
+ position: relative;
248
+ display: grid;
249
+ grid-template-columns: minmax(0, 1fr) 58px;
250
+ align-items: center;
251
+ min-height: 64px;
252
+ border: 1px solid rgba(78,78,75,0.20);
253
+ border-radius: 999px;
254
+ background: rgba(255,255,255,0.94);
255
+ padding: 5px 6px 5px 22px;
256
+ box-shadow: 0 3px 8px rgba(50,48,43,0.08);
257
+ transition: border-color 160ms ease, box-shadow 160ms ease;
258
+ }
259
+ .localAuthEmailCapsule .srOnly {
260
+ position: absolute;
261
+ width: 1px;
262
+ height: 1px;
263
+ padding: 0;
264
+ margin: -1px;
265
+ overflow: hidden;
266
+ clip: rect(0, 0, 0, 0);
267
+ white-space: nowrap;
268
+ border: 0;
269
+ }
270
+ .localAuthEmailCapsule:focus-within {
271
+ border-color: rgba(26,58,143,0.48);
272
+ box-shadow: 0 0 0 3px rgba(26,58,143,0.10), 0 3px 8px rgba(50,48,43,0.08);
273
+ }
274
+ .localAuthEmailCapsule input {
275
+ min-width: 0;
276
+ border: 0;
277
+ background: transparent;
278
+ color: var(--echo-ink-text);
279
+ font: inherit;
280
+ font-size: 17px;
281
+ outline: none;
282
+ }
283
+ .localAuthEmailCapsule input::placeholder { color: #a7a7a3; }
284
+ .localAuthEmailCapsule button {
285
+ width: 52px;
286
+ height: 52px;
287
+ display: grid;
288
+ place-items: center;
289
+ border: 0;
290
+ border-radius: 50%;
291
+ background: var(--echo-ink-primary);
292
+ color: #fff;
293
+ cursor: pointer;
294
+ font: inherit;
295
+ font-size: 27px;
296
+ line-height: 1;
297
+ transition: transform 160ms ease, background 160ms ease, opacity 160ms ease;
298
+ }
299
+ .localAuthEmailCapsule button:hover:not(:disabled) {
300
+ transform: translateX(2px);
301
+ background: #234ba9;
302
+ }
303
+ .localAuthEmailCapsule button:focus-visible {
304
+ outline: 3px solid rgba(26,58,143,0.20);
305
+ outline-offset: 3px;
306
+ }
307
+ .localAuthEmailCapsule button:disabled {
308
+ background: #ccccca;
309
+ color: #fff;
310
+ cursor: not-allowed;
311
+ opacity: 1;
312
+ }
313
+ .localAuthConsent {
314
+ width: min(470px, calc(100% - 24px));
315
+ display: grid;
316
+ grid-template-columns: 19px minmax(0, 1fr);
317
+ gap: 10px;
318
+ align-items: start;
319
+ justify-self: center;
320
+ color: #969591;
321
+ font-size: 13px;
322
+ line-height: 1.55;
323
+ text-align: left;
324
+ }
325
+ .localAuthConsent input {
326
+ width: 18px;
327
+ height: 18px;
328
+ margin: 2px 0 0;
329
+ accent-color: var(--echo-ink-primary);
330
+ }
331
+ .localAuthConsent a {
332
+ color: #62615e;
333
+ text-decoration: underline;
334
+ text-underline-offset: 2px;
335
+ }
336
+ .localAuthWelcomeForm .localAuthStatus {
337
+ width: min(470px, calc(100% - 24px));
338
+ justify-self: center;
339
+ text-align: left;
340
+ }
341
+ .localAuthOtpWelcome {
342
+ width: min(620px, 100%);
343
+ gap: 18px;
344
+ }
345
+ .localAuthOtpWelcome .localAuthOrbScene {
346
+ margin-bottom: -4px;
347
+ }
348
+ .localAuthOtpWelcome .localAuthWelcomeCopy {
349
+ gap: 10px;
350
+ }
351
+ .localAuthOtpWelcome .localAuthWelcomeCopy p strong {
352
+ color: var(--echo-ink-text);
353
+ font-family: var(--echo-font-mono);
354
+ font-weight: 700;
355
+ }
356
+ .localAuthOtpForm {
357
+ width: min(540px, 100%);
358
+ gap: 14px;
359
+ }
360
+ .localAuthOtpCells {
361
+ display: grid;
362
+ grid-template-columns: repeat(6, minmax(42px, 1fr));
363
+ gap: 10px;
364
+ width: 100%;
365
+ }
366
+ .localAuthOtpCells input {
367
+ width: 100%;
368
+ aspect-ratio: 1 / 0.82;
369
+ min-height: 58px;
370
+ border: 1.5px solid rgba(78,78,75,0.18);
371
+ border-radius: 8px;
372
+ background: rgba(255,255,255,0.95);
373
+ box-shadow: 0 3px 8px rgba(50,48,43,0.10);
374
+ color: var(--echo-ink-text);
375
+ font-family: var(--echo-font-body);
376
+ font-size: clamp(26px, 4vw, 34px);
377
+ font-weight: 650;
378
+ line-height: 1;
379
+ text-align: center;
380
+ outline: none;
381
+ transition: border-color 160ms ease, box-shadow 160ms ease;
382
+ }
383
+ .localAuthOtpCells input:focus {
384
+ border-color: rgba(26,58,143,0.72);
385
+ box-shadow: 0 0 0 4px rgba(26,58,143,0.14), 0 3px 8px rgba(50,48,43,0.10);
386
+ }
387
+ .localAuthVerifyWide,
388
+ .localAuthBackWide {
389
+ width: 100%;
390
+ min-height: 56px;
391
+ border-radius: 999px;
392
+ justify-content: center;
393
+ }
394
+ .localAuthOtpForm .localAuthStatus {
395
+ width: min(390px, 100%);
396
+ justify-self: center;
397
+ color: var(--echo-ink-primary);
398
+ font-family: var(--echo-font-mono);
399
+ font-size: 14px;
400
+ line-height: 1.45;
401
+ text-align: center;
402
+ }
403
+ .localAuthOtpForm .localAuthStatus.is-error {
404
+ color: #c7372f;
405
+ }
406
+ .localAuthCard {
407
+ width: min(680px, 100%);
408
+ border: 1.5px solid rgba(26,58,143,0.16);
409
+ border-radius: 20px;
410
+ background: rgba(255,255,255,0.88);
411
+ padding: clamp(22px, 4vw, 34px);
412
+ box-shadow: 0 24px 60px -42px rgba(20,36,84,0.48);
413
+ text-align: left;
414
+ }
415
+ .localAuthLead {
416
+ display: grid;
417
+ justify-items: start;
418
+ gap: 10px;
419
+ }
420
+ .localAuthLead img {
421
+ width: 58px;
422
+ height: 58px;
423
+ object-fit: contain;
424
+ filter: drop-shadow(0 10px 16px rgba(26,58,143,0.18));
425
+ }
426
+ .localAuthLead h2 {
427
+ max-width: 610px;
428
+ font-size: clamp(30px, 4vw, 46px);
429
+ line-height: 1;
430
+ }
431
+ .localAuthLead p:not(.consentEyebrow) {
432
+ max-width: 590px;
433
+ margin: 0;
434
+ color: var(--echo-ink-mute);
435
+ font-size: 15px;
436
+ line-height: 1.55;
437
+ }
438
+ .localAuthForm {
439
+ display: grid;
440
+ gap: 14px;
441
+ margin-top: 22px;
442
+ }
443
+ .localAuthField {
444
+ display: grid;
445
+ gap: 7px;
446
+ }
447
+ .localAuthField > span {
448
+ font-family: var(--echo-font-mono);
449
+ color: var(--echo-ink-mute);
450
+ font-size: 11px;
451
+ font-weight: 800;
452
+ letter-spacing: 0.06em;
453
+ text-transform: uppercase;
454
+ }
455
+ .localAuthField input {
456
+ width: 100%;
457
+ min-height: 50px;
458
+ border: 1px solid rgba(26,58,143,0.20);
459
+ border-radius: 10px;
460
+ background: #fff;
461
+ color: var(--echo-ink-text);
462
+ padding: 0 14px;
463
+ font: inherit;
464
+ font-size: 16px;
465
+ outline: none;
466
+ }
467
+ .localAuthField input:focus {
468
+ border-color: var(--echo-ink-primary);
469
+ box-shadow: 0 0 0 3px rgba(26,58,143,0.12);
470
+ }
471
+ .localAuthLegal {
472
+ display: grid;
473
+ gap: 10px;
474
+ border: 1px solid rgba(26,58,143,0.10);
475
+ border-radius: 14px;
476
+ background: rgba(240,239,233,0.56);
477
+ padding: 13px 14px;
478
+ }
479
+ .localAuthLegal label {
480
+ display: grid;
481
+ grid-template-columns: 18px minmax(0, 1fr);
482
+ gap: 10px;
483
+ align-items: start;
484
+ color: var(--echo-ink-mute);
485
+ font-size: 12px;
486
+ line-height: 1.45;
487
+ }
488
+ .localAuthLegal input {
489
+ width: 16px;
490
+ height: 16px;
491
+ margin: 2px 0 0;
492
+ accent-color: var(--echo-ink-primary);
493
+ }
494
+ .localAuthLegal a {
495
+ color: var(--echo-ink-primary);
496
+ font-weight: 750;
497
+ text-decoration: underline;
498
+ text-underline-offset: 2px;
499
+ }
500
+ .localAuthActions {
501
+ display: flex;
502
+ flex-wrap: wrap;
503
+ gap: 10px;
504
+ align-items: center;
505
+ }
506
+ .localAuthStatus {
507
+ min-height: 18px;
508
+ margin: 0;
509
+ color: var(--echo-ink-mute);
510
+ font-size: 13px;
511
+ line-height: 1.45;
512
+ }
513
+ .localAuthStatus:empty { display: none; }
514
+ .localAuthStatus.is-error {
515
+ border: 1px solid rgba(139,44,38,0.22);
516
+ border-radius: 10px;
517
+ background: #fff4ee;
518
+ padding: 9px 11px;
519
+ color: #8b2c26;
520
+ font-weight: 650;
521
+ }
522
+ @media (max-width: 560px) {
523
+ .localAuthWelcomeStage {
524
+ min-height: calc(100vh - 56px);
525
+ }
526
+ .localAuthWelcome {
527
+ gap: 18px;
528
+ }
529
+ .localAuthOrbScene {
530
+ width: 88px;
531
+ height: 112px;
532
+ }
533
+ .localAuthOrb {
534
+ width: 58px;
535
+ height: 58px;
536
+ }
537
+ .localAuthOrb::before,
538
+ .localAuthOrb::after {
539
+ top: 25px;
540
+ }
541
+ .localAuthOrb::before { left: 21px; }
542
+ .localAuthOrb::after { right: 21px; }
543
+ .localAuthWelcomeCopy h2 {
544
+ font-size: 44px;
545
+ }
546
+ .localAuthEmailCapsule {
547
+ min-height: 58px;
548
+ grid-template-columns: minmax(0, 1fr) 50px;
549
+ padding-left: 18px;
550
+ }
551
+ .localAuthEmailCapsule button {
552
+ width: 46px;
553
+ height: 46px;
554
+ }
555
+ .localAuthConsent {
556
+ width: calc(100% - 16px);
557
+ }
558
+ }
559
+ @media (prefers-reduced-motion: reduce) {
560
+ .localAuthOrb,
561
+ .localAuthOrbShadow {
562
+ animation: none;
563
+ }
564
+ }
142
565
  .track { height: 12px; overflow: hidden; border-radius: 999px; background: #e8e8e1; margin: 16px 0 10px; }
143
566
  .fill { height: 100%; width: 0%; background: var(--echo-ink-primary); transition: width 180ms ease; }
144
567
  /* indeterminate "we're working on it" bar for the prep phase (before job counts move) */
@@ -173,6 +596,8 @@ export const SETUP_PAGE_STYLES_EXTRACTION = String.raw ` /* ---- dashboard (p
173
596
  .explainCta .promiseActions { width: 100%; }
174
597
  .explainCta .primary, .explainCta .secondary { width: 100%; }
175
598
  .consentActions .primary { width: 100%; }
599
+ .localAuthActions .primary,
600
+ .localAuthForm > .primary { width: 100%; }
176
601
  .cityHero { min-height: auto; }
177
602
  .cityShell {
178
603
  width: 100vw;
@@ -1664,6 +2089,36 @@ export const SETUP_PAGE_STYLES_EXTRACTION = String.raw ` /* ---- dashboard (p
1664
2089
  max-width: 650px;
1665
2090
  margin: 14px 0 0;
1666
2091
  }
2092
+ .planGateStage {
2093
+ width: 100%;
2094
+ }
2095
+ .planGateDecision {
2096
+ text-align: left;
2097
+ }
2098
+ .planGateHero {
2099
+ display: grid;
2100
+ grid-template-columns: 94px minmax(0, 1fr);
2101
+ align-items: center;
2102
+ gap: clamp(20px, 3vw, 34px);
2103
+ border-bottom: 1px solid #d7d8d3;
2104
+ padding: clamp(26px, 4vw, 42px) clamp(22px, 4vw, 34px);
2105
+ }
2106
+ .planGateHero h2 {
2107
+ max-width: 760px;
2108
+ margin: 0;
2109
+ font-size: clamp(38px, 5vw, 60px);
2110
+ line-height: 0.96;
2111
+ }
2112
+ .planGateHero p {
2113
+ max-width: 680px;
2114
+ margin: 14px 0 0;
2115
+ color: var(--echo-ink-mute);
2116
+ font-size: 16px;
2117
+ line-height: 1.5;
2118
+ }
2119
+ .planGateAccount {
2120
+ border-top: 1px solid #d7d8d3;
2121
+ }
1667
2122
  .proofStrip {
1668
2123
  width: 100%;
1669
2124
  justify-content: flex-start;