@openreceive/browser 0.1.0

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.
Files changed (94) hide show
  1. package/LICENSE +21 -0
  2. package/dist/assets/icons/bank.svg +12 -0
  3. package/dist/assets/icons/bnb.svg +1 -0
  4. package/dist/assets/icons/btc.svg +1 -0
  5. package/dist/assets/icons/card.svg +14 -0
  6. package/dist/assets/icons/crypto.svg +12 -0
  7. package/dist/assets/icons/doge.svg +1 -0
  8. package/dist/assets/icons/eth.svg +1 -0
  9. package/dist/assets/icons/lightning.svg +11 -0
  10. package/dist/assets/icons/ltc.svg +1 -0
  11. package/dist/assets/icons/sol.svg +1 -0
  12. package/dist/assets/icons/trx.svg +1 -0
  13. package/dist/assets/icons/usdc.svg +1 -0
  14. package/dist/assets/icons/usdt.svg +1 -0
  15. package/dist/assets/icons/xmr.svg +1 -0
  16. package/dist/assets/icons/xrp.svg +1 -0
  17. package/dist/assets/pay_tutorials/boltz-1.webp +0 -0
  18. package/dist/assets/pay_tutorials/boltz-2.webp +0 -0
  19. package/dist/assets/pay_tutorials/cashapp-1.webp +0 -0
  20. package/dist/assets/pay_tutorials/cashapp-2.webp +0 -0
  21. package/dist/assets/pay_tutorials/cashapp-3.webp +0 -0
  22. package/dist/assets/pay_tutorials/cashapp-4.webp +0 -0
  23. package/dist/assets/pay_tutorials/cashapp-5.webp +0 -0
  24. package/dist/assets/pay_tutorials/cashapp-6.webp +0 -0
  25. package/dist/assets/pay_tutorials/coinbase-1.webp +0 -0
  26. package/dist/assets/pay_tutorials/coinbase-2.webp +0 -0
  27. package/dist/assets/pay_tutorials/fixedfloat-1.webp +0 -0
  28. package/dist/assets/pay_tutorials/fixedfloat-2.webp +0 -0
  29. package/dist/assets/pay_tutorials/kraken-1.webp +0 -0
  30. package/dist/assets/pay_tutorials/kraken-2.webp +0 -0
  31. package/dist/assets/pay_tutorials/kraken-3.webp +0 -0
  32. package/dist/assets/pay_tutorials/kraken-4.webp +0 -0
  33. package/dist/assets/pay_tutorials/strike-1.webp +0 -0
  34. package/dist/assets/pay_tutorials/strike-2.webp +0 -0
  35. package/dist/assets/pay_tutorials/strike-3.webp +0 -0
  36. package/dist/assets/pay_tutorials/strike-4.webp +0 -0
  37. package/dist/assets/provider-icons/aqua.png +0 -0
  38. package/dist/assets/provider-icons/belo.png +0 -0
  39. package/dist/assets/provider-icons/binance.png +0 -0
  40. package/dist/assets/provider-icons/bipa.png +0 -0
  41. package/dist/assets/provider-icons/bitfinex.png +0 -0
  42. package/dist/assets/provider-icons/bitget.png +0 -0
  43. package/dist/assets/provider-icons/bitnob.png +0 -0
  44. package/dist/assets/provider-icons/bitso.png +0 -0
  45. package/dist/assets/provider-icons/bity.png +0 -0
  46. package/dist/assets/provider-icons/blink.png +0 -0
  47. package/dist/assets/provider-icons/bluewallet.png +0 -0
  48. package/dist/assets/provider-icons/boltz.png +0 -0
  49. package/dist/assets/provider-icons/bringin.png +0 -0
  50. package/dist/assets/provider-icons/bullbitcoin.png +0 -0
  51. package/dist/assets/provider-icons/cakewallet.png +0 -0
  52. package/dist/assets/provider-icons/cashapp.png +0 -0
  53. package/dist/assets/provider-icons/changenow.png +0 -0
  54. package/dist/assets/provider-icons/chivo.png +0 -0
  55. package/dist/assets/provider-icons/coinbase.png +0 -0
  56. package/dist/assets/provider-icons/coincorner.png +0 -0
  57. package/dist/assets/provider-icons/fixedfloat.png +0 -0
  58. package/dist/assets/provider-icons/getalby.png +0 -0
  59. package/dist/assets/provider-icons/kraken.png +0 -0
  60. package/dist/assets/provider-icons/kryptex.png +0 -0
  61. package/dist/assets/provider-icons/kucoin.png +0 -0
  62. package/dist/assets/provider-icons/manifest.json +207 -0
  63. package/dist/assets/provider-icons/mtpelerin.png +0 -0
  64. package/dist/assets/provider-icons/muun.png +0 -0
  65. package/dist/assets/provider-icons/okcoin.png +0 -0
  66. package/dist/assets/provider-icons/okx.png +0 -0
  67. package/dist/assets/provider-icons/phoenix.png +0 -0
  68. package/dist/assets/provider-icons/pouch.png +0 -0
  69. package/dist/assets/provider-icons/ripio.png +0 -0
  70. package/dist/assets/provider-icons/river.png +0 -0
  71. package/dist/assets/provider-icons/rizful.png +0 -0
  72. package/dist/assets/provider-icons/shakepay.png +0 -0
  73. package/dist/assets/provider-icons/sideshift.png +0 -0
  74. package/dist/assets/provider-icons/simpleswap.png +0 -0
  75. package/dist/assets/provider-icons/speed.png +0 -0
  76. package/dist/assets/provider-icons/strike.png +0 -0
  77. package/dist/assets/provider-icons/trocador.png +0 -0
  78. package/dist/assets/provider-icons/walletofsatoshi.png +0 -0
  79. package/dist/assets/provider-icons/zeus.png +0 -0
  80. package/dist/country-map.d.ts +5 -0
  81. package/dist/country-map.js +17 -0
  82. package/dist/index.d.ts +4 -0
  83. package/dist/index.js +2 -0
  84. package/dist/internal.d.ts +834 -0
  85. package/dist/internal.js +2617 -0
  86. package/dist/pay-tutorials.d.ts +1 -0
  87. package/dist/pay-tutorials.js +42 -0
  88. package/dist/provider-icons.d.ts +1 -0
  89. package/dist/provider-icons.js +84 -0
  90. package/dist/qrcode.d.ts +11 -0
  91. package/dist/status.d.ts +9 -0
  92. package/dist/status.js +25 -0
  93. package/dist/styles.css +759 -0
  94. package/package.json +28 -0
@@ -0,0 +1,759 @@
1
+ [data-openreceive-checkout] {
2
+ --or-bg: #ffffff;
3
+ --or-bg-soft: #f5f7fb;
4
+ --or-bg-raised: #ffffff;
5
+ --or-text: #172033;
6
+ --or-muted: #667085;
7
+ --or-border: #d7deea;
8
+ --or-accent: #2563eb;
9
+ --or-accent-soft: #bfdbfe;
10
+ --or-warm: #f97316;
11
+ --or-warm-soft: #fed7aa;
12
+ --or-good: #16a34a;
13
+ color: var(--or-text);
14
+ }
15
+
16
+ [data-openreceive-checkout][data-openreceive-theme="dark"] {
17
+ --or-bg: #15171f;
18
+ --or-bg-soft: #20232d;
19
+ --or-bg-raised: #262a35;
20
+ --or-text: #f5f7fb;
21
+ --or-muted: #b7bfce;
22
+ --or-border: #3a4050;
23
+ --or-accent: #7fb4ff;
24
+ --or-accent-soft: rgba(127, 180, 255, 0.28);
25
+ --or-warm: #ff9f1c;
26
+ --or-warm-soft: rgba(255, 159, 28, 0.25);
27
+ }
28
+
29
+ [data-openreceive-checkout] button,
30
+ [data-openreceive-checkout] textarea {
31
+ color: inherit;
32
+ font: inherit;
33
+ }
34
+
35
+ [data-openreceive-checkout] {
36
+ display: grid;
37
+ gap: 16px;
38
+ min-width: 0;
39
+ }
40
+
41
+ [data-openreceive-qr] {
42
+ justify-self: center;
43
+ width: min(420px, 100%);
44
+ }
45
+
46
+ [data-openreceive-qr] svg {
47
+ display: block;
48
+ width: 100%;
49
+ height: auto;
50
+ }
51
+
52
+ [data-openreceive-meta] {
53
+ display: flex;
54
+ flex-wrap: wrap;
55
+ gap: 8px;
56
+ align-items: center;
57
+ }
58
+
59
+ [data-openreceive-meta] > * {
60
+ min-height: 30px;
61
+ display: inline-flex;
62
+ align-items: center;
63
+ padding: 4px 9px;
64
+ border: 1px solid var(--or-border);
65
+ border-radius: 999px;
66
+ background: var(--or-bg-soft);
67
+ }
68
+
69
+ [data-openreceive-state="settled"] {
70
+ color: var(--or-good);
71
+ }
72
+
73
+ [data-openreceive-actions] {
74
+ display: grid;
75
+ gap: 10px;
76
+ }
77
+
78
+ [data-openreceive-actions] button,
79
+ [data-openreceive-theme-toggle],
80
+ .or-provider-actions button,
81
+ .or-provider-actions a,
82
+ .or-country-summary button {
83
+ min-height: 44px;
84
+ border: 0;
85
+ border-radius: 8px;
86
+ background: var(--or-text);
87
+ color: var(--or-bg);
88
+ cursor: pointer;
89
+ display: inline-flex;
90
+ align-items: center;
91
+ justify-content: center;
92
+ text-decoration: none;
93
+ }
94
+
95
+ [data-openreceive-theme-toggle] {
96
+ justify-self: end;
97
+ gap: 8px;
98
+ min-height: 34px;
99
+ padding: 4px 12px 4px 4px;
100
+ border: 1px solid var(--or-border);
101
+ background: var(--or-bg-raised);
102
+ color: var(--or-text);
103
+ }
104
+
105
+ [data-openreceive-checkout] textarea {
106
+ min-height: 86px;
107
+ resize: vertical;
108
+ border: 1px solid var(--or-border);
109
+ border-radius: 8px;
110
+ background: var(--or-bg-soft);
111
+ color: var(--or-text);
112
+ font: 13px/1.45 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
113
+ overflow-wrap: anywhere;
114
+ padding: 10px;
115
+ width: 100%;
116
+ }
117
+
118
+ .or-payment-status {
119
+ display: flex;
120
+ align-items: center;
121
+ gap: 12px;
122
+ min-width: 0;
123
+ padding: 12px;
124
+ border: 1px solid var(--or-border);
125
+ border-radius: 8px;
126
+ background: var(--or-bg-soft);
127
+ }
128
+
129
+ .or-payment-status div {
130
+ display: grid;
131
+ gap: 2px;
132
+ min-width: 0;
133
+ }
134
+
135
+ .or-payment-status strong {
136
+ font-size: 18px;
137
+ }
138
+
139
+ .or-payment-status span {
140
+ color: var(--or-muted);
141
+ }
142
+
143
+ .or-spinner {
144
+ width: 26px;
145
+ height: 26px;
146
+ flex: 0 0 auto;
147
+ border: 3px solid var(--or-border);
148
+ border-top-color: var(--or-warm);
149
+ border-radius: 999px;
150
+ animation: or-spin 850ms linear infinite;
151
+ }
152
+
153
+ .or-countdown {
154
+ color: var(--or-muted);
155
+ }
156
+
157
+ .or-countdown strong {
158
+ color: var(--or-text);
159
+ }
160
+
161
+ .or-theme-toggle-track {
162
+ align-items: center;
163
+ background: transparent;
164
+ border: 0;
165
+ border-radius: 999px;
166
+ display: grid;
167
+ flex: 0 0 auto;
168
+ grid-template-columns: 1fr;
169
+ height: 24px;
170
+ padding: 0;
171
+ width: 24px;
172
+ }
173
+
174
+ .or-theme-toggle-icon {
175
+ border-radius: 999px;
176
+ display: block;
177
+ grid-area: 1 / 1;
178
+ height: 24px;
179
+ position: relative;
180
+ transition: background 160ms ease, box-shadow 160ms ease, opacity 160ms ease;
181
+ width: 24px;
182
+ }
183
+
184
+ .or-theme-toggle-icon-light {
185
+ opacity: 1;
186
+ }
187
+
188
+ .or-theme-toggle-dark .or-theme-toggle-icon-light {
189
+ background: #94a3b8;
190
+ box-shadow: none;
191
+ opacity: 0.72;
192
+ }
193
+
194
+ .or-theme-toggle-label {
195
+ font-size: 14px;
196
+ font-weight: 700;
197
+ line-height: 1;
198
+ white-space: nowrap;
199
+ }
200
+
201
+ .or-theme-toggle-icon-light {
202
+ background: #facc15;
203
+ box-shadow: 0 0 0 2px rgb(250 204 21 / 0.2);
204
+ }
205
+
206
+ .or-theme-toggle-icon-light::before,
207
+ .or-theme-toggle-icon-light::after {
208
+ content: "";
209
+ position: absolute;
210
+ }
211
+
212
+ .or-theme-toggle-icon-light::before {
213
+ border: 2px solid rgb(255 255 255 / 0.72);
214
+ border-radius: 999px;
215
+ inset: 5px;
216
+ }
217
+
218
+ .or-theme-toggle-icon-light::after {
219
+ background:
220
+ radial-gradient(circle, transparent 50%, #facc15 52%),
221
+ conic-gradient(
222
+ from 0deg,
223
+ transparent 0 8deg,
224
+ rgb(255 255 255 / 0.75) 8deg 14deg,
225
+ transparent 14deg 45deg,
226
+ rgb(255 255 255 / 0.75) 45deg 51deg,
227
+ transparent 51deg 82deg,
228
+ rgb(255 255 255 / 0.75) 82deg 88deg,
229
+ transparent 88deg 127deg,
230
+ rgb(255 255 255 / 0.75) 127deg 133deg,
231
+ transparent 133deg 172deg,
232
+ rgb(255 255 255 / 0.75) 172deg 178deg,
233
+ transparent 178deg 217deg,
234
+ rgb(255 255 255 / 0.75) 217deg 223deg,
235
+ transparent 223deg 262deg,
236
+ rgb(255 255 255 / 0.75) 262deg 268deg,
237
+ transparent 268deg 307deg,
238
+ rgb(255 255 255 / 0.75) 307deg 313deg,
239
+ transparent 313deg 360deg
240
+ );
241
+ border-radius: 999px;
242
+ inset: 3px;
243
+ }
244
+
245
+ .or-wizard {
246
+ display: grid;
247
+ gap: 18px;
248
+ padding: 18px;
249
+ border: 1px solid var(--or-border);
250
+ border-radius: 8px;
251
+ background:
252
+ linear-gradient(135deg, rgba(37, 99, 235, 0.1), transparent 34%),
253
+ linear-gradient(315deg, rgba(249, 115, 22, 0.12), transparent 36%),
254
+ var(--or-bg-soft);
255
+ }
256
+
257
+ .or-wizard-header h2,
258
+ .or-wizard-route h3,
259
+ .or-provider-card h4 {
260
+ margin: 0;
261
+ }
262
+
263
+ .or-wizard-route h3 {
264
+ display: flex;
265
+ flex-wrap: wrap;
266
+ align-items: center;
267
+ gap: 10px;
268
+ }
269
+
270
+ .or-wizard-header p,
271
+ .or-wizard-route p,
272
+ .or-provider-card p {
273
+ margin: 4px 0 0;
274
+ color: var(--or-muted);
275
+ }
276
+
277
+ .or-method-grid,
278
+ .or-route-picker {
279
+ display: grid;
280
+ grid-template-columns: repeat(4, minmax(0, 1fr));
281
+ gap: 10px;
282
+ }
283
+
284
+ .or-wizard-breadcrumbs {
285
+ display: flex;
286
+ flex-wrap: wrap;
287
+ align-items: center;
288
+ gap: 6px;
289
+ }
290
+
291
+ .or-wizard-breadcrumb {
292
+ display: inline-flex;
293
+ align-items: center;
294
+ gap: 6px;
295
+ min-height: 32px;
296
+ border: 0;
297
+ background: transparent;
298
+ color: var(--or-muted);
299
+ cursor: pointer;
300
+ padding: 0;
301
+ }
302
+
303
+ .or-wizard-breadcrumb:hover {
304
+ color: var(--or-text);
305
+ }
306
+
307
+ .or-wizard-breadcrumb-current {
308
+ color: var(--or-text);
309
+ font-weight: 800;
310
+ }
311
+
312
+ .or-wizard-breadcrumbs > span[aria-hidden="true"] {
313
+ color: var(--or-muted);
314
+ }
315
+
316
+ .or-method-grid button,
317
+ .or-route-picker button,
318
+ .or-country-grid button {
319
+ min-width: 0;
320
+ border: 1px solid var(--or-border);
321
+ border-radius: 8px;
322
+ background: var(--or-bg-raised);
323
+ color: var(--or-text);
324
+ cursor: pointer;
325
+ text-align: left;
326
+ }
327
+
328
+ .or-method-grid button,
329
+ .or-route-picker button {
330
+ display: grid;
331
+ gap: 8px;
332
+ align-content: start;
333
+ min-height: 142px;
334
+ padding: 13px;
335
+ }
336
+
337
+ .or-method-grid button:hover,
338
+ .or-route-picker button:hover,
339
+ .or-country-grid button:hover,
340
+ .or-method-grid button.selected,
341
+ .or-route-picker button.selected,
342
+ .or-country-grid button.selected {
343
+ border-color: var(--or-accent);
344
+ box-shadow: 0 0 0 2px var(--or-accent-soft);
345
+ }
346
+
347
+ .or-method-grid img,
348
+ .or-route-picker img {
349
+ width: 48px;
350
+ aspect-ratio: 1;
351
+ }
352
+
353
+ .or-method-grid span,
354
+ .or-route-picker span,
355
+ .or-country-grid span {
356
+ font-weight: 800;
357
+ }
358
+
359
+ .or-method-grid small,
360
+ .or-route-picker small,
361
+ .or-country-grid small,
362
+ .or-country-summary small {
363
+ color: var(--or-muted);
364
+ line-height: 1.35;
365
+ }
366
+
367
+ .or-country-step {
368
+ display: grid;
369
+ gap: 12px;
370
+ }
371
+
372
+ .or-country-grid {
373
+ display: grid;
374
+ grid-template-columns: repeat(4, minmax(0, 1fr));
375
+ gap: 8px;
376
+ }
377
+
378
+ .or-country-grid button {
379
+ display: grid;
380
+ gap: 3px;
381
+ padding: 10px;
382
+ }
383
+
384
+ .or-country-summary {
385
+ display: flex;
386
+ justify-content: space-between;
387
+ gap: 12px;
388
+ align-items: center;
389
+ padding: 12px;
390
+ border: 1px solid var(--or-border);
391
+ border-radius: 8px;
392
+ background: var(--or-bg-raised);
393
+ }
394
+
395
+ .or-country-summary div {
396
+ display: grid;
397
+ gap: 2px;
398
+ }
399
+
400
+ .or-country-summary span {
401
+ font-weight: 800;
402
+ }
403
+
404
+ .or-country-summary button {
405
+ padding: 0 12px;
406
+ }
407
+
408
+ .or-country-select {
409
+ display: inline-flex;
410
+ align-items: center;
411
+ gap: 8px;
412
+ font-size: 0.72em;
413
+ font-weight: 700;
414
+ }
415
+
416
+ .or-country-select span {
417
+ position: absolute;
418
+ width: 1px;
419
+ height: 1px;
420
+ overflow: hidden;
421
+ clip: rect(0 0 0 0);
422
+ white-space: nowrap;
423
+ }
424
+
425
+ .or-country-select select {
426
+ min-height: 38px;
427
+ max-width: min(280px, 100%);
428
+ border: 1px solid var(--or-border);
429
+ border-radius: 8px;
430
+ background: var(--or-bg-raised);
431
+ color: var(--or-text);
432
+ font: inherit;
433
+ padding: 0 34px 0 12px;
434
+ }
435
+
436
+ .or-wizard-results {
437
+ display: grid;
438
+ gap: 14px;
439
+ }
440
+
441
+ .or-wizard-route {
442
+ display: grid;
443
+ gap: 18px;
444
+ }
445
+
446
+ .or-provider-grid {
447
+ display: grid;
448
+ grid-template-columns: repeat(2, minmax(0, 1fr));
449
+ gap: 12px;
450
+ }
451
+
452
+ .or-provider-card {
453
+ display: grid;
454
+ align-items: center;
455
+ column-gap: 12px;
456
+ grid-template-columns: minmax(0, 1fr) auto auto;
457
+ row-gap: 4px;
458
+ padding: 14px;
459
+ border: 1px solid var(--or-border);
460
+ border-radius: 8px;
461
+ background: var(--or-bg-raised);
462
+ }
463
+
464
+ .or-provider-card.recommended {
465
+ border-color: var(--or-warm);
466
+ box-shadow: 0 0 0 2px var(--or-warm-soft);
467
+ }
468
+
469
+ .or-provider-heading,
470
+ .or-provider-actions,
471
+ .or-provider-badges {
472
+ display: flex;
473
+ gap: 8px;
474
+ align-items: center;
475
+ }
476
+
477
+ .or-provider-heading {
478
+ justify-content: start;
479
+ grid-column: 1;
480
+ min-width: 0;
481
+ }
482
+
483
+ .or-provider-heading img {
484
+ border-radius: 6px;
485
+ flex: 0 0 auto;
486
+ height: 28px;
487
+ width: 28px;
488
+ }
489
+
490
+ .or-provider-heading h4 {
491
+ flex: 1 1 auto;
492
+ min-width: 0;
493
+ overflow: hidden;
494
+ text-overflow: ellipsis;
495
+ white-space: nowrap;
496
+ }
497
+
498
+ .or-provider-kind {
499
+ grid-column: 1;
500
+ margin: -2px 0 0;
501
+ color: var(--or-muted);
502
+ font-size: 0.9em;
503
+ line-height: 1.3;
504
+ }
505
+
506
+ .or-provider-heading span,
507
+ .or-provider-badges span {
508
+ border-radius: 999px;
509
+ background: var(--or-bg-soft);
510
+ color: var(--or-muted);
511
+ font-size: 12px;
512
+ font-weight: 800;
513
+ padding: 4px 8px;
514
+ grid-column: 2;
515
+ justify-self: end;
516
+ white-space: nowrap;
517
+ }
518
+
519
+ .or-provider-actions {
520
+ align-self: center;
521
+ display: flex;
522
+ grid-column: 3;
523
+ grid-row: 1 / span 2;
524
+ justify-self: end;
525
+ }
526
+
527
+ .or-provider-actions a,
528
+ .or-provider-actions .or-provider-open {
529
+ background: var(--or-bg-soft);
530
+ color: var(--or-text);
531
+ min-height: 36px;
532
+ padding: 7px 12px;
533
+ white-space: nowrap;
534
+ }
535
+
536
+ .or-tutorial-modal {
537
+ position: fixed;
538
+ inset: 0;
539
+ z-index: 50;
540
+ display: flex;
541
+ align-items: center;
542
+ justify-content: center;
543
+ padding: 16px;
544
+ background: rgb(0 0 0 / 0.6);
545
+ }
546
+
547
+ .or-tutorial-dialog {
548
+ box-sizing: border-box;
549
+ display: grid;
550
+ gap: 12px;
551
+ width: 100%;
552
+ max-width: min(440px, 100%);
553
+ max-height: min(92vh, 900px);
554
+ overflow: hidden;
555
+ padding: 12px;
556
+ border: 1px solid var(--or-border);
557
+ border-radius: 8px;
558
+ background: var(--or-bg);
559
+ box-shadow: 0 20px 70px rgb(0 0 0 / 0.32);
560
+ }
561
+
562
+ .or-tutorial-header,
563
+ .or-tutorial-controls {
564
+ display: flex;
565
+ gap: 8px;
566
+ align-items: center;
567
+ justify-content: space-between;
568
+ }
569
+
570
+ .or-tutorial-header h3 {
571
+ min-width: 0;
572
+ margin: 0;
573
+ font-size: 16px;
574
+ line-height: 1.25;
575
+ }
576
+
577
+ .or-tutorial-title {
578
+ display: flex;
579
+ align-items: center;
580
+ gap: 10px;
581
+ min-width: 0;
582
+ }
583
+
584
+ .or-tutorial-header-logo {
585
+ flex: 0 0 auto;
586
+ width: 36px;
587
+ height: 36px;
588
+ border-radius: 8px;
589
+ }
590
+
591
+ .or-tutorial-header button,
592
+ .or-tutorial-copy,
593
+ .or-tutorial-controls button {
594
+ min-height: 40px;
595
+ border: 1px solid var(--or-border);
596
+ border-radius: 8px;
597
+ background: var(--or-bg-raised);
598
+ color: var(--or-text);
599
+ cursor: pointer;
600
+ display: inline-flex;
601
+ align-items: center;
602
+ justify-content: center;
603
+ padding: 8px 12px;
604
+ }
605
+
606
+ .or-tutorial-close {
607
+ border-color: var(--or-border);
608
+ background: var(--or-bg-raised);
609
+ color: var(--or-text);
610
+ flex: 0 0 auto;
611
+ width: 36px;
612
+ height: 36px;
613
+ min-height: 36px;
614
+ padding: 0;
615
+ font-size: 16px;
616
+ font-weight: 800;
617
+ }
618
+
619
+ .or-tutorial-copy,
620
+ .or-tutorial-controls button:last-child:not(:disabled) {
621
+ border-color: var(--or-warm);
622
+ background: var(--or-warm);
623
+ color: #111827;
624
+ }
625
+
626
+ .or-tutorial-frame {
627
+ display: flex;
628
+ align-items: center;
629
+ justify-content: center;
630
+ min-height: 0;
631
+ overflow: hidden;
632
+ border: 1px solid var(--or-border);
633
+ border-radius: 8px;
634
+ background: var(--or-bg-soft);
635
+ }
636
+
637
+ .or-tutorial-image {
638
+ display: block;
639
+ width: auto;
640
+ max-width: 100%;
641
+ height: auto;
642
+ max-height: min(66vh, 720px);
643
+ object-fit: contain;
644
+ }
645
+
646
+ .or-tutorial-caption {
647
+ margin: 0;
648
+ color: var(--or-text);
649
+ font-size: 16px;
650
+ font-weight: 800;
651
+ text-align: center;
652
+ }
653
+
654
+ .or-tutorial-intro {
655
+ display: grid;
656
+ gap: 12px;
657
+ padding: 16px 8px;
658
+ text-align: center;
659
+ }
660
+
661
+ .or-tutorial-provider-logo {
662
+ justify-self: center;
663
+ width: 52px;
664
+ height: 52px;
665
+ border-radius: 8px;
666
+ }
667
+
668
+ .or-tutorial-intro p {
669
+ margin: 0;
670
+ color: var(--or-text);
671
+ font-size: 15px;
672
+ }
673
+
674
+ .or-tutorial-copy {
675
+ justify-self: center;
676
+ min-width: min(240px, 100%);
677
+ }
678
+
679
+ .or-tutorial-copy-message {
680
+ color: var(--or-good);
681
+ font-weight: 800;
682
+ }
683
+
684
+ .or-tutorial-progress {
685
+ margin: 0;
686
+ color: var(--or-muted);
687
+ font-size: 12px;
688
+ text-align: center;
689
+ }
690
+
691
+ .or-tutorial-steps {
692
+ display: flex;
693
+ gap: 6px;
694
+ justify-content: center;
695
+ }
696
+
697
+ .or-tutorial-step {
698
+ width: 7px;
699
+ height: 7px;
700
+ border-radius: 999px;
701
+ background: var(--or-border);
702
+ }
703
+
704
+ .or-tutorial-step.active {
705
+ background: var(--or-text);
706
+ }
707
+
708
+ .or-tutorial-controls button {
709
+ flex: 1 1 0;
710
+ }
711
+
712
+ .or-tutorial-controls button:disabled {
713
+ border: 1px solid var(--or-border);
714
+ background: var(--or-bg-soft);
715
+ color: var(--or-muted);
716
+ cursor: not-allowed;
717
+ }
718
+
719
+ @keyframes or-spin {
720
+ to {
721
+ transform: rotate(360deg);
722
+ }
723
+ }
724
+
725
+ @media (max-width: 760px) {
726
+ [data-openreceive-actions],
727
+ .or-method-grid,
728
+ .or-route-picker,
729
+ .or-country-grid,
730
+ .or-provider-grid,
731
+ .or-provider-actions {
732
+ grid-template-columns: none;
733
+ }
734
+
735
+ .or-country-summary {
736
+ align-items: stretch;
737
+ flex-direction: column;
738
+ }
739
+
740
+ .or-tutorial-modal {
741
+ align-items: stretch;
742
+ padding: 8px;
743
+ }
744
+
745
+ .or-tutorial-dialog {
746
+ max-height: calc(100vh - 16px);
747
+ }
748
+
749
+ .or-tutorial-controls {
750
+ display: grid;
751
+ grid-template-columns: 1fr 1fr;
752
+ }
753
+
754
+ .or-map-readout {
755
+ position: static;
756
+ border-radius: 0;
757
+ border-width: 1px 0 0;
758
+ }
759
+ }