@incodetech/web 0.0.0-dev-20260923-b02a604b → 0.0.0-dev-20260923-1a4dbec8
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.
- package/dist/base.css +8 -0
- package/dist/extensibility.es.js +1 -1
- package/dist/{flipAnimation-DhQIQp5j.js → flipAnimation-K0kaLydW.js} +325 -20
- package/dist/flow/styles.css +9 -1
- package/dist/id/id.es.js +1 -1
- package/dist/id/styles.css +9 -1
- package/dist/id/styles.css.js +1 -1
- package/dist/themes/dark.css +23 -0
- package/dist/themes/light.css +23 -0
- package/dist/types/extensibility.d.ts +7 -1
- package/dist/workflow/styles.css +9 -1
- package/package.json +2 -2
package/dist/base.css
CHANGED
|
@@ -7134,6 +7134,14 @@
|
|
|
7134
7134
|
height: auto;
|
|
7135
7135
|
}
|
|
7136
7136
|
|
|
7137
|
+
.IncodeVerificationOptionCardList .IncodeVerificationOptionCard .IncodeVerificationOptionCardIcon .IncodeVerificationOptionCardImage {
|
|
7138
|
+
min-height: var(--spacing-0, var(--spacing-none, 0px));
|
|
7139
|
+
min-width: var(--spacing-0, var(--spacing-none, 0px));
|
|
7140
|
+
object-fit: contain;
|
|
7141
|
+
width: var(--id-capture-verification-option-card-logo-size);
|
|
7142
|
+
height: var(--id-capture-verification-option-card-logo-size);
|
|
7143
|
+
}
|
|
7144
|
+
|
|
7137
7145
|
.IncodeVerificationOptionCardList .IncodeVerificationOptionCard .IncodeVerificationOptionCardIcon .IncodeIdCardIconFill, .IncodeVerificationOptionCardList .IncodeVerificationOptionCard .IncodeVerificationOptionCardIcon .IncodeUploadIdIconFill, .IncodeVerificationOptionCardList .IncodeVerificationOptionCard .IncodeVerificationOptionCardIcon .IncodePassportIconFill, .IncodeVerificationOptionCardList .IncodeVerificationOptionCard .IncodeVerificationOptionCardIcon .IncodeDeviceWalletsIconFill, .IncodeVerificationOptionCardList .IncodeVerificationOptionCard .IncodeVerificationOptionCardIcon .IncodeDigitalIdIconFill {
|
|
7138
7146
|
fill: var(--color-surface-brand-500, var(--surface-brand-500-static));
|
|
7139
7147
|
}
|
package/dist/extensibility.es.js
CHANGED
|
@@ -26,7 +26,7 @@ import { t as DateInputComposed } from "./dateInputComposed-Bi4tGQFc.js";
|
|
|
26
26
|
import "./dateInputComposed-Cx2bpmah.js";
|
|
27
27
|
import { n as RadioButtonComposed, t as RadioGroupComposed } from "./radioGroupComposed-8D0vu-V2.js";
|
|
28
28
|
import "./radioGroupComposed-DB3a5NHg.js";
|
|
29
|
-
import { b as VerificationOptionCard, c as IdExpired, i as Capture, l as IdError, n as Chooser, r as Tutorial, t as FlipAnimation, x as VerificationOptionCardList } from "./flipAnimation-
|
|
29
|
+
import { b as VerificationOptionCard, c as IdExpired, i as Capture, l as IdError, n as Chooser, r as Tutorial, t as FlipAnimation, x as VerificationOptionCardList } from "./flipAnimation-K0kaLydW.js";
|
|
30
30
|
import { t as BottomSheet } from "./bottomSheet-CoP3FqnD.js";
|
|
31
31
|
import { n as CameraFrame, t as CameraView } from "./cameraView-BrrXm3pi.js";
|
|
32
32
|
import { n as CameraOverlay, t as CameraOverlayHeader } from "./cameraOverlayHeader-D_ou9DR7.js";
|
|
@@ -15,7 +15,6 @@ import { n as RedStrikeIcon, t as ExpiredId } from "./expiredId-PA98YIsj.js";
|
|
|
15
15
|
import { i as usePreloadCaptureAnimations, n as CaptureNotification } from "./manualCaptureButton-CqiF_wnJ.js";
|
|
16
16
|
import { eventModuleNames, recordExperimentAssignmentOnce } from "@incodetech/core/events";
|
|
17
17
|
import { ONBOARDING_WEB_SDK_PARAMETER_STORE, booleanParam, defineExperimentParams, enumParam, numberParam, resolveExperiment } from "@incodetech/core/feature-management";
|
|
18
|
-
import "@incodetech/core/id";
|
|
19
18
|
//#region src/shared/card/verificationOption/verificationOptionCard.tsx
|
|
20
19
|
function VerificationOptionCardList({ children }) {
|
|
21
20
|
return /* @__PURE__ */ u("div", {
|
|
@@ -23,7 +22,7 @@ function VerificationOptionCardList({ children }) {
|
|
|
23
22
|
children
|
|
24
23
|
});
|
|
25
24
|
}
|
|
26
|
-
function VerificationOptionCard({ icon: Icon, title, testId, onClick, tag }) {
|
|
25
|
+
function VerificationOptionCard({ icon: Icon, iconSrc, title, testId, onClick, tag }) {
|
|
27
26
|
return /* @__PURE__ */ u("button", {
|
|
28
27
|
type: "button",
|
|
29
28
|
class: "IncodeVerificationOptionCard",
|
|
@@ -34,7 +33,13 @@ function VerificationOptionCard({ icon: Icon, title, testId, onClick, tag }) {
|
|
|
34
33
|
class: "IncodeVerificationOptionCardIcon",
|
|
35
34
|
"aria-hidden": "true",
|
|
36
35
|
"data-testid": `${testId}-icon`,
|
|
37
|
-
children: /* @__PURE__ */ u(
|
|
36
|
+
children: iconSrc ? /* @__PURE__ */ u("img", {
|
|
37
|
+
class: "IncodeVerificationOptionCardImage",
|
|
38
|
+
src: iconSrc,
|
|
39
|
+
alt: "",
|
|
40
|
+
loading: "lazy",
|
|
41
|
+
decoding: "async"
|
|
42
|
+
}) : /* @__PURE__ */ u(Icon, {})
|
|
38
43
|
}), /* @__PURE__ */ u("span", {
|
|
39
44
|
class: "IncodeVerificationOptionCardContent",
|
|
40
45
|
children: [/* @__PURE__ */ u("span", {
|
|
@@ -2550,7 +2555,7 @@ var CHOOSER_OPTIONS_LOOKUP = {
|
|
|
2550
2555
|
icon: DigitalIdIcon,
|
|
2551
2556
|
title: "idv2.chooser.digitalIdRedirectButtonTitle",
|
|
2552
2557
|
testId: "verification-option-digitalIdRedirect",
|
|
2553
|
-
weight:
|
|
2558
|
+
weight: 6
|
|
2554
2559
|
},
|
|
2555
2560
|
digitalIdUpload: {
|
|
2556
2561
|
type: "digitalIdUpload",
|
|
@@ -2582,22 +2587,321 @@ var CHOOSER_OPTIONS_LOOKUP = {
|
|
|
2582
2587
|
}
|
|
2583
2588
|
};
|
|
2584
2589
|
//#endregion
|
|
2590
|
+
//#region src/modules/id/chooser/digitalIdProviderLogos.ts
|
|
2591
|
+
/**
|
|
2592
|
+
* Digital-ID provider logos, keyed by provider id.
|
|
2593
|
+
*
|
|
2594
|
+
* The backend's `digitalIds.methods[].logoUrl` currently carries bare asset
|
|
2595
|
+
* file names (`idin.svg`), which would resolve against the host page and
|
|
2596
|
+
* render broken. Until it sends absolute links, the chooser card falls back to
|
|
2597
|
+
* this map. A backend-sent absolute URL always wins — see `toCardLogoSrc` in
|
|
2598
|
+
* `chooser.helpers.ts`.
|
|
2599
|
+
*
|
|
2600
|
+
* **The full Trinsic catalog is kept here on purpose**, including providers the
|
|
2601
|
+
* SDK does not offer yet, so adding one is a lookup rather than a hunt. Source:
|
|
2602
|
+
* the Trinsic integrations catalog (`content.trinsic.id/connect/integrations`).
|
|
2603
|
+
*
|
|
2604
|
+
* Keys are the Trinsic provider ids. {@link getDigitalIdProviderLogo}
|
|
2605
|
+
* normalises before looking up, so the vendor-prefixed form the SDK and
|
|
2606
|
+
* `ms-credential-verification` use (`trinsic_netherlands_idin`) finds
|
|
2607
|
+
* `netherlands-idin` too.
|
|
2608
|
+
*
|
|
2609
|
+
* `name` is the catalog's display name. It is reference data — the card shows
|
|
2610
|
+
* the backend's `displayName` — but it is what makes this list searchable by
|
|
2611
|
+
* the name a person actually knows the provider by.
|
|
2612
|
+
*/
|
|
2613
|
+
var DIGITAL_ID_PROVIDER_LOGOS = {
|
|
2614
|
+
"a-mojeid": {
|
|
2615
|
+
name: "MojeID login",
|
|
2616
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/mojeid.png"
|
|
2617
|
+
},
|
|
2618
|
+
"australia-connect-id": {
|
|
2619
|
+
name: "ConnectID",
|
|
2620
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/connectid-logo.png"
|
|
2621
|
+
},
|
|
2622
|
+
"austria-valera-eudi-sandbox": {
|
|
2623
|
+
name: "Austria Valera EUDI Sandbox",
|
|
2624
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/austria-valera-eudi-sandbox.png"
|
|
2625
|
+
},
|
|
2626
|
+
"brazil-cpf-lookup": {
|
|
2627
|
+
name: "Brazil CPF Check",
|
|
2628
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/cpf.png"
|
|
2629
|
+
},
|
|
2630
|
+
"brazil-digital-cnh": {
|
|
2631
|
+
name: "Brazil Digital CNH",
|
|
2632
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/cnh.png"
|
|
2633
|
+
},
|
|
2634
|
+
clear: {
|
|
2635
|
+
name: "CLEAR",
|
|
2636
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/clear.svg"
|
|
2637
|
+
},
|
|
2638
|
+
"czech-bank-id": {
|
|
2639
|
+
name: "Czech Bank iD",
|
|
2640
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/czech-bank-id.png"
|
|
2641
|
+
},
|
|
2642
|
+
"czech-republic-mojeid": {
|
|
2643
|
+
name: "MojeID Czech",
|
|
2644
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/mojeid.png"
|
|
2645
|
+
},
|
|
2646
|
+
"denmark-altid": {
|
|
2647
|
+
name: "AltID",
|
|
2648
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/denmark-altid.png"
|
|
2649
|
+
},
|
|
2650
|
+
"denmark-mitid": {
|
|
2651
|
+
name: "MitID",
|
|
2652
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/mitid-logo.svg"
|
|
2653
|
+
},
|
|
2654
|
+
"document-scan": {
|
|
2655
|
+
name: "Scan your government ID",
|
|
2656
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/document-scan.png"
|
|
2657
|
+
},
|
|
2658
|
+
"eudi-reference-wallet": {
|
|
2659
|
+
name: "EUDI Reference Wallet",
|
|
2660
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/eudi-reference-wallet.png"
|
|
2661
|
+
},
|
|
2662
|
+
"finnish-trust-network": {
|
|
2663
|
+
name: "Finnish Trust Network",
|
|
2664
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/ftn.png"
|
|
2665
|
+
},
|
|
2666
|
+
"france-identite": {
|
|
2667
|
+
name: "France Identité",
|
|
2668
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/france-identite.png"
|
|
2669
|
+
},
|
|
2670
|
+
"germany-eudi-sandbox": {
|
|
2671
|
+
name: "Germany EUDI Sandbox",
|
|
2672
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/germany-eudi-sandbox.png"
|
|
2673
|
+
},
|
|
2674
|
+
"google-wallet": {
|
|
2675
|
+
name: "Google Wallet",
|
|
2676
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/google-wallet.png"
|
|
2677
|
+
},
|
|
2678
|
+
"indonesia-dukcapil-match": {
|
|
2679
|
+
name: "Indonesia Identity Verification",
|
|
2680
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/indonesia-dukcapil-match.png"
|
|
2681
|
+
},
|
|
2682
|
+
"italy-spid": {
|
|
2683
|
+
name: "SPID",
|
|
2684
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/spid.svg"
|
|
2685
|
+
},
|
|
2686
|
+
"kenya-nid-lookup-3": {
|
|
2687
|
+
name: "Kenya NID Lookup",
|
|
2688
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/ke-nid.png"
|
|
2689
|
+
},
|
|
2690
|
+
"kenya-nid-match-2": {
|
|
2691
|
+
name: "Kenya NID Match",
|
|
2692
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/ke-nid.png"
|
|
2693
|
+
},
|
|
2694
|
+
"mobile-id": {
|
|
2695
|
+
name: "Mobile-ID",
|
|
2696
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/mobiil-id-logo.svg"
|
|
2697
|
+
},
|
|
2698
|
+
"moldova-evo-wallet": {
|
|
2699
|
+
name: "EVO Wallet",
|
|
2700
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/moldova-evo-wallet.png"
|
|
2701
|
+
},
|
|
2702
|
+
"netherlands-idin": {
|
|
2703
|
+
name: "IDIN",
|
|
2704
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/idin-logo.svg"
|
|
2705
|
+
},
|
|
2706
|
+
"nigeria-nin-lookup-2": {
|
|
2707
|
+
name: "Nigeria NIN Lookup",
|
|
2708
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/ng-nin.png"
|
|
2709
|
+
},
|
|
2710
|
+
"nigeria-nin-lookup-3": {
|
|
2711
|
+
name: "Nigeria NIN Lookup",
|
|
2712
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/ng-nin.png"
|
|
2713
|
+
},
|
|
2714
|
+
"nigeria-nin-match-2": {
|
|
2715
|
+
name: "Nigeria NIN Match",
|
|
2716
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/ng-nin.png"
|
|
2717
|
+
},
|
|
2718
|
+
"norway-bankid": {
|
|
2719
|
+
name: "BankID Norway",
|
|
2720
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/no-bankid.png"
|
|
2721
|
+
},
|
|
2722
|
+
oneid: {
|
|
2723
|
+
name: "OneID",
|
|
2724
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/oneid-logo.svg"
|
|
2725
|
+
},
|
|
2726
|
+
"philippines-digital-national-id-qr": {
|
|
2727
|
+
name: "Digital National ID",
|
|
2728
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/philsys-logo.png"
|
|
2729
|
+
},
|
|
2730
|
+
"philippines-philsys-match": {
|
|
2731
|
+
name: "PhilSys Biometric Verification",
|
|
2732
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/philsys-logo.png"
|
|
2733
|
+
},
|
|
2734
|
+
"philippines-physical-national-id-qr": {
|
|
2735
|
+
name: "Philippines National ID",
|
|
2736
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/philsys-logo.png"
|
|
2737
|
+
},
|
|
2738
|
+
"singpass-login": {
|
|
2739
|
+
name: "Singpass",
|
|
2740
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/singpass-logo.png"
|
|
2741
|
+
},
|
|
2742
|
+
"singpass-myinfo": {
|
|
2743
|
+
name: "Singpass",
|
|
2744
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/singpass-logo.png"
|
|
2745
|
+
},
|
|
2746
|
+
"smart-id": {
|
|
2747
|
+
name: "Smart-ID",
|
|
2748
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/smart-id-logo.svg"
|
|
2749
|
+
},
|
|
2750
|
+
"south-africa-nid-lookup-2": {
|
|
2751
|
+
name: "South Africa NID Lookup",
|
|
2752
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/za-nid.png"
|
|
2753
|
+
},
|
|
2754
|
+
"south-africa-nid-match-2": {
|
|
2755
|
+
name: "South Africa NID Match",
|
|
2756
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/za-nid.png"
|
|
2757
|
+
},
|
|
2758
|
+
"sweden-bankid": {
|
|
2759
|
+
name: "BankID Sweden",
|
|
2760
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/se-bankid.svg"
|
|
2761
|
+
},
|
|
2762
|
+
"uganda-nid-match-2": {
|
|
2763
|
+
name: "Uganda NID",
|
|
2764
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/ug-nid.png"
|
|
2765
|
+
},
|
|
2766
|
+
"uk-evisa-lookup": {
|
|
2767
|
+
name: "UK eVisa Lookup",
|
|
2768
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/uk-evisa.svg"
|
|
2769
|
+
},
|
|
2770
|
+
"usa-louisiana-wallet": {
|
|
2771
|
+
name: "LA Wallet",
|
|
2772
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/la-wallet.png"
|
|
2773
|
+
},
|
|
2774
|
+
"zimbabwe-nid-lookup-2": {
|
|
2775
|
+
name: "Zimbabwe NID Lookup",
|
|
2776
|
+
logoUrl: "https://content.trinsic.id/connect/integrations/zw-nid.png"
|
|
2777
|
+
},
|
|
2778
|
+
"trinsic-mock-output": {
|
|
2779
|
+
name: "Mock - Output",
|
|
2780
|
+
logoUrl: "https://content.trinsic.id/assets/logo/192x192.png"
|
|
2781
|
+
},
|
|
2782
|
+
"trinsic-test-database-lookup": {
|
|
2783
|
+
name: "Mock - Database Lookup",
|
|
2784
|
+
logoUrl: "https://content.trinsic.id/assets/logo/192x192.png"
|
|
2785
|
+
},
|
|
2786
|
+
"trinsic-test-deeplink": {
|
|
2787
|
+
name: "Mock - DeeplinkToMobile",
|
|
2788
|
+
logoUrl: "https://content.trinsic.id/assets/logo/192x192.png"
|
|
2789
|
+
},
|
|
2790
|
+
"trinsic-test-deeplink-refresh": {
|
|
2791
|
+
name: "Mock - DeeplinkToMobile + RefreshStepContent",
|
|
2792
|
+
logoUrl: "https://content.trinsic.id/assets/logo/192x192.png"
|
|
2793
|
+
},
|
|
2794
|
+
"trinsic-test-delayed-results": {
|
|
2795
|
+
name: "Mock - Delayed Results",
|
|
2796
|
+
logoUrl: "https://content.trinsic.id/assets/logo/192x192.png"
|
|
2797
|
+
},
|
|
2798
|
+
"trinsic-test-handoff": {
|
|
2799
|
+
name: "Mock - Handoff",
|
|
2800
|
+
logoUrl: "https://content.trinsic.id/assets/logo/192x192.png"
|
|
2801
|
+
},
|
|
2802
|
+
"trinsic-test-offline": {
|
|
2803
|
+
name: "Mock - Offline",
|
|
2804
|
+
logoUrl: "https://content.trinsic.id/assets/logo/192x192.png"
|
|
2805
|
+
},
|
|
2806
|
+
"trinsic-test-redirect": {
|
|
2807
|
+
name: "Mock - Redirect",
|
|
2808
|
+
logoUrl: "https://content.trinsic.id/assets/logo/192x192.png"
|
|
2809
|
+
},
|
|
2810
|
+
"trinsic-test-show-content": {
|
|
2811
|
+
name: "Mock - ShowContent",
|
|
2812
|
+
logoUrl: "https://content.trinsic.id/assets/logo/192x192.png"
|
|
2813
|
+
},
|
|
2814
|
+
"trinsic-test-show-content-refresh": {
|
|
2815
|
+
name: "Mock - ShowContent + RefreshStepContent",
|
|
2816
|
+
logoUrl: "https://content.trinsic.id/assets/logo/192x192.png"
|
|
2817
|
+
},
|
|
2818
|
+
"trinsic-test-sub-providers": {
|
|
2819
|
+
name: "Mock - Sub-providers",
|
|
2820
|
+
logoUrl: "https://content.trinsic.id/assets/logo/192x192.png"
|
|
2821
|
+
}
|
|
2822
|
+
};
|
|
2823
|
+
/**
|
|
2824
|
+
* The map's key form: lowercased, `_` as `-`, and the vendor prefix dropped so
|
|
2825
|
+
* `trinsic_netherlands_idin` (what the SDK and `ms-credential-verification`
|
|
2826
|
+
* use) finds `netherlands-idin` (what Trinsic publishes).
|
|
2827
|
+
*
|
|
2828
|
+
* The `trinsic-test-*` / `trinsic-mock-*` keys keep their prefix: it is part of
|
|
2829
|
+
* the name there, and dropping only the first segment leaves `test-redirect`,
|
|
2830
|
+
* which is still distinct from every real provider.
|
|
2831
|
+
*/
|
|
2832
|
+
function toLogoKey(providerId) {
|
|
2833
|
+
return providerId.toLowerCase().replace(/_/g, "-");
|
|
2834
|
+
}
|
|
2835
|
+
/**
|
|
2836
|
+
* The catalog logo for a provider id, or `undefined` when the map does not
|
|
2837
|
+
* carry it — the card then falls back to the generic digital-ID glyph.
|
|
2838
|
+
*/
|
|
2839
|
+
function getDigitalIdProviderLogo(providerId) {
|
|
2840
|
+
if (!providerId) return;
|
|
2841
|
+
const key = toLogoKey(providerId);
|
|
2842
|
+
return DIGITAL_ID_PROVIDER_LOGOS[key]?.logoUrl ?? DIGITAL_ID_PROVIDER_LOGOS[key.replace(/^trinsic-/, "")]?.logoUrl;
|
|
2843
|
+
}
|
|
2844
|
+
//#endregion
|
|
2585
2845
|
//#region src/modules/id/chooser/chooser.helpers.ts
|
|
2586
|
-
|
|
2587
|
-
|
|
2846
|
+
/**
|
|
2847
|
+
* The card logo: the backend's own link when it is absolute, else the catalog
|
|
2848
|
+
* logo for the provider (`digitalIdProviderLogos`), else nothing — the card
|
|
2849
|
+
* then renders the generic digital-ID glyph.
|
|
2850
|
+
*
|
|
2851
|
+
* The backend catalog still carries bare asset file names (`idin.svg`) for
|
|
2852
|
+
* some methods. Those would resolve against the host page and render broken,
|
|
2853
|
+
* so they are ignored in favour of the catalog map.
|
|
2854
|
+
*/
|
|
2855
|
+
function toCardLogoSrc(logoUrl, providerId) {
|
|
2856
|
+
if (logoUrl && /^(https?:\/\/|data:)/i.test(logoUrl)) return logoUrl;
|
|
2857
|
+
return getDigitalIdProviderLogo(providerId);
|
|
2858
|
+
}
|
|
2859
|
+
/**
|
|
2860
|
+
* Expands the `digitalIdRedirect` document type into one card per enabled
|
|
2861
|
+
* web-redirect provider (iDIN, FTN, …) in backend order. With no provider
|
|
2862
|
+
* options (e.g. the mDL wallet fallback) the generic redirect card is kept.
|
|
2863
|
+
*/
|
|
2864
|
+
function toDigitalIdRedirectCards(digitalIdRedirectOptions) {
|
|
2865
|
+
const base = CHOOSER_OPTIONS_LOOKUP.digitalIdRedirect;
|
|
2866
|
+
if (digitalIdRedirectOptions.length === 0) return [{
|
|
2867
|
+
...base,
|
|
2868
|
+
key: base.type
|
|
2869
|
+
}];
|
|
2870
|
+
return digitalIdRedirectOptions.map((option) => ({
|
|
2871
|
+
...base,
|
|
2872
|
+
key: `${base.type}:${option.providerId}`,
|
|
2873
|
+
testId: `${base.testId}-${option.providerId}`,
|
|
2874
|
+
providerId: option.providerId,
|
|
2875
|
+
displayName: option.displayName,
|
|
2876
|
+
iconSrc: toCardLogoSrc(option.logoUrl, option.providerId)
|
|
2877
|
+
}));
|
|
2878
|
+
}
|
|
2879
|
+
function getAvailableChooserOptions(availableDocumentTypes, digitalIdRedirectOptions = []) {
|
|
2880
|
+
const cards = [];
|
|
2881
|
+
for (const documentType of availableDocumentTypes) {
|
|
2882
|
+
if (documentType === "digitalIdRedirect") {
|
|
2883
|
+
cards.push(...toDigitalIdRedirectCards(digitalIdRedirectOptions));
|
|
2884
|
+
continue;
|
|
2885
|
+
}
|
|
2588
2886
|
const chooserOption = CHOOSER_OPTIONS_LOOKUP[documentType];
|
|
2589
|
-
if (chooserOption)
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2887
|
+
if (chooserOption) cards.push({
|
|
2888
|
+
...chooserOption,
|
|
2889
|
+
key: chooserOption.type
|
|
2890
|
+
});
|
|
2891
|
+
}
|
|
2892
|
+
return cards.sort((cardA, cardB) => cardA.weight - cardB.weight);
|
|
2593
2893
|
}
|
|
2594
2894
|
//#endregion
|
|
2595
2895
|
//#region src/modules/id/chooser/chooser.tsx
|
|
2596
2896
|
var Chooser = ({ manager, state }) => {
|
|
2597
2897
|
const { t } = useTranslation();
|
|
2598
|
-
const availableChooserOptions = T(() => getAvailableChooserOptions(state.availableDocumentTypes), [state.availableDocumentTypes]);
|
|
2599
|
-
const
|
|
2600
|
-
|
|
2898
|
+
const availableChooserOptions = T(() => getAvailableChooserOptions(state.availableDocumentTypes, state.digitalIdRedirectOptions), [state.availableDocumentTypes, state.digitalIdRedirectOptions]);
|
|
2899
|
+
const handleSelect = (card) => {
|
|
2900
|
+
if (card.providerId) {
|
|
2901
|
+
manager.selectDocument(card.type, { providerId: card.providerId });
|
|
2902
|
+
return;
|
|
2903
|
+
}
|
|
2904
|
+
manager.selectDocument(card.type);
|
|
2601
2905
|
};
|
|
2602
2906
|
return /* @__PURE__ */ u(Page, {
|
|
2603
2907
|
title: t("idv2.chooser.chooseHowToVerifyTitle"),
|
|
@@ -2605,13 +2909,14 @@ var Chooser = ({ manager, state }) => {
|
|
|
2605
2909
|
className: "IncodeChooserPage",
|
|
2606
2910
|
children: /* @__PURE__ */ u("div", {
|
|
2607
2911
|
class: "IncodeChooserContainer",
|
|
2608
|
-
children: /* @__PURE__ */ u(VerificationOptionCardList, { children: availableChooserOptions.map((
|
|
2609
|
-
icon:
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2912
|
+
children: /* @__PURE__ */ u(VerificationOptionCardList, { children: availableChooserOptions.map((card) => /* @__PURE__ */ u(VerificationOptionCard, {
|
|
2913
|
+
icon: card.icon,
|
|
2914
|
+
iconSrc: card.iconSrc,
|
|
2915
|
+
title: card.displayName ?? t(card.title),
|
|
2916
|
+
testId: card.testId,
|
|
2917
|
+
tag: card.tag ? t(card.tag) : void 0,
|
|
2918
|
+
onClick: () => handleSelect(card)
|
|
2919
|
+
}, card.key)) })
|
|
2615
2920
|
})
|
|
2616
2921
|
});
|
|
2617
2922
|
};
|
package/dist/flow/styles.css
CHANGED
|
@@ -1352,6 +1352,7 @@
|
|
|
1352
1352
|
}
|
|
1353
1353
|
|
|
1354
1354
|
.IncodeChooserPage .IncodePageContent {
|
|
1355
|
+
min-height: var(--spacing-0, var(--spacing-none, 0px));
|
|
1355
1356
|
padding-bottom: var(--spacing-16, var(--spacing-16, 16px));
|
|
1356
1357
|
}
|
|
1357
1358
|
|
|
@@ -1360,11 +1361,18 @@
|
|
|
1360
1361
|
}
|
|
1361
1362
|
|
|
1362
1363
|
.IncodeChooserPage .IncodeChooserContainer {
|
|
1364
|
+
min-height: var(--spacing-0, var(--spacing-none, 0px));
|
|
1365
|
+
width: 100%;
|
|
1366
|
+
max-height: var(--id-capture-chooser-list-max-h);
|
|
1367
|
+
max-width: var(--id-capture-chooser-list-max-w);
|
|
1368
|
+
padding: var(--id-capture-chooser-list-scroll-padding);
|
|
1369
|
+
scroll-padding-block: var(--id-capture-chooser-list-scroll-padding);
|
|
1370
|
+
margin-inline: auto;
|
|
1363
1371
|
flex-direction: column;
|
|
1364
1372
|
align-items: center;
|
|
1365
|
-
width: 100%;
|
|
1366
1373
|
margin-top: auto;
|
|
1367
1374
|
display: flex;
|
|
1375
|
+
overflow-y: auto;
|
|
1368
1376
|
}
|
|
1369
1377
|
|
|
1370
1378
|
.IncodeCaptureFrame {
|
package/dist/id/id.es.js
CHANGED
|
@@ -9,7 +9,7 @@ import { t as Processing } from "../processing-tdGRMchn.js";
|
|
|
9
9
|
import { t as Modal } from "../modal-rmddy1AH.js";
|
|
10
10
|
import { t as VerificationResult } from "../verificationResult-4WY-cpM5.js";
|
|
11
11
|
import { n as CaptureFooter, r as ProgressBar } from "../useCaptureHelpButton-BFtgwFjU.js";
|
|
12
|
-
import { _ as ID_CAPTURE_LOADING_PHASE, a as CaptureAutoFocusProvider, c as IdExpired, d as CaptureFrame, f as useIdExperiment, g as EXPERIMENT_LIFECYCLE_STATUS, h as CONTINUING_TUTORIAL_PHASES, i as Capture, l as IdError, m as CAMERA_WARMUP_LOADING_PHASES, n as Chooser, o as getCaptureFrameTitle, p as CAMERA_PERMISSION_UX, r as Tutorial, s as IdNoAttempts, t as FlipAnimation, u as canFlipCapturedCard, v as ID_CAPTURE_STATUS, y as PERMISSION_DIALOG_STATUS } from "../flipAnimation-
|
|
12
|
+
import { _ as ID_CAPTURE_LOADING_PHASE, a as CaptureAutoFocusProvider, c as IdExpired, d as CaptureFrame, f as useIdExperiment, g as EXPERIMENT_LIFECYCLE_STATUS, h as CONTINUING_TUTORIAL_PHASES, i as Capture, l as IdError, m as CAMERA_WARMUP_LOADING_PHASES, n as Chooser, o as getCaptureFrameTitle, p as CAMERA_PERMISSION_UX, r as Tutorial, s as IdNoAttempts, t as FlipAnimation, u as canFlipCapturedCard, v as ID_CAPTURE_STATUS, y as PERMISSION_DIALOG_STATUS } from "../flipAnimation-K0kaLydW.js";
|
|
13
13
|
import { t as BottomSheet } from "../bottomSheet-CoP3FqnD.js";
|
|
14
14
|
import { n as CameraFrame, t as CameraView } from "../cameraView-BrrXm3pi.js";
|
|
15
15
|
import { n as CameraOverlay, t as CameraOverlayHeader } from "../cameraOverlayHeader-D_ou9DR7.js";
|
package/dist/id/styles.css
CHANGED
|
@@ -423,6 +423,7 @@
|
|
|
423
423
|
}
|
|
424
424
|
|
|
425
425
|
.IncodeChooserPage .IncodePageContent {
|
|
426
|
+
min-height: var(--spacing-0, var(--spacing-none, 0px));
|
|
426
427
|
padding-bottom: var(--spacing-16, var(--spacing-16, 16px));
|
|
427
428
|
}
|
|
428
429
|
|
|
@@ -431,11 +432,18 @@
|
|
|
431
432
|
}
|
|
432
433
|
|
|
433
434
|
.IncodeChooserPage .IncodeChooserContainer {
|
|
435
|
+
min-height: var(--spacing-0, var(--spacing-none, 0px));
|
|
436
|
+
width: 100%;
|
|
437
|
+
max-height: var(--id-capture-chooser-list-max-h);
|
|
438
|
+
max-width: var(--id-capture-chooser-list-max-w);
|
|
439
|
+
padding: var(--id-capture-chooser-list-scroll-padding);
|
|
440
|
+
scroll-padding-block: var(--id-capture-chooser-list-scroll-padding);
|
|
441
|
+
margin-inline: auto;
|
|
434
442
|
flex-direction: column;
|
|
435
443
|
align-items: center;
|
|
436
|
-
width: 100%;
|
|
437
444
|
margin-top: auto;
|
|
438
445
|
display: flex;
|
|
446
|
+
overflow-y: auto;
|
|
439
447
|
}
|
|
440
448
|
|
|
441
449
|
.IncodeCaptureFrame {
|
package/dist/id/styles.css.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default "/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n@layer properties {\n @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {\n .IncodeComponent, .IncodeComponent *, .IncodeComponent :before, .IncodeComponent :after, .IncodeComponent ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-border-style: solid;\n }\n }\n}\n\n.IncodeSrOnly {\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.IncodeAgeVerificationPage .IncodePageInner {\n padding-top: var(--spacing-8, var(--spacing-8, 8px));\n padding-bottom: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeAgeVerificationPage .IncodePageHeader {\n height: var(--page-header-height);\n min-height: var(--page-header-height);\n}\n\n.IncodeAgeVerificationPage .IncodePageLogo {\n height: var(--age-verification-logo-height);\n}\n\n.IncodeAgeVerificationPage .IncodePageTitleContainer {\n max-width: none;\n}\n\n.IncodeAgeVerificationPage .IncodePageContent {\n justify-content: center;\n}\n\n.IncodeAgeVerificationPage .IncodePageFooter {\n padding-top: var(--spacing-12, var(--spacing-12, 12px));\n padding-bottom: var(--spacing-0, var(--spacing-none, 0px));\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationContent {\n justify-content: space-between;\n align-items: center;\n gap: var(--spacing-16, var(--spacing-16, 16px));\n flex-direction: column;\n flex: 1;\n display: flex;\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationList {\n width: 100%;\n max-width: var(--incode-form-max-w);\n justify-content: center;\n gap: var(--spacing-16, var(--spacing-16, 16px));\n padding: var(--spacing-0, var(--spacing-none, 0px));\n flex-direction: column;\n flex: 1;\n margin-inline: auto;\n list-style-type: none;\n display: flex;\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationItem {\n align-items: center;\n gap: var(--spacing-16, var(--spacing-16, 16px));\n display: flex;\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationIcon {\n height: var(--spacing-64, var(--spacing-64, 64px));\n width: var(--spacing-96, var(--spacing-96, 96px));\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationIcon img {\n width: 100%;\n height: 100%;\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationText {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n flex: 1;\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationButton {\n width: 100%;\n max-width: var(--incode-form-max-w);\n margin-inline: auto;\n}\n\n.IncodeIdTutorial .IncodePageTitleContainer {\n padding-block: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeIdTutorial .IncodeBaseTutorialContainer {\n margin: calc(var(--spacing-24, var(--spacing-24, 24px)) * -1);\n}\n\n.IncodeIdTutorial .IncodeBaseTutorialAnimationContainer {\n padding: var(--spacing-0, var(--spacing-none, 0px));\n}\n\n.IncodeFlipAnimation {\n background-color: var(--color-surface-neutral-0, var(--surface-neutral-0));\n height: 100%;\n padding: var(--spacing-24, var(--spacing-24, 24px));\n flex-direction: column;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdFlipCardPage .IncodePageInner {\n padding: var(--spacing-0, var(--spacing-none, 0px));\n}\n\n.IncodeIdFlipCardLayout {\n width: 100%;\n height: 100%;\n padding: var(--spacing-24, var(--spacing-24, 24px));\n background-color: var(--color-surface-neutral-0, var(--surface-neutral-0));\n flex-direction: column;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent {\n z-index: 10;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardTopArea {\n justify-content: flex-end;\n align-items: center;\n gap: var(--spacing-24, var(--spacing-24, 24px));\n padding-bottom: var(--spacing-40, var(--spacing-40, 40px));\n z-index: 10;\n flex-direction: column;\n flex: 1;\n width: 100%;\n display: flex;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardCopy {\n opacity: 0;\n flex-direction: column;\n align-items: center;\n animation: .3s ease-out forwards incodeIdFlipCardFadeIn;\n display: flex;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardTitle {\n text-align: center;\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h2-size);\n font-weight: var(--typography-headline-h2-weight);\n line-height: var(--typography-headline-h2-line-height);\n letter-spacing: var(--typography-headline-h2-letter-spacing);\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardSubtitle {\n max-width: var(--id-capture-flip-card-subtitle-max-w);\n text-align: center;\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n color: var(--color-text-body-secondary, var(--text-body-500-secondary));\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeCaptureFrame {\n overflow: hidden;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeCaptureFrame.IncodeCaptureFrameVertical {\n width: var(--id-capture-frame-vertical-width);\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeCaptureFrame.IncodeIdFlipCardFrameFlipping {\n --frame-border-color: var(--border-neutral-100);\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardScene {\n perspective: 1200px;\n width: 100%;\n height: 100%;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardCard {\n width: 100%;\n height: 100%;\n transform-style: preserve-3d;\n animation: 1s ease-in-out .6s forwards incodeIdFlipCardRotate;\n position: relative;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardCard {\n animation: none;\n }\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardFace {\n inset: var(--spacing-0, var(--spacing-none, 0px));\n backface-visibility: hidden;\n width: 100%;\n height: 100%;\n position: absolute;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardFace.IncodeIdFlipCardFaceBack {\n transform: rotateY(180deg);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardFace.IncodeIdFlipCardFaceBack {\n opacity: 0;\n animation: 1s ease-in-out .6s forwards incodeIdFlipCardReducedMotionFadeIn;\n transform: none;\n }\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardImage {\n object-fit: cover;\n width: 100%;\n height: 100%;\n animation: 1s ease-in-out .6s forwards incodeIdFlipCardFrontFade;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardImage {\n animation: 1s ease-in-out .6s forwards incodeIdFlipCardReducedMotionFadeOut;\n }\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardAsset {\n object-fit: cover;\n width: 100%;\n height: 100%;\n padding: var(--spacing-4, var(--spacing-4, 4px));\n display: block;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardBottomArea {\n z-index: 10;\n width: 100%;\n max-width: var(--id-capture-bottom-area-max-w);\n padding-top: var(--spacing-8, var(--spacing-8, 8px));\n flex-direction: column;\n flex: 1;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardBottomArea .IncodeCaptureEncryptionLabel {\n justify-content: center;\n align-items: center;\n gap: var(--spacing-4, var(--spacing-4, 4px));\n font-family: var(--typography-body-family);\n font-size: var(--typography-body-m-regular-size);\n font-weight: var(--typography-body-m-regular-weight);\n line-height: var(--typography-body-m-regular-line-height);\n letter-spacing: var(--typography-body-m-regular-letter-spacing);\n white-space: nowrap;\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n display: flex;\n}\n\n@keyframes incodeIdFlipCardFadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes incodeIdFlipCardRotate {\n from {\n transform: rotateY(0);\n }\n\n to {\n transform: rotateY(180deg);\n }\n}\n\n@keyframes incodeIdFlipCardFrontFade {\n 0%, 20% {\n opacity: 1;\n }\n\n 50%, 100% {\n opacity: 0;\n }\n}\n\n@keyframes incodeIdFlipCardReducedMotionFadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes incodeIdFlipCardReducedMotionFadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n.IncodeCommonIssuesFullScreen .IncodeModalDialog {\n max-width: none;\n height: 100%;\n max-height: none;\n}\n\n.IncodeCommonIssuesFullScreen .IncodeModalContent {\n border-radius: var(--radius-none, var(--border-radius-none));\n max-width: none;\n height: 100%;\n margin: auto;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesQuestionIcon {\n flex-shrink: 0;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesTitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h2-size);\n font-weight: var(--typography-headline-h2-weight);\n line-height: var(--typography-headline-h2-line-height);\n letter-spacing: var(--typography-headline-h2-letter-spacing);\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesCards {\n width: 100%;\n max-width: var(--incode-form-max-w);\n gap: var(--spacing-32, var(--spacing-32, 32px));\n padding-block: var(--spacing-16, var(--spacing-16, 16px));\n flex-direction: column;\n display: flex;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesCard {\n align-items: flex-start;\n gap: var(--spacing-16, var(--spacing-16, 16px));\n display: flex;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesCardIcon {\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n flex-shrink: 0;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesCardText {\n gap: var(--spacing-4, var(--spacing-4, 4px));\n flex-direction: column;\n display: flex;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesCardTitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesCardBody {\n font-family: var(--typography-body-family);\n font-size: var(--typography-body-m-regular-size);\n font-weight: var(--typography-body-m-regular-weight);\n line-height: var(--typography-body-m-regular-line-height);\n letter-spacing: var(--typography-body-m-regular-letter-spacing);\n color: var(--color-text-body-secondary, var(--text-body-500-secondary));\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesButtons {\n margin-top: auto;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesTakeManually {\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesTryAgain {\n width: 100%;\n}\n\n.IncodeChooserPage .IncodePageContent {\n padding-bottom: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeChooserPage .IncodePageTitle {\n max-width: var(--incode-form-max);\n}\n\n.IncodeChooserPage .IncodeChooserContainer {\n flex-direction: column;\n align-items: center;\n width: 100%;\n margin-top: auto;\n display: flex;\n}\n\n.IncodeCaptureFrame {\n border-radius: var(--radius-medium, var(--border-radius-medium));\n --frame-border-color: var(--border-neutral-100);\n border: var(--id-capture-frame-border-width) solid var(--frame-border-color);\n justify-content: center;\n align-self: center;\n align-items: center;\n transition: max-width .3s ease-out, border-color .3s ease-out;\n display: flex;\n position: relative;\n}\n\n.IncodeCaptureFrame.IncodeCaptureFrameHorizontal {\n width: 100%;\n max-width: var(--id-capture-frame-horizontal-max-width);\n aspect-ratio: 35 / 22;\n}\n\n.IncodeCaptureFrame.IncodeCaptureFrameVertical {\n width: 100%;\n max-width: var(--id-capture-frame-vertical-max-width);\n aspect-ratio: 22 / 35;\n}\n\n.IncodeCaptureFrame.IncodeCaptureFramePassport.IncodeCaptureFrameHorizontal {\n aspect-ratio: 42 / 30;\n}\n\n.IncodeCaptureFrame.IncodeCaptureFramePassport.IncodeCaptureFrameVertical {\n aspect-ratio: 30 / 42;\n}\n\n.IncodeCaptureFrame.IncodeCaptureFrameIdle {\n --frame-border-color: var(--border-neutral-100);\n}\n\n.IncodeCaptureFrame.IncodeCaptureFrameCapturing, .IncodeCaptureFrame.IncodeCaptureFrameFocus {\n --frame-border-color: var(--border-brand-500);\n}\n\n.IncodeCaptureFrame.IncodeCaptureFrameAnalyzing, .IncodeCaptureFrame.IncodeCaptureFrameSuccess {\n --frame-border-color: var(--border-status-positive-static);\n}\n\n.IncodeCaptureFrame.IncodeCaptureFrameError {\n --frame-border-color: var(--border-status-negative);\n}\n\n.IncodeIdCaptureStage {\n width: 100%;\n height: 100%;\n position: relative;\n}\n\n.IncodeIdCaptureStage > * {\n inset: var(--spacing-0, var(--spacing-none, 0px));\n position: absolute;\n}\n\n.IncodeIdCaptureStage > .IncodeIdCaptureStageResultExiting {\n animation: incodeIdCaptureResultCrossfadeOut var(--id-capture-result-crossfade-duration) linear forwards;\n pointer-events: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdCaptureStage > .IncodeIdCaptureStageResultExiting {\n animation-duration: 1ms;\n }\n}\n\n.IncodeIdCaptureStage > .IncodeIdCaptureStageResultEntering {\n animation: incodeIdCaptureResultCrossfadeIn var(--id-capture-result-crossfade-duration) linear forwards;\n pointer-events: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdCaptureStage > .IncodeIdCaptureStageResultEntering {\n animation-duration: 1ms;\n }\n}\n\n.IncodeIdCapturePage {\n background-color: var(--color-surface-neutral-900, var(--surface-neutral-900));\n}\n\n@media (min-width: 48rem) {\n .IncodeIdCapturePage {\n background-color: var(--capture-page-backdrop-color);\n }\n}\n\n.IncodeIdCapturePage .IncodePageInner {\n padding: var(--spacing-0, var(--spacing-none, 0px));\n}\n\n.IncodeIdCapturePage .IncodePageContent {\n flex: 1;\n position: relative;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing {\n height: 100%;\n color: var(--color-text-body-0, var(--text-body-0-static));\n flex-direction: column;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureVideo {\n pointer-events: none;\n inset: var(--spacing-0, var(--spacing-none, 0px));\n position: absolute;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureVideo.IncodeCaptureVideoLoading {\n opacity: 0;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureVideo .IncodeCaptureVideoElement {\n inset: var(--spacing-0, var(--spacing-none, 0px));\n object-fit: cover;\n width: 100%;\n max-width: 100%;\n height: 100%;\n position: absolute;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureOverlay {\n pointer-events: none;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureButton {\n border-radius: var(--radius-button-primary, var(--button-primary-border-radius));\n padding-inline: var(--spacing-24, var(--spacing-24, 24px));\n padding-block: var(--spacing-12, var(--spacing-12, 12px));\n background-color: var(--color-button-primary-surface-default, var(--button-primary-surface-default));\n color: var(--color-button-primary-text-default, var(--button-primary-text-default));\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureInitializing {\n height: 100%;\n color: var(--color-text-body-0, var(--text-body-0-static));\n flex-direction: column;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureInitializing .IncodeCaptureInitializingText {\n margin-top: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureUploading, .IncodeIdCapturePage .IncodeCaptureUploading {\n height: 100%;\n color: var(--color-text-body-0, var(--text-body-0-static));\n flex-direction: column;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n@keyframes incodeIdCaptureResultCrossfadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes incodeIdCaptureResultCrossfadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.IncodeCaptureOverlayId {\n padding: var(--spacing-24, var(--spacing-24, 24px));\n align-items: center;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureTopSection {\n justify-content: flex-end;\n align-items: center;\n gap: var(--spacing-24, var(--spacing-24, 24px));\n padding-bottom: var(--spacing-40, var(--spacing-40, 40px));\n z-index: 10;\n flex-direction: column;\n flex: 1;\n display: flex;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureTopSection .IncodeCameraOverlayHeader {\n padding-inline: var(--spacing-16, var(--spacing-16, 16px));\n padding-top: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter {\n flex: 1;\n justify-content: space-between;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeCaptureFooterCaptureSection {\n position: relative;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer {\n pointer-events: none;\n z-index: 1000;\n --manual-capture-tooltip-button-gap: var(--spacing-4);\n --manual-capture-tooltip-button-top-offset: var(--spacing-12);\n --manual-capture-tooltip-button-center-offset: calc(var(--spacing-32) + var(--manual-capture-tooltip-button-gap));\n width: max-content;\n left: 50%;\n bottom: calc(100% - ( var(--manual-capture-tooltip-button-top-offset) - var(--manual-capture-tooltip-button-gap) ));\n animation: manualCaptureTooltipExit .35s ease-in var(--manual-capture-tooltip-dismiss-delay, 3.5s) forwards;\n justify-content: center;\n display: flex;\n position: absolute;\n transform: translateX(-50%);\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer .IncodeIdManualCaptureTooltip {\n border-radius: var(--radius-medium, var(--border-radius-medium));\n background-color: var(--color-surface-neutral-900, var(--surface-neutral-900));\n padding: var(--spacing-16, var(--spacing-16, 16px));\n animation: .5s ease-out forwards slideUp;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer .IncodeIdManualCaptureTooltip .IncodeIdManualCaptureTooltipList {\n margin: var(--spacing-0, var(--spacing-none, 0px));\n padding: var(--spacing-0, var(--spacing-none, 0px));\n flex-direction: column;\n align-items: center;\n list-style-type: none;\n display: flex;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer .IncodeIdManualCaptureTooltip .IncodeIdManualCaptureTooltipList li {\n margin: var(--spacing-0, var(--spacing-none, 0px));\n font-family: var(--typography-tooltip-family);\n font-size: var(--typography-tooltip-m-size);\n font-weight: var(--typography-tooltip-m-weight);\n line-height: var(--typography-tooltip-m-line-height);\n letter-spacing: var(--typography-tooltip-m-letter-spacing);\n text-wrap: nowrap;\n color: var(--color-text-body-0-static, var(--text-body-0-static));\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer.IncodeIdManualCaptureTooltipContainerSrOnly {\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n animation: none;\n position: absolute;\n overflow: hidden;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer.IncodeIdManualCaptureTooltipContainerSrOnly .IncodeIdManualCaptureTooltip {\n animation: none;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer.IncodeIdManualCaptureTooltipContainerAutoDismiss {\n animation-name: manualCaptureTooltipExitAutoDismiss;\n}\n\n.IncodeCaptureOverlayId .IncodeCameraFrameHorizontal.IncodeCaptureFramePassport {\n aspect-ratio: 42 / 30;\n}\n\n.IncodeCaptureOverlayId .IncodeCameraFrameVertical.IncodeCaptureFramePassport {\n aspect-ratio: 30 / 42;\n}\n\n@keyframes manualCaptureTooltipExit {\n from {\n opacity: 1;\n transform: translateX(-50%);\n }\n\n to {\n opacity: 0;\n transform: translate(-50%, calc(50% + var(--manual-capture-tooltip-button-center-offset)));\n }\n}\n\n@keyframes manualCaptureTooltipExitAutoDismiss {\n from {\n opacity: 1;\n transform: translateX(-50%) scale(1);\n }\n\n to {\n opacity: .5;\n transform: translate(-50%, calc(25% + var(--manual-capture-tooltip-button-center-offset))) scale(.5);\n }\n}\n\n.IncodeIdManualCaptureButton {\n bottom: var(--spacing-24, var(--spacing-24, 24px));\n z-index: 100;\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n width: 100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n justify-content: center;\n align-items: center;\n gap: var(--spacing-4, var(--spacing-4, 4px));\n flex-direction: column;\n animation: .5s ease-out forwards slideUp;\n display: flex;\n position: absolute;\n left: 50%;\n}\n\n.IncodeIdManualCaptureButton .IncodeButtonLink {\n height: 100%;\n padding: var(--spacing-0, var(--spacing-none, 0px));\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n}\n\n.IncodeIdManualCaptureButton .IncodeIdManualCaptureTooltipContainer .IncodeIdManualCaptureTooltip {\n border-radius: var(--radius-medium, var(--border-radius-medium));\n background-color: var(--color-surface-neutral-900, var(--surface-neutral-900));\n padding: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeIdManualCaptureButton .IncodeIdManualCaptureTooltipContainer .IncodeIdManualCaptureTooltip .IncodeIdManualCaptureTooltipList {\n margin: var(--spacing-0, var(--spacing-none, 0px));\n padding: var(--spacing-0, var(--spacing-none, 0px));\n flex-direction: column;\n align-items: center;\n list-style-type: none;\n display: flex;\n}\n\n.IncodeIdManualCaptureButton .IncodeIdManualCaptureTooltipContainer .IncodeIdManualCaptureTooltip .IncodeIdManualCaptureTooltipList li {\n margin: var(--spacing-0, var(--spacing-none, 0px));\n font-family: var(--typography-tooltip-family);\n font-size: var(--typography-tooltip-m-size);\n font-weight: var(--typography-tooltip-m-weight);\n line-height: var(--typography-tooltip-m-line-height);\n letter-spacing: var(--typography-tooltip-m-letter-spacing);\n text-wrap: nowrap;\n color: var(--color-text-body-0-static, var(--text-body-0-static));\n}\n\n.IncodeIdManualCaptureButton .IncodeIdManualCaptureButtonContent .IncodeIdManualCaptureButtonButton svg {\n transition: filter .2s, transform .2s;\n}\n\n.IncodeIdManualCaptureButton .IncodeIdManualCaptureButtonContent:active svg {\n filter: brightness(.8);\n transform: scale(.95);\n}\n\n@keyframes slideUpAndDown {\n 0%, 12% {\n opacity: 0;\n transform: translateY(100%);\n }\n\n 24% {\n opacity: 1;\n transform: translateY(0);\n }\n\n 76% {\n opacity: 1;\n transform: translateY(0);\n }\n\n 88%, 100% {\n opacity: 0;\n transform: translateY(100%);\n }\n}\n\n.IncodeIdHint {\n inset: var(--spacing-0, var(--spacing-none, 0px));\n z-index: 10;\n justify-content: center;\n align-items: center;\n display: flex;\n position: absolute;\n}\n\n.IncodeIdHint .IncodeIdHintAnimated {\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n animation: 3s ease-in-out forwards slideUpAndDown;\n display: flex;\n position: relative;\n}\n\n.IncodeIdHint .IncodeIdHintAnimated .IncodeIdHintSvg {\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdHint .IncodeIdHintAnimated .IncodeIdHintSvg svg {\n width: var(--id-capture-hint-svg-size);\n height: var(--id-capture-hint-svg-size);\n min-width: var(--id-capture-hint-svg-size);\n min-height: var(--id-capture-hint-svg-size);\n}\n\n.IncodeComponent .IncodePermissionInCameraPage .IncodePermissionInCameraContent {\n opacity: 0;\n width: 100%;\n height: 100%;\n animation: incodePermissionInCameraReveal var(--id-tutorial-to-permission-transition-duration) ease-out var(--id-permission-in-camera-reveal-delay) forwards;\n flex-direction: column;\n align-items: center;\n display: flex;\n}\n\n.IncodeComponent .IncodePermissionInCameraPage .IncodePermissionInCameraReservedFooter {\n visibility: hidden;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeComponent .IncodePermissionInCameraPage .IncodePermissionInCameraContent {\n animation-duration: 1ms;\n animation-delay: 0s;\n }\n}\n\n@keyframes incodePermissionInCameraReveal {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage {\n width: 100%;\n height: 100%;\n position: relative;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowCaptureLayer, .IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowPermissionLayer, .IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowTutorialLayer {\n inset: var(--spacing-0, var(--spacing-none, 0px));\n position: absolute;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowCaptureLayer {\n z-index: 10;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowPermissionLayer {\n z-index: 20;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowTutorialLayer {\n z-index: 30;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowPermissionLayerExiting {\n pointer-events: none;\n animation: incodePermissionInCameraToCaptureExit var(--id-permission-in-camera-to-capture-transition-duration) ease-in var(--id-permission-in-camera-to-capture-transition-duration) forwards;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowPermissionLayerExiting .IncodePermissionInCameraHeading {\n animation: incodePermissionInCameraHeadingExit var(--id-permission-in-camera-to-capture-transition-duration) ease-in forwards;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowTutorialLayerExiting {\n pointer-events: none;\n animation: incodeTutorialToPermissionInCameraExit var(--id-tutorial-to-permission-transition-duration) ease-in forwards;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeComponent .IncodePermissionInCameraFlowPermissionLayerExiting {\n animation-duration: 1ms;\n animation-delay: 0s;\n }\n\n .IncodeComponent .IncodePermissionInCameraFlowPermissionLayerExiting .IncodePermissionInCameraHeading, .IncodeComponent .IncodePermissionInCameraFlowTutorialLayerExiting {\n animation-duration: 1ms;\n }\n}\n\n@keyframes incodeTutorialToPermissionInCameraExit {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes incodePermissionInCameraHeadingExit {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes incodePermissionInCameraToCaptureExit {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n.IncodeIdProcessingPage .IncodePageInner {\n padding: var(--spacing-0, var(--spacing-none, 0px));\n}\n\n.IncodeIdProcessingLayout {\n width: 100%;\n height: 100%;\n padding: var(--spacing-24, var(--spacing-24, 24px));\n background-color: var(--color-surface-neutral-0, var(--surface-neutral-0));\n flex-direction: column;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent {\n z-index: 10;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeIdProcessingTopArea {\n justify-content: flex-end;\n align-items: center;\n gap: var(--spacing-24, var(--spacing-24, 24px));\n padding-bottom: var(--spacing-40, var(--spacing-40, 40px));\n z-index: 10;\n flex-direction: column;\n flex: 1;\n width: 100%;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeCaptureFrame {\n overflow: hidden;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeCaptureFrame.IncodeCaptureFrameVertical {\n width: var(--id-capture-frame-vertical-width);\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeCaptureFrame.IncodeCaptureFrameVertical .IncodeIdProcessingOverlay {\n left: -25%;\n right: -25%;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeCaptureFrame .IncodeIdProcessingImage {\n background-color: var(--color-surface-neutral-900, var(--surface-neutral-900));\n object-fit: cover;\n width: 100%;\n max-width: 100%;\n height: 100%;\n max-height: 100%;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeCaptureFrame .IncodeIdProcessingImage.IncodeIdProcessingImageBlurred {\n filter: blur(var(--id-processing-image-blur-radius));\n -webkit-backdrop-filter: blur(var(--id-processing-image-blur-radius));\n backdrop-filter: blur(var(--id-processing-image-blur-radius));\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeCaptureFrame .IncodeIdProcessingOverlay {\n pointer-events: none;\n z-index: 10;\n justify-content: center;\n align-items: center;\n display: flex;\n position: absolute;\n inset: 0 -10%;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeIdProcessingBottomArea {\n width: 100%;\n max-width: var(--id-capture-bottom-area-max-w);\n padding-top: var(--spacing-8, var(--spacing-8, 8px));\n z-index: 10;\n flex-direction: column;\n flex: 1;\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeIdProcessingBottomArea .IncodeCaptureEncryptionLabel {\n justify-content: center;\n align-items: center;\n gap: var(--spacing-4, var(--spacing-4, 4px));\n padding-bottom: var(--spacing-12, var(--spacing-12, 12px));\n font-family: var(--typography-body-family);\n font-size: var(--typography-body-m-regular-size);\n font-weight: var(--typography-body-m-regular-weight);\n line-height: var(--typography-body-m-regular-line-height);\n letter-spacing: var(--typography-body-m-regular-letter-spacing);\n white-space: nowrap;\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n display: flex;\n}\n\n.IncodeIdProcessingLayout.IncodeIdProcessingLayoutNoImage .IncodeIdProcessingBottomArea {\n justify-content: flex-end;\n}\n\n.IncodeIdProcessingLayout .IncodeAnalyzingContent {\n flex-direction: column;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeAnalyzingContent .IncodeProgressBarContainer {\n margin-bottom: var(--spacing-24, var(--spacing-24, 24px));\n}\n\n.IncodeIdProcessingLayout .IncodeAnalyzingContent .IncodeAnalyzingTitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h2-size);\n font-weight: var(--typography-headline-h2-weight);\n line-height: var(--typography-headline-h2-line-height);\n letter-spacing: var(--typography-headline-h2-letter-spacing);\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n text-align: center;\n min-height: var(--typography-headline-h2-line-height);\n}\n\n.IncodeIdProcessingLayout .IncodeAnalyzingContent .IncodeAnalyzingTitle .IncodeAnalyzingTitleText {\n animation: IncodeAnalyzingTitleFade var(--id-capture-analyzing-title-fade-duration) ease-out both;\n display: inline-block;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdProcessingLayout .IncodeAnalyzingContent .IncodeAnalyzingTitle .IncodeAnalyzingTitleText {\n animation-duration: 1ms;\n }\n}\n\n.IncodeIdProcessingLayout .IncodeAnalyzingLottie {\n width: 100%;\n max-width: none;\n}\n\n@keyframes IncodeAnalyzingTitleFade {\n from {\n opacity: 0;\n transform: translateY(var(--id-capture-analyzing-title-fade-offset));\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingResultContent, .IncodeIdProcessingLayout .IncodeIdProcessingResultStatus {\n flex-direction: column;\n align-items: center;\n width: 100%;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingResultTitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h2-size);\n font-weight: var(--typography-headline-h2-weight);\n line-height: var(--typography-headline-h2-line-height);\n letter-spacing: var(--typography-headline-h2-letter-spacing);\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n text-align: center;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingResultSubtitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n color: var(--color-text-body-secondary, var(--text-body-500-secondary));\n text-align: center;\n max-width: var(--incode-form-max-w);\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingResultButtonContainer {\n margin-top: var(--spacing-24, var(--spacing-24, 24px));\n gap: var(--spacing-16, var(--spacing-16, 16px));\n flex-direction: column;\n width: 100%;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingResultAttempts {\n padding-block: var(--spacing-12, var(--spacing-12, 12px));\n text-align: center;\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h4-size);\n font-weight: var(--typography-headline-h4-weight);\n line-height: var(--typography-headline-h4-line-height);\n letter-spacing: var(--typography-headline-h4-letter-spacing);\n color: var(--color-text-body-secondary, var(--text-body-500-secondary));\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingResultContentExiting, .IncodeIdProcessingLayout .IncodeIdProcessingResultButtonContainerExiting {\n animation: .3s ease-out forwards incodeIdProcessingResultFadeOut;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdProcessingLayout .IncodeIdProcessingResultContentExiting, .IncodeIdProcessingLayout .IncodeIdProcessingResultButtonContainerExiting {\n animation-duration: 1ms;\n }\n}\n\n@keyframes incodeIdProcessingResultFadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n.IncodeIdError {\n inset: var(--spacing-0, var(--spacing-none, 0px));\n z-index: 1000;\n justify-content: center;\n align-items: center;\n gap: var(--spacing-16, var(--spacing-16, 16px));\n flex-direction: column;\n width: 100%;\n height: 100%;\n display: flex;\n position: fixed;\n}\n\n.IncodeIdError .IncodeIdErrorMessage {\n text-align: center;\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h4-size);\n font-weight: var(--typography-headline-h4-weight);\n line-height: var(--typography-headline-h4-line-height);\n letter-spacing: var(--typography-headline-h4-letter-spacing);\n color: var(--color-text-body-0, var(--text-body-0-static));\n max-width: var(--incode-form-max-w);\n margin-bottom: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeIdNoAttemptsContent {\n padding-inline: var(--spacing-20, var(--spacing-20, 20px));\n max-height: var(--id-no-attempts-content-max-h);\n max-width: var(--id-no-attempts-content-max-w);\n flex-direction: column;\n flex: 1;\n justify-content: center;\n align-items: center;\n margin: auto;\n display: flex;\n}\n\n.IncodeIdNoAttemptsContent .IncodeIdNoAttemptsIcon {\n margin-bottom: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeIdNoAttemptsContent .IncodeIdNoAttemptsTitle {\n text-align: center;\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n}\n\n.IncodeIdNoAttemptsContent .IncodeIdNoAttemptsSubtitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n color: var(--color-text-body-secondary, var(--text-body-500-secondary));\n text-align: center;\n max-width: var(--incode-form-max-w);\n}\n\n.IncodeIdNoAttemptsContent .IncodeIdNoAttemptsButtonContainer {\n bottom: var(--spacing-32, var(--spacing-32, 32px));\n right: var(--spacing-0, var(--spacing-none, 0px));\n left: var(--spacing-0, var(--spacing-none, 0px));\n padding-inline: var(--spacing-24, var(--spacing-24, 24px));\n justify-content: center;\n display: flex;\n position: absolute;\n}\n\n.IncodeUnacceptedIdDocuments {\n margin-top: var(--spacing-32, var(--spacing-32, 32px));\n flex-direction: column;\n align-items: center;\n width: 100%;\n display: flex;\n}\n\n.IncodeUnacceptedIdDocuments .IncodeUnacceptedIdDocumentsCountry {\n margin-bottom: var(--spacing-32, var(--spacing-32, 32px));\n align-items: center;\n gap: var(--spacing-8, var(--spacing-8, 8px));\n flex-direction: column;\n display: flex;\n}\n\n.IncodeUnacceptedIdDocuments .IncodeUnacceptedIdDocumentsCountryHeading {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h4-size);\n font-weight: var(--typography-headline-h4-weight);\n line-height: var(--typography-headline-h4-line-height);\n letter-spacing: var(--typography-headline-h4-letter-spacing);\n}\n\n.IncodeUnacceptedIdDocuments .IncodeUnacceptedIdDocumentsCountryLabel {\n align-items: center;\n gap: var(--spacing-8, var(--spacing-8, 8px));\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h3-size);\n font-weight: var(--typography-headline-h3-weight);\n line-height: var(--typography-headline-h3-line-height);\n letter-spacing: var(--typography-headline-h3-letter-spacing);\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n display: inline-flex;\n}\n\n.IncodeIdCaptureNotification {\n right: var(--spacing-24, var(--spacing-24, 24px));\n left: var(--spacing-24, var(--spacing-24, 24px));\n z-index: 100;\n max-width: var(--incode-form-max-w);\n padding-bottom: var(--spacing-32, var(--spacing-32, 32px));\n top: var(--incode-overlay-top-inset, var(--spacing-24));\n align-items: flex-end;\n margin: auto;\n display: flex;\n position: absolute;\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent {\n z-index: 100;\n border-radius: var(--radius-large, var(--border-radius-large));\n border-style: var(--tw-border-style);\n border-width: 2px;\n border-color: var(--color-border-neutral-300, var(--border-neutral-300));\n background-color: var(--color-surface-neutral-900-80, var(--surface-neutral-900-80));\n width: 100%;\n padding-inline: var(--spacing-20, var(--spacing-20, 20px));\n box-shadow: var(--id-capture-notification-content-shadow);\n display: flex;\n overflow: hidden;\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent.IncodeIdCaptureNotificationContent--minimal {\n justify-content: center;\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent .IncodeIdCaptureNotificationText {\n justify-content: center;\n gap: var(--spacing-8, var(--spacing-8, 8px));\n padding-top: var(--spacing-16, var(--spacing-16, 16px));\n padding-bottom: var(--spacing-12, var(--spacing-12, 12px));\n text-align: center;\n color: var(--color-text-body-0-static, var(--text-body-0-static));\n flex-direction: column;\n display: flex;\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent .IncodeIdCaptureNotificationText .IncodeIdCaptureNotificationTitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h3-size);\n font-weight: var(--typography-headline-h3-weight);\n line-height: var(--typography-headline-h3-line-height);\n letter-spacing: var(--typography-headline-h3-letter-spacing);\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent .IncodeIdCaptureNotificationText .IncodeIdCaptureNotificationDescription {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n color: var(--color-text-body-tertiary-static, var(--text-body-300-tertiary-static));\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent.IncodeIdCaptureNotificationContent--minimal .IncodeIdCaptureNotificationText {\n gap: var(--spacing-4, var(--spacing-4, 4px));\n padding-block: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent.IncodeIdCaptureNotificationContent--minimal .IncodeIdCaptureNotificationText .IncodeIdCaptureNotificationTitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent.IncodeIdCaptureNotificationContent--minimal .IncodeIdCaptureNotificationText .IncodeIdCaptureNotificationDescription {\n font-family: var(--typography-body-family);\n font-size: var(--typography-body-m-regular-size);\n font-weight: var(--typography-body-m-regular-weight);\n line-height: var(--typography-body-m-regular-line-height);\n letter-spacing: var(--typography-body-m-regular-letter-spacing);\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent .IncodeIdCaptureNotificationAnimation {\n height: var(--id-capture-notification-animation-height);\n justify-content: center;\n align-items: center;\n width: auto;\n display: flex;\n}\n\n.IncodeDigitalIdUploadPage {\n height: 100%;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadBody {\n justify-content: center;\n align-items: center;\n row-gap: var(--spacing-16, var(--spacing-16, 16px));\n width: 100%;\n height: 100%;\n max-width: var(--digital-id-content-max-w);\n flex-direction: column;\n margin-inline: auto;\n display: flex;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadPreviewBody {\n row-gap: var(--spacing-16, var(--spacing-16, 16px));\n grid-template-columns: 1fr;\n grid-template-rows: var(--spacing-24) var(--digital-id-preview-h) var(--spacing-24);\n width: 100%;\n height: 100%;\n max-width: var(--digital-id-content-max-w);\n align-content: center;\n justify-items: center;\n margin-inline: auto;\n display: grid;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadPreStatusZone {\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadPostCaptionZone {\n justify-content: center;\n align-items: flex-start;\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadFooter {\n width: 100%;\n margin-inline: auto;\n margin-top: var(--spacing-24, var(--spacing-24, 24px));\n margin-bottom: var(--spacing-8, var(--spacing-8, 8px));\n justify-content: flex-end;\n row-gap: var(--spacing-16, var(--spacing-16, 16px));\n max-width: var(--digital-id-content-max-w);\n min-height: var(--digital-id-footer-min-h);\n flex-direction: column;\n display: flex;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadHiddenInput {\n display: none;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadTutorialIllustration {\n width: 100%;\n max-height: var(--digital-id-tutorial-illustration-max-h);\n flex: 1;\n justify-content: center;\n align-items: center;\n display: flex;\n overflow: hidden;\n}\n\n.IncodeDigitalIdUploadPage .IncodeUploadIdScreenImage {\n height: var(--digital-id-illustration-max-h);\n aspect-ratio: 191 / 266;\n width: auto;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadPreviewCard {\n border-radius: var(--radius-medium, var(--border-radius-medium));\n border-style: var(--tw-border-style);\n --tw-border-style: solid;\n border-style: solid;\n border-width: 1px;\n border-color: var(--color-border-neutral-100, var(--border-neutral-100));\n background-color: var(--color-surface-neutral-0, var(--surface-neutral-0));\n width: var(--digital-id-preview-w);\n height: var(--digital-id-preview-h);\n justify-content: center;\n align-items: center;\n display: flex;\n overflow: hidden;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadDocumentPreview {\n width: var(--digital-id-preview-w);\n height: var(--digital-id-preview-h);\n justify-content: center;\n align-items: center;\n display: flex;\n position: relative;\n overflow: visible;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadDocumentPreviewPdf {\n border-radius: var(--radius-medium, var(--border-radius-medium));\n border-style: var(--tw-border-style);\n border-width: var(--border-width-bold, var(--primitive-border-width-2));\n --tw-border-style: solid;\n border-style: solid;\n border-color: var(--color-border-status-positive, var(--border-status-positive-static));\n object-fit: contain;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadPreviewPdf {\n object-fit: contain;\n width: 100%;\n height: 100%;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadFileName {\n text-align: center;\n font-family: var(--typography-body-family);\n font-size: var(--typography-body-m-regular-size);\n font-weight: var(--typography-body-m-regular-weight);\n line-height: var(--typography-body-m-regular-line-height);\n letter-spacing: var(--typography-body-m-regular-letter-spacing);\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n max-width: var(--digital-id-file-name-max-w);\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadProgressBar .IncodeProgressBar {\n border-radius: var(--radius-full, var(--border-radius-full));\n background-color: var(--color-surface-neutral-200, var(--surface-neutral-200));\n width: var(--digital-id-progress-bar-w);\n height: var(--digital-id-progress-bar-h);\n overflow: hidden;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadProgressBar .IncodeProgressBarFill {\n border-radius: var(--radius-full, var(--border-radius-full));\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadLaserOverlay {\n pointer-events: none;\n width: var(--digital-id-preview-w);\n height: var(--digital-id-laser-h);\n transform: translateX(-50%) scale(var(--digital-id-laser-scale));\n position: absolute;\n top: -2px;\n left: 50%;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeDigitalIdUploadPage .IncodeDigitalIdUploadLaserOverlay {\n display: none;\n }\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadSuccessIcon {\n color: var(--color-icon-status-positive, var(--icon-status-positive));\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadErrorIcon {\n margin-bottom: var(--spacing-8, var(--spacing-8, 8px));\n color: var(--color-icon-status-negative, var(--icon-status-negative));\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadErrorPreview {\n margin-top: var(--spacing-8, var(--spacing-8, 8px));\n border-radius: var(--radius-medium, var(--border-radius-medium));\n border-style: var(--tw-border-style);\n --tw-border-style: solid;\n border-style: solid;\n border-width: 1px;\n border-color: var(--color-border-status-negative, var(--border-status-negative));\n padding: var(--spacing-4);\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadAttempts {\n margin-top: var(--spacing-8, var(--spacing-8, 8px));\n font-family: var(--typography-body-family);\n font-size: var(--typography-body-s-regular-size);\n font-weight: var(--typography-body-s-regular-weight);\n line-height: var(--typography-body-s-regular-line-height);\n letter-spacing: var(--typography-body-s-regular-letter-spacing);\n color: var(--color-text-body-secondary, var(--text-body-500-secondary));\n}\n\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n";
|
|
1
|
+
export default "/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n@layer properties {\n @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {\n .IncodeComponent, .IncodeComponent *, .IncodeComponent :before, .IncodeComponent :after, .IncodeComponent ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-border-style: solid;\n }\n }\n}\n\n.IncodeSrOnly {\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.IncodeAgeVerificationPage .IncodePageInner {\n padding-top: var(--spacing-8, var(--spacing-8, 8px));\n padding-bottom: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeAgeVerificationPage .IncodePageHeader {\n height: var(--page-header-height);\n min-height: var(--page-header-height);\n}\n\n.IncodeAgeVerificationPage .IncodePageLogo {\n height: var(--age-verification-logo-height);\n}\n\n.IncodeAgeVerificationPage .IncodePageTitleContainer {\n max-width: none;\n}\n\n.IncodeAgeVerificationPage .IncodePageContent {\n justify-content: center;\n}\n\n.IncodeAgeVerificationPage .IncodePageFooter {\n padding-top: var(--spacing-12, var(--spacing-12, 12px));\n padding-bottom: var(--spacing-0, var(--spacing-none, 0px));\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationContent {\n justify-content: space-between;\n align-items: center;\n gap: var(--spacing-16, var(--spacing-16, 16px));\n flex-direction: column;\n flex: 1;\n display: flex;\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationList {\n width: 100%;\n max-width: var(--incode-form-max-w);\n justify-content: center;\n gap: var(--spacing-16, var(--spacing-16, 16px));\n padding: var(--spacing-0, var(--spacing-none, 0px));\n flex-direction: column;\n flex: 1;\n margin-inline: auto;\n list-style-type: none;\n display: flex;\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationItem {\n align-items: center;\n gap: var(--spacing-16, var(--spacing-16, 16px));\n display: flex;\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationIcon {\n height: var(--spacing-64, var(--spacing-64, 64px));\n width: var(--spacing-96, var(--spacing-96, 96px));\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationIcon img {\n width: 100%;\n height: 100%;\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationText {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n flex: 1;\n}\n\n.IncodeAgeVerificationPage .IncodeAgeVerificationButton {\n width: 100%;\n max-width: var(--incode-form-max-w);\n margin-inline: auto;\n}\n\n.IncodeIdTutorial .IncodePageTitleContainer {\n padding-block: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeIdTutorial .IncodeBaseTutorialContainer {\n margin: calc(var(--spacing-24, var(--spacing-24, 24px)) * -1);\n}\n\n.IncodeIdTutorial .IncodeBaseTutorialAnimationContainer {\n padding: var(--spacing-0, var(--spacing-none, 0px));\n}\n\n.IncodeFlipAnimation {\n background-color: var(--color-surface-neutral-0, var(--surface-neutral-0));\n height: 100%;\n padding: var(--spacing-24, var(--spacing-24, 24px));\n flex-direction: column;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdFlipCardPage .IncodePageInner {\n padding: var(--spacing-0, var(--spacing-none, 0px));\n}\n\n.IncodeIdFlipCardLayout {\n width: 100%;\n height: 100%;\n padding: var(--spacing-24, var(--spacing-24, 24px));\n background-color: var(--color-surface-neutral-0, var(--surface-neutral-0));\n flex-direction: column;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent {\n z-index: 10;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardTopArea {\n justify-content: flex-end;\n align-items: center;\n gap: var(--spacing-24, var(--spacing-24, 24px));\n padding-bottom: var(--spacing-40, var(--spacing-40, 40px));\n z-index: 10;\n flex-direction: column;\n flex: 1;\n width: 100%;\n display: flex;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardCopy {\n opacity: 0;\n flex-direction: column;\n align-items: center;\n animation: .3s ease-out forwards incodeIdFlipCardFadeIn;\n display: flex;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardTitle {\n text-align: center;\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h2-size);\n font-weight: var(--typography-headline-h2-weight);\n line-height: var(--typography-headline-h2-line-height);\n letter-spacing: var(--typography-headline-h2-letter-spacing);\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardSubtitle {\n max-width: var(--id-capture-flip-card-subtitle-max-w);\n text-align: center;\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n color: var(--color-text-body-secondary, var(--text-body-500-secondary));\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeCaptureFrame {\n overflow: hidden;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeCaptureFrame.IncodeCaptureFrameVertical {\n width: var(--id-capture-frame-vertical-width);\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeCaptureFrame.IncodeIdFlipCardFrameFlipping {\n --frame-border-color: var(--border-neutral-100);\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardScene {\n perspective: 1200px;\n width: 100%;\n height: 100%;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardCard {\n width: 100%;\n height: 100%;\n transform-style: preserve-3d;\n animation: 1s ease-in-out .6s forwards incodeIdFlipCardRotate;\n position: relative;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardCard {\n animation: none;\n }\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardFace {\n inset: var(--spacing-0, var(--spacing-none, 0px));\n backface-visibility: hidden;\n width: 100%;\n height: 100%;\n position: absolute;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardFace.IncodeIdFlipCardFaceBack {\n transform: rotateY(180deg);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardFace.IncodeIdFlipCardFaceBack {\n opacity: 0;\n animation: 1s ease-in-out .6s forwards incodeIdFlipCardReducedMotionFadeIn;\n transform: none;\n }\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardImage {\n object-fit: cover;\n width: 100%;\n height: 100%;\n animation: 1s ease-in-out .6s forwards incodeIdFlipCardFrontFade;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardImage {\n animation: 1s ease-in-out .6s forwards incodeIdFlipCardReducedMotionFadeOut;\n }\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardAsset {\n object-fit: cover;\n width: 100%;\n height: 100%;\n padding: var(--spacing-4, var(--spacing-4, 4px));\n display: block;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardBottomArea {\n z-index: 10;\n width: 100%;\n max-width: var(--id-capture-bottom-area-max-w);\n padding-top: var(--spacing-8, var(--spacing-8, 8px));\n flex-direction: column;\n flex: 1;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdFlipCardLayout .IncodeIdFlipCardLayoutContent .IncodeIdFlipCardBottomArea .IncodeCaptureEncryptionLabel {\n justify-content: center;\n align-items: center;\n gap: var(--spacing-4, var(--spacing-4, 4px));\n font-family: var(--typography-body-family);\n font-size: var(--typography-body-m-regular-size);\n font-weight: var(--typography-body-m-regular-weight);\n line-height: var(--typography-body-m-regular-line-height);\n letter-spacing: var(--typography-body-m-regular-letter-spacing);\n white-space: nowrap;\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n display: flex;\n}\n\n@keyframes incodeIdFlipCardFadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes incodeIdFlipCardRotate {\n from {\n transform: rotateY(0);\n }\n\n to {\n transform: rotateY(180deg);\n }\n}\n\n@keyframes incodeIdFlipCardFrontFade {\n 0%, 20% {\n opacity: 1;\n }\n\n 50%, 100% {\n opacity: 0;\n }\n}\n\n@keyframes incodeIdFlipCardReducedMotionFadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes incodeIdFlipCardReducedMotionFadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n.IncodeCommonIssuesFullScreen .IncodeModalDialog {\n max-width: none;\n height: 100%;\n max-height: none;\n}\n\n.IncodeCommonIssuesFullScreen .IncodeModalContent {\n border-radius: var(--radius-none, var(--border-radius-none));\n max-width: none;\n height: 100%;\n margin: auto;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesQuestionIcon {\n flex-shrink: 0;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesTitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h2-size);\n font-weight: var(--typography-headline-h2-weight);\n line-height: var(--typography-headline-h2-line-height);\n letter-spacing: var(--typography-headline-h2-letter-spacing);\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesCards {\n width: 100%;\n max-width: var(--incode-form-max-w);\n gap: var(--spacing-32, var(--spacing-32, 32px));\n padding-block: var(--spacing-16, var(--spacing-16, 16px));\n flex-direction: column;\n display: flex;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesCard {\n align-items: flex-start;\n gap: var(--spacing-16, var(--spacing-16, 16px));\n display: flex;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesCardIcon {\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n flex-shrink: 0;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesCardText {\n gap: var(--spacing-4, var(--spacing-4, 4px));\n flex-direction: column;\n display: flex;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesCardTitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesCardBody {\n font-family: var(--typography-body-family);\n font-size: var(--typography-body-m-regular-size);\n font-weight: var(--typography-body-m-regular-weight);\n line-height: var(--typography-body-m-regular-line-height);\n letter-spacing: var(--typography-body-m-regular-letter-spacing);\n color: var(--color-text-body-secondary, var(--text-body-500-secondary));\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesButtons {\n margin-top: auto;\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesTakeManually {\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n}\n\n.IncodeCommonIssuesContent .IncodeCommonIssuesTryAgain {\n width: 100%;\n}\n\n.IncodeChooserPage .IncodePageContent {\n min-height: var(--spacing-0, var(--spacing-none, 0px));\n padding-bottom: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeChooserPage .IncodePageTitle {\n max-width: var(--incode-form-max);\n}\n\n.IncodeChooserPage .IncodeChooserContainer {\n min-height: var(--spacing-0, var(--spacing-none, 0px));\n width: 100%;\n max-height: var(--id-capture-chooser-list-max-h);\n max-width: var(--id-capture-chooser-list-max-w);\n padding: var(--id-capture-chooser-list-scroll-padding);\n scroll-padding-block: var(--id-capture-chooser-list-scroll-padding);\n margin-inline: auto;\n flex-direction: column;\n align-items: center;\n margin-top: auto;\n display: flex;\n overflow-y: auto;\n}\n\n.IncodeCaptureFrame {\n border-radius: var(--radius-medium, var(--border-radius-medium));\n --frame-border-color: var(--border-neutral-100);\n border: var(--id-capture-frame-border-width) solid var(--frame-border-color);\n justify-content: center;\n align-self: center;\n align-items: center;\n transition: max-width .3s ease-out, border-color .3s ease-out;\n display: flex;\n position: relative;\n}\n\n.IncodeCaptureFrame.IncodeCaptureFrameHorizontal {\n width: 100%;\n max-width: var(--id-capture-frame-horizontal-max-width);\n aspect-ratio: 35 / 22;\n}\n\n.IncodeCaptureFrame.IncodeCaptureFrameVertical {\n width: 100%;\n max-width: var(--id-capture-frame-vertical-max-width);\n aspect-ratio: 22 / 35;\n}\n\n.IncodeCaptureFrame.IncodeCaptureFramePassport.IncodeCaptureFrameHorizontal {\n aspect-ratio: 42 / 30;\n}\n\n.IncodeCaptureFrame.IncodeCaptureFramePassport.IncodeCaptureFrameVertical {\n aspect-ratio: 30 / 42;\n}\n\n.IncodeCaptureFrame.IncodeCaptureFrameIdle {\n --frame-border-color: var(--border-neutral-100);\n}\n\n.IncodeCaptureFrame.IncodeCaptureFrameCapturing, .IncodeCaptureFrame.IncodeCaptureFrameFocus {\n --frame-border-color: var(--border-brand-500);\n}\n\n.IncodeCaptureFrame.IncodeCaptureFrameAnalyzing, .IncodeCaptureFrame.IncodeCaptureFrameSuccess {\n --frame-border-color: var(--border-status-positive-static);\n}\n\n.IncodeCaptureFrame.IncodeCaptureFrameError {\n --frame-border-color: var(--border-status-negative);\n}\n\n.IncodeIdCaptureStage {\n width: 100%;\n height: 100%;\n position: relative;\n}\n\n.IncodeIdCaptureStage > * {\n inset: var(--spacing-0, var(--spacing-none, 0px));\n position: absolute;\n}\n\n.IncodeIdCaptureStage > .IncodeIdCaptureStageResultExiting {\n animation: incodeIdCaptureResultCrossfadeOut var(--id-capture-result-crossfade-duration) linear forwards;\n pointer-events: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdCaptureStage > .IncodeIdCaptureStageResultExiting {\n animation-duration: 1ms;\n }\n}\n\n.IncodeIdCaptureStage > .IncodeIdCaptureStageResultEntering {\n animation: incodeIdCaptureResultCrossfadeIn var(--id-capture-result-crossfade-duration) linear forwards;\n pointer-events: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdCaptureStage > .IncodeIdCaptureStageResultEntering {\n animation-duration: 1ms;\n }\n}\n\n.IncodeIdCapturePage {\n background-color: var(--color-surface-neutral-900, var(--surface-neutral-900));\n}\n\n@media (min-width: 48rem) {\n .IncodeIdCapturePage {\n background-color: var(--capture-page-backdrop-color);\n }\n}\n\n.IncodeIdCapturePage .IncodePageInner {\n padding: var(--spacing-0, var(--spacing-none, 0px));\n}\n\n.IncodeIdCapturePage .IncodePageContent {\n flex: 1;\n position: relative;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing {\n height: 100%;\n color: var(--color-text-body-0, var(--text-body-0-static));\n flex-direction: column;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureVideo {\n pointer-events: none;\n inset: var(--spacing-0, var(--spacing-none, 0px));\n position: absolute;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureVideo.IncodeCaptureVideoLoading {\n opacity: 0;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureVideo .IncodeCaptureVideoElement {\n inset: var(--spacing-0, var(--spacing-none, 0px));\n object-fit: cover;\n width: 100%;\n max-width: 100%;\n height: 100%;\n position: absolute;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureOverlay {\n pointer-events: none;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureButton {\n border-radius: var(--radius-button-primary, var(--button-primary-border-radius));\n padding-inline: var(--spacing-24, var(--spacing-24, 24px));\n padding-block: var(--spacing-12, var(--spacing-12, 12px));\n background-color: var(--color-button-primary-surface-default, var(--button-primary-surface-default));\n color: var(--color-button-primary-text-default, var(--button-primary-text-default));\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureInitializing {\n height: 100%;\n color: var(--color-text-body-0, var(--text-body-0-static));\n flex-direction: column;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureInitializing .IncodeCaptureInitializingText {\n margin-top: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeIdCapturePage .IncodeCaptureInitializing .IncodeCaptureUploading, .IncodeIdCapturePage .IncodeCaptureUploading {\n height: 100%;\n color: var(--color-text-body-0, var(--text-body-0-static));\n flex-direction: column;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n@keyframes incodeIdCaptureResultCrossfadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes incodeIdCaptureResultCrossfadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.IncodeCaptureOverlayId {\n padding: var(--spacing-24, var(--spacing-24, 24px));\n align-items: center;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureTopSection {\n justify-content: flex-end;\n align-items: center;\n gap: var(--spacing-24, var(--spacing-24, 24px));\n padding-bottom: var(--spacing-40, var(--spacing-40, 40px));\n z-index: 10;\n flex-direction: column;\n flex: 1;\n display: flex;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureTopSection .IncodeCameraOverlayHeader {\n padding-inline: var(--spacing-16, var(--spacing-16, 16px));\n padding-top: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter {\n flex: 1;\n justify-content: space-between;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeCaptureFooterCaptureSection {\n position: relative;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer {\n pointer-events: none;\n z-index: 1000;\n --manual-capture-tooltip-button-gap: var(--spacing-4);\n --manual-capture-tooltip-button-top-offset: var(--spacing-12);\n --manual-capture-tooltip-button-center-offset: calc(var(--spacing-32) + var(--manual-capture-tooltip-button-gap));\n width: max-content;\n left: 50%;\n bottom: calc(100% - ( var(--manual-capture-tooltip-button-top-offset) - var(--manual-capture-tooltip-button-gap) ));\n animation: manualCaptureTooltipExit .35s ease-in var(--manual-capture-tooltip-dismiss-delay, 3.5s) forwards;\n justify-content: center;\n display: flex;\n position: absolute;\n transform: translateX(-50%);\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer .IncodeIdManualCaptureTooltip {\n border-radius: var(--radius-medium, var(--border-radius-medium));\n background-color: var(--color-surface-neutral-900, var(--surface-neutral-900));\n padding: var(--spacing-16, var(--spacing-16, 16px));\n animation: .5s ease-out forwards slideUp;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer .IncodeIdManualCaptureTooltip .IncodeIdManualCaptureTooltipList {\n margin: var(--spacing-0, var(--spacing-none, 0px));\n padding: var(--spacing-0, var(--spacing-none, 0px));\n flex-direction: column;\n align-items: center;\n list-style-type: none;\n display: flex;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer .IncodeIdManualCaptureTooltip .IncodeIdManualCaptureTooltipList li {\n margin: var(--spacing-0, var(--spacing-none, 0px));\n font-family: var(--typography-tooltip-family);\n font-size: var(--typography-tooltip-m-size);\n font-weight: var(--typography-tooltip-m-weight);\n line-height: var(--typography-tooltip-m-line-height);\n letter-spacing: var(--typography-tooltip-m-letter-spacing);\n text-wrap: nowrap;\n color: var(--color-text-body-0-static, var(--text-body-0-static));\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer.IncodeIdManualCaptureTooltipContainerSrOnly {\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n animation: none;\n position: absolute;\n overflow: hidden;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer.IncodeIdManualCaptureTooltipContainerSrOnly .IncodeIdManualCaptureTooltip {\n animation: none;\n}\n\n.IncodeCaptureOverlayId .IncodeCaptureFooter .IncodeIdManualCaptureTooltipContainer.IncodeIdManualCaptureTooltipContainerAutoDismiss {\n animation-name: manualCaptureTooltipExitAutoDismiss;\n}\n\n.IncodeCaptureOverlayId .IncodeCameraFrameHorizontal.IncodeCaptureFramePassport {\n aspect-ratio: 42 / 30;\n}\n\n.IncodeCaptureOverlayId .IncodeCameraFrameVertical.IncodeCaptureFramePassport {\n aspect-ratio: 30 / 42;\n}\n\n@keyframes manualCaptureTooltipExit {\n from {\n opacity: 1;\n transform: translateX(-50%);\n }\n\n to {\n opacity: 0;\n transform: translate(-50%, calc(50% + var(--manual-capture-tooltip-button-center-offset)));\n }\n}\n\n@keyframes manualCaptureTooltipExitAutoDismiss {\n from {\n opacity: 1;\n transform: translateX(-50%) scale(1);\n }\n\n to {\n opacity: .5;\n transform: translate(-50%, calc(25% + var(--manual-capture-tooltip-button-center-offset))) scale(.5);\n }\n}\n\n.IncodeIdManualCaptureButton {\n bottom: var(--spacing-24, var(--spacing-24, 24px));\n z-index: 100;\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n width: 100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n justify-content: center;\n align-items: center;\n gap: var(--spacing-4, var(--spacing-4, 4px));\n flex-direction: column;\n animation: .5s ease-out forwards slideUp;\n display: flex;\n position: absolute;\n left: 50%;\n}\n\n.IncodeIdManualCaptureButton .IncodeButtonLink {\n height: 100%;\n padding: var(--spacing-0, var(--spacing-none, 0px));\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n}\n\n.IncodeIdManualCaptureButton .IncodeIdManualCaptureTooltipContainer .IncodeIdManualCaptureTooltip {\n border-radius: var(--radius-medium, var(--border-radius-medium));\n background-color: var(--color-surface-neutral-900, var(--surface-neutral-900));\n padding: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeIdManualCaptureButton .IncodeIdManualCaptureTooltipContainer .IncodeIdManualCaptureTooltip .IncodeIdManualCaptureTooltipList {\n margin: var(--spacing-0, var(--spacing-none, 0px));\n padding: var(--spacing-0, var(--spacing-none, 0px));\n flex-direction: column;\n align-items: center;\n list-style-type: none;\n display: flex;\n}\n\n.IncodeIdManualCaptureButton .IncodeIdManualCaptureTooltipContainer .IncodeIdManualCaptureTooltip .IncodeIdManualCaptureTooltipList li {\n margin: var(--spacing-0, var(--spacing-none, 0px));\n font-family: var(--typography-tooltip-family);\n font-size: var(--typography-tooltip-m-size);\n font-weight: var(--typography-tooltip-m-weight);\n line-height: var(--typography-tooltip-m-line-height);\n letter-spacing: var(--typography-tooltip-m-letter-spacing);\n text-wrap: nowrap;\n color: var(--color-text-body-0-static, var(--text-body-0-static));\n}\n\n.IncodeIdManualCaptureButton .IncodeIdManualCaptureButtonContent .IncodeIdManualCaptureButtonButton svg {\n transition: filter .2s, transform .2s;\n}\n\n.IncodeIdManualCaptureButton .IncodeIdManualCaptureButtonContent:active svg {\n filter: brightness(.8);\n transform: scale(.95);\n}\n\n@keyframes slideUpAndDown {\n 0%, 12% {\n opacity: 0;\n transform: translateY(100%);\n }\n\n 24% {\n opacity: 1;\n transform: translateY(0);\n }\n\n 76% {\n opacity: 1;\n transform: translateY(0);\n }\n\n 88%, 100% {\n opacity: 0;\n transform: translateY(100%);\n }\n}\n\n.IncodeIdHint {\n inset: var(--spacing-0, var(--spacing-none, 0px));\n z-index: 10;\n justify-content: center;\n align-items: center;\n display: flex;\n position: absolute;\n}\n\n.IncodeIdHint .IncodeIdHintAnimated {\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n animation: 3s ease-in-out forwards slideUpAndDown;\n display: flex;\n position: relative;\n}\n\n.IncodeIdHint .IncodeIdHintAnimated .IncodeIdHintSvg {\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdHint .IncodeIdHintAnimated .IncodeIdHintSvg svg {\n width: var(--id-capture-hint-svg-size);\n height: var(--id-capture-hint-svg-size);\n min-width: var(--id-capture-hint-svg-size);\n min-height: var(--id-capture-hint-svg-size);\n}\n\n.IncodeComponent .IncodePermissionInCameraPage .IncodePermissionInCameraContent {\n opacity: 0;\n width: 100%;\n height: 100%;\n animation: incodePermissionInCameraReveal var(--id-tutorial-to-permission-transition-duration) ease-out var(--id-permission-in-camera-reveal-delay) forwards;\n flex-direction: column;\n align-items: center;\n display: flex;\n}\n\n.IncodeComponent .IncodePermissionInCameraPage .IncodePermissionInCameraReservedFooter {\n visibility: hidden;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeComponent .IncodePermissionInCameraPage .IncodePermissionInCameraContent {\n animation-duration: 1ms;\n animation-delay: 0s;\n }\n}\n\n@keyframes incodePermissionInCameraReveal {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage {\n width: 100%;\n height: 100%;\n position: relative;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowCaptureLayer, .IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowPermissionLayer, .IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowTutorialLayer {\n inset: var(--spacing-0, var(--spacing-none, 0px));\n position: absolute;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowCaptureLayer {\n z-index: 10;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowPermissionLayer {\n z-index: 20;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowTutorialLayer {\n z-index: 30;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowPermissionLayerExiting {\n pointer-events: none;\n animation: incodePermissionInCameraToCaptureExit var(--id-permission-in-camera-to-capture-transition-duration) ease-in var(--id-permission-in-camera-to-capture-transition-duration) forwards;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowPermissionLayerExiting .IncodePermissionInCameraHeading {\n animation: incodePermissionInCameraHeadingExit var(--id-permission-in-camera-to-capture-transition-duration) ease-in forwards;\n}\n\n.IncodeComponent .IncodePermissionInCameraFlowStage > .IncodePermissionInCameraFlowTutorialLayerExiting {\n pointer-events: none;\n animation: incodeTutorialToPermissionInCameraExit var(--id-tutorial-to-permission-transition-duration) ease-in forwards;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeComponent .IncodePermissionInCameraFlowPermissionLayerExiting {\n animation-duration: 1ms;\n animation-delay: 0s;\n }\n\n .IncodeComponent .IncodePermissionInCameraFlowPermissionLayerExiting .IncodePermissionInCameraHeading, .IncodeComponent .IncodePermissionInCameraFlowTutorialLayerExiting {\n animation-duration: 1ms;\n }\n}\n\n@keyframes incodeTutorialToPermissionInCameraExit {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes incodePermissionInCameraHeadingExit {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes incodePermissionInCameraToCaptureExit {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n.IncodeIdProcessingPage .IncodePageInner {\n padding: var(--spacing-0, var(--spacing-none, 0px));\n}\n\n.IncodeIdProcessingLayout {\n width: 100%;\n height: 100%;\n padding: var(--spacing-24, var(--spacing-24, 24px));\n background-color: var(--color-surface-neutral-0, var(--surface-neutral-0));\n flex-direction: column;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent {\n z-index: 10;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeIdProcessingTopArea {\n justify-content: flex-end;\n align-items: center;\n gap: var(--spacing-24, var(--spacing-24, 24px));\n padding-bottom: var(--spacing-40, var(--spacing-40, 40px));\n z-index: 10;\n flex-direction: column;\n flex: 1;\n width: 100%;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeCaptureFrame {\n overflow: hidden;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeCaptureFrame.IncodeCaptureFrameVertical {\n width: var(--id-capture-frame-vertical-width);\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeCaptureFrame.IncodeCaptureFrameVertical .IncodeIdProcessingOverlay {\n left: -25%;\n right: -25%;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeCaptureFrame .IncodeIdProcessingImage {\n background-color: var(--color-surface-neutral-900, var(--surface-neutral-900));\n object-fit: cover;\n width: 100%;\n max-width: 100%;\n height: 100%;\n max-height: 100%;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeCaptureFrame .IncodeIdProcessingImage.IncodeIdProcessingImageBlurred {\n filter: blur(var(--id-processing-image-blur-radius));\n -webkit-backdrop-filter: blur(var(--id-processing-image-blur-radius));\n backdrop-filter: blur(var(--id-processing-image-blur-radius));\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeCaptureFrame .IncodeIdProcessingOverlay {\n pointer-events: none;\n z-index: 10;\n justify-content: center;\n align-items: center;\n display: flex;\n position: absolute;\n inset: 0 -10%;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeIdProcessingBottomArea {\n width: 100%;\n max-width: var(--id-capture-bottom-area-max-w);\n padding-top: var(--spacing-8, var(--spacing-8, 8px));\n z-index: 10;\n flex-direction: column;\n flex: 1;\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingLayoutContent .IncodeIdProcessingBottomArea .IncodeCaptureEncryptionLabel {\n justify-content: center;\n align-items: center;\n gap: var(--spacing-4, var(--spacing-4, 4px));\n padding-bottom: var(--spacing-12, var(--spacing-12, 12px));\n font-family: var(--typography-body-family);\n font-size: var(--typography-body-m-regular-size);\n font-weight: var(--typography-body-m-regular-weight);\n line-height: var(--typography-body-m-regular-line-height);\n letter-spacing: var(--typography-body-m-regular-letter-spacing);\n white-space: nowrap;\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n display: flex;\n}\n\n.IncodeIdProcessingLayout.IncodeIdProcessingLayoutNoImage .IncodeIdProcessingBottomArea {\n justify-content: flex-end;\n}\n\n.IncodeIdProcessingLayout .IncodeAnalyzingContent {\n flex-direction: column;\n align-items: center;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeAnalyzingContent .IncodeProgressBarContainer {\n margin-bottom: var(--spacing-24, var(--spacing-24, 24px));\n}\n\n.IncodeIdProcessingLayout .IncodeAnalyzingContent .IncodeAnalyzingTitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h2-size);\n font-weight: var(--typography-headline-h2-weight);\n line-height: var(--typography-headline-h2-line-height);\n letter-spacing: var(--typography-headline-h2-letter-spacing);\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n text-align: center;\n min-height: var(--typography-headline-h2-line-height);\n}\n\n.IncodeIdProcessingLayout .IncodeAnalyzingContent .IncodeAnalyzingTitle .IncodeAnalyzingTitleText {\n animation: IncodeAnalyzingTitleFade var(--id-capture-analyzing-title-fade-duration) ease-out both;\n display: inline-block;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdProcessingLayout .IncodeAnalyzingContent .IncodeAnalyzingTitle .IncodeAnalyzingTitleText {\n animation-duration: 1ms;\n }\n}\n\n.IncodeIdProcessingLayout .IncodeAnalyzingLottie {\n width: 100%;\n max-width: none;\n}\n\n@keyframes IncodeAnalyzingTitleFade {\n from {\n opacity: 0;\n transform: translateY(var(--id-capture-analyzing-title-fade-offset));\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingResultContent, .IncodeIdProcessingLayout .IncodeIdProcessingResultStatus {\n flex-direction: column;\n align-items: center;\n width: 100%;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingResultTitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h2-size);\n font-weight: var(--typography-headline-h2-weight);\n line-height: var(--typography-headline-h2-line-height);\n letter-spacing: var(--typography-headline-h2-letter-spacing);\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n text-align: center;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingResultSubtitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n color: var(--color-text-body-secondary, var(--text-body-500-secondary));\n text-align: center;\n max-width: var(--incode-form-max-w);\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingResultButtonContainer {\n margin-top: var(--spacing-24, var(--spacing-24, 24px));\n gap: var(--spacing-16, var(--spacing-16, 16px));\n flex-direction: column;\n width: 100%;\n display: flex;\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingResultAttempts {\n padding-block: var(--spacing-12, var(--spacing-12, 12px));\n text-align: center;\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h4-size);\n font-weight: var(--typography-headline-h4-weight);\n line-height: var(--typography-headline-h4-line-height);\n letter-spacing: var(--typography-headline-h4-letter-spacing);\n color: var(--color-text-body-secondary, var(--text-body-500-secondary));\n}\n\n.IncodeIdProcessingLayout .IncodeIdProcessingResultContentExiting, .IncodeIdProcessingLayout .IncodeIdProcessingResultButtonContainerExiting {\n animation: .3s ease-out forwards incodeIdProcessingResultFadeOut;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeIdProcessingLayout .IncodeIdProcessingResultContentExiting, .IncodeIdProcessingLayout .IncodeIdProcessingResultButtonContainerExiting {\n animation-duration: 1ms;\n }\n}\n\n@keyframes incodeIdProcessingResultFadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n.IncodeIdError {\n inset: var(--spacing-0, var(--spacing-none, 0px));\n z-index: 1000;\n justify-content: center;\n align-items: center;\n gap: var(--spacing-16, var(--spacing-16, 16px));\n flex-direction: column;\n width: 100%;\n height: 100%;\n display: flex;\n position: fixed;\n}\n\n.IncodeIdError .IncodeIdErrorMessage {\n text-align: center;\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h4-size);\n font-weight: var(--typography-headline-h4-weight);\n line-height: var(--typography-headline-h4-line-height);\n letter-spacing: var(--typography-headline-h4-letter-spacing);\n color: var(--color-text-body-0, var(--text-body-0-static));\n max-width: var(--incode-form-max-w);\n margin-bottom: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeIdNoAttemptsContent {\n padding-inline: var(--spacing-20, var(--spacing-20, 20px));\n max-height: var(--id-no-attempts-content-max-h);\n max-width: var(--id-no-attempts-content-max-w);\n flex-direction: column;\n flex: 1;\n justify-content: center;\n align-items: center;\n margin: auto;\n display: flex;\n}\n\n.IncodeIdNoAttemptsContent .IncodeIdNoAttemptsIcon {\n margin-bottom: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeIdNoAttemptsContent .IncodeIdNoAttemptsTitle {\n text-align: center;\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n}\n\n.IncodeIdNoAttemptsContent .IncodeIdNoAttemptsSubtitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n color: var(--color-text-body-secondary, var(--text-body-500-secondary));\n text-align: center;\n max-width: var(--incode-form-max-w);\n}\n\n.IncodeIdNoAttemptsContent .IncodeIdNoAttemptsButtonContainer {\n bottom: var(--spacing-32, var(--spacing-32, 32px));\n right: var(--spacing-0, var(--spacing-none, 0px));\n left: var(--spacing-0, var(--spacing-none, 0px));\n padding-inline: var(--spacing-24, var(--spacing-24, 24px));\n justify-content: center;\n display: flex;\n position: absolute;\n}\n\n.IncodeUnacceptedIdDocuments {\n margin-top: var(--spacing-32, var(--spacing-32, 32px));\n flex-direction: column;\n align-items: center;\n width: 100%;\n display: flex;\n}\n\n.IncodeUnacceptedIdDocuments .IncodeUnacceptedIdDocumentsCountry {\n margin-bottom: var(--spacing-32, var(--spacing-32, 32px));\n align-items: center;\n gap: var(--spacing-8, var(--spacing-8, 8px));\n flex-direction: column;\n display: flex;\n}\n\n.IncodeUnacceptedIdDocuments .IncodeUnacceptedIdDocumentsCountryHeading {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h4-size);\n font-weight: var(--typography-headline-h4-weight);\n line-height: var(--typography-headline-h4-line-height);\n letter-spacing: var(--typography-headline-h4-letter-spacing);\n}\n\n.IncodeUnacceptedIdDocuments .IncodeUnacceptedIdDocumentsCountryLabel {\n align-items: center;\n gap: var(--spacing-8, var(--spacing-8, 8px));\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h3-size);\n font-weight: var(--typography-headline-h3-weight);\n line-height: var(--typography-headline-h3-line-height);\n letter-spacing: var(--typography-headline-h3-letter-spacing);\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n display: inline-flex;\n}\n\n.IncodeIdCaptureNotification {\n right: var(--spacing-24, var(--spacing-24, 24px));\n left: var(--spacing-24, var(--spacing-24, 24px));\n z-index: 100;\n max-width: var(--incode-form-max-w);\n padding-bottom: var(--spacing-32, var(--spacing-32, 32px));\n top: var(--incode-overlay-top-inset, var(--spacing-24));\n align-items: flex-end;\n margin: auto;\n display: flex;\n position: absolute;\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent {\n z-index: 100;\n border-radius: var(--radius-large, var(--border-radius-large));\n border-style: var(--tw-border-style);\n border-width: 2px;\n border-color: var(--color-border-neutral-300, var(--border-neutral-300));\n background-color: var(--color-surface-neutral-900-80, var(--surface-neutral-900-80));\n width: 100%;\n padding-inline: var(--spacing-20, var(--spacing-20, 20px));\n box-shadow: var(--id-capture-notification-content-shadow);\n display: flex;\n overflow: hidden;\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent.IncodeIdCaptureNotificationContent--minimal {\n justify-content: center;\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent .IncodeIdCaptureNotificationText {\n justify-content: center;\n gap: var(--spacing-8, var(--spacing-8, 8px));\n padding-top: var(--spacing-16, var(--spacing-16, 16px));\n padding-bottom: var(--spacing-12, var(--spacing-12, 12px));\n text-align: center;\n color: var(--color-text-body-0-static, var(--text-body-0-static));\n flex-direction: column;\n display: flex;\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent .IncodeIdCaptureNotificationText .IncodeIdCaptureNotificationTitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h3-size);\n font-weight: var(--typography-headline-h3-weight);\n line-height: var(--typography-headline-h3-line-height);\n letter-spacing: var(--typography-headline-h3-letter-spacing);\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent .IncodeIdCaptureNotificationText .IncodeIdCaptureNotificationDescription {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n color: var(--color-text-body-tertiary-static, var(--text-body-300-tertiary-static));\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent.IncodeIdCaptureNotificationContent--minimal .IncodeIdCaptureNotificationText {\n gap: var(--spacing-4, var(--spacing-4, 4px));\n padding-block: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent.IncodeIdCaptureNotificationContent--minimal .IncodeIdCaptureNotificationText .IncodeIdCaptureNotificationTitle {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent.IncodeIdCaptureNotificationContent--minimal .IncodeIdCaptureNotificationText .IncodeIdCaptureNotificationDescription {\n font-family: var(--typography-body-family);\n font-size: var(--typography-body-m-regular-size);\n font-weight: var(--typography-body-m-regular-weight);\n line-height: var(--typography-body-m-regular-line-height);\n letter-spacing: var(--typography-body-m-regular-letter-spacing);\n}\n\n.IncodeIdCaptureNotification .IncodeIdCaptureNotificationContent .IncodeIdCaptureNotificationAnimation {\n height: var(--id-capture-notification-animation-height);\n justify-content: center;\n align-items: center;\n width: auto;\n display: flex;\n}\n\n.IncodeDigitalIdUploadPage {\n height: 100%;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadBody {\n justify-content: center;\n align-items: center;\n row-gap: var(--spacing-16, var(--spacing-16, 16px));\n width: 100%;\n height: 100%;\n max-width: var(--digital-id-content-max-w);\n flex-direction: column;\n margin-inline: auto;\n display: flex;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadPreviewBody {\n row-gap: var(--spacing-16, var(--spacing-16, 16px));\n grid-template-columns: 1fr;\n grid-template-rows: var(--spacing-24) var(--digital-id-preview-h) var(--spacing-24);\n width: 100%;\n height: 100%;\n max-width: var(--digital-id-content-max-w);\n align-content: center;\n justify-items: center;\n margin-inline: auto;\n display: grid;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadPreStatusZone {\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadPostCaptionZone {\n justify-content: center;\n align-items: flex-start;\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadFooter {\n width: 100%;\n margin-inline: auto;\n margin-top: var(--spacing-24, var(--spacing-24, 24px));\n margin-bottom: var(--spacing-8, var(--spacing-8, 8px));\n justify-content: flex-end;\n row-gap: var(--spacing-16, var(--spacing-16, 16px));\n max-width: var(--digital-id-content-max-w);\n min-height: var(--digital-id-footer-min-h);\n flex-direction: column;\n display: flex;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadHiddenInput {\n display: none;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadTutorialIllustration {\n width: 100%;\n max-height: var(--digital-id-tutorial-illustration-max-h);\n flex: 1;\n justify-content: center;\n align-items: center;\n display: flex;\n overflow: hidden;\n}\n\n.IncodeDigitalIdUploadPage .IncodeUploadIdScreenImage {\n height: var(--digital-id-illustration-max-h);\n aspect-ratio: 191 / 266;\n width: auto;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadPreviewCard {\n border-radius: var(--radius-medium, var(--border-radius-medium));\n border-style: var(--tw-border-style);\n --tw-border-style: solid;\n border-style: solid;\n border-width: 1px;\n border-color: var(--color-border-neutral-100, var(--border-neutral-100));\n background-color: var(--color-surface-neutral-0, var(--surface-neutral-0));\n width: var(--digital-id-preview-w);\n height: var(--digital-id-preview-h);\n justify-content: center;\n align-items: center;\n display: flex;\n overflow: hidden;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadDocumentPreview {\n width: var(--digital-id-preview-w);\n height: var(--digital-id-preview-h);\n justify-content: center;\n align-items: center;\n display: flex;\n position: relative;\n overflow: visible;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadDocumentPreviewPdf {\n border-radius: var(--radius-medium, var(--border-radius-medium));\n border-style: var(--tw-border-style);\n border-width: var(--border-width-bold, var(--primitive-border-width-2));\n --tw-border-style: solid;\n border-style: solid;\n border-color: var(--color-border-status-positive, var(--border-status-positive-static));\n object-fit: contain;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadPreviewPdf {\n object-fit: contain;\n width: 100%;\n height: 100%;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadFileName {\n text-align: center;\n font-family: var(--typography-body-family);\n font-size: var(--typography-body-m-regular-size);\n font-weight: var(--typography-body-m-regular-weight);\n line-height: var(--typography-body-m-regular-line-height);\n letter-spacing: var(--typography-body-m-regular-letter-spacing);\n color: var(--color-text-body-primary, var(--text-body-800-primary));\n max-width: var(--digital-id-file-name-max-w);\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadProgressBar .IncodeProgressBar {\n border-radius: var(--radius-full, var(--border-radius-full));\n background-color: var(--color-surface-neutral-200, var(--surface-neutral-200));\n width: var(--digital-id-progress-bar-w);\n height: var(--digital-id-progress-bar-h);\n overflow: hidden;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadProgressBar .IncodeProgressBarFill {\n border-radius: var(--radius-full, var(--border-radius-full));\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadLaserOverlay {\n pointer-events: none;\n width: var(--digital-id-preview-w);\n height: var(--digital-id-laser-h);\n transform: translateX(-50%) scale(var(--digital-id-laser-scale));\n position: absolute;\n top: -2px;\n left: 50%;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .IncodeDigitalIdUploadPage .IncodeDigitalIdUploadLaserOverlay {\n display: none;\n }\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadSuccessIcon {\n color: var(--color-icon-status-positive, var(--icon-status-positive));\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadErrorIcon {\n margin-bottom: var(--spacing-8, var(--spacing-8, 8px));\n color: var(--color-icon-status-negative, var(--icon-status-negative));\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadErrorPreview {\n margin-top: var(--spacing-8, var(--spacing-8, 8px));\n border-radius: var(--radius-medium, var(--border-radius-medium));\n border-style: var(--tw-border-style);\n --tw-border-style: solid;\n border-style: solid;\n border-width: 1px;\n border-color: var(--color-border-status-negative, var(--border-status-negative));\n padding: var(--spacing-4);\n}\n\n.IncodeDigitalIdUploadPage .IncodeDigitalIdUploadAttempts {\n margin-top: var(--spacing-8, var(--spacing-8, 8px));\n font-family: var(--typography-body-family);\n font-size: var(--typography-body-s-regular-size);\n font-weight: var(--typography-body-s-regular-weight);\n line-height: var(--typography-body-s-regular-line-height);\n letter-spacing: var(--typography-body-s-regular-letter-spacing);\n color: var(--color-text-body-secondary, var(--text-body-500-secondary));\n}\n\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n";
|
package/dist/themes/dark.css
CHANGED
|
@@ -1307,6 +1307,20 @@
|
|
|
1307
1307
|
--id-capture-frame-horizontal-max-width: 640px;
|
|
1308
1308
|
--id-capture-frame-vertical-max-width: 274px;
|
|
1309
1309
|
--id-capture-verification-option-card-size: 60px;
|
|
1310
|
+
/* Brand marks are full-bleed, unlike the padded line icons, so they sit smaller in the same well. */
|
|
1311
|
+
--id-capture-verification-option-card-logo-size: 40px;
|
|
1312
|
+
/* Chooser card list: scrolls once taller than ~6 cards or 70% of the viewport.
|
|
1313
|
+
`vh` is the baseline; the @supports block below upgrades it to `dvh`. A
|
|
1314
|
+
`dvh` value cannot fall back per-declaration here because a custom
|
|
1315
|
+
property is stored unparsed — it would only fail when `var()` is
|
|
1316
|
+
substituted, dropping `max-height` altogether and stopping the list from
|
|
1317
|
+
scrolling at all on browsers without `dvh`. */
|
|
1318
|
+
--id-capture-chooser-list-max-h: min(70vh, 480px);
|
|
1319
|
+
--id-capture-chooser-list-scroll-padding: 4px;
|
|
1320
|
+
/* Card list width plus the scroll padding on both sides. */
|
|
1321
|
+
--id-capture-chooser-list-max-w: calc(
|
|
1322
|
+
var(--incode-form-max-w) + 2 * var(--id-capture-chooser-list-scroll-padding)
|
|
1323
|
+
);
|
|
1310
1324
|
--id-no-attempts-content-max-h: 840px;
|
|
1311
1325
|
--id-no-attempts-content-max-w: 800px;
|
|
1312
1326
|
--id-capture-hint-svg-size: 800px;
|
|
@@ -1416,6 +1430,15 @@
|
|
|
1416
1430
|
--spinner-always-dark-title: var(--primitive-color-gray-50);
|
|
1417
1431
|
--spinner-always-dark-subtitle: var(--primitive-color-gray-300);
|
|
1418
1432
|
}
|
|
1433
|
+
/* iOS Safari and Android WebView resize the viewport as their toolbars come and
|
|
1434
|
+
go; `dvh` tracks that, so the cap stays at 70% of what the user can actually
|
|
1435
|
+
see. Gated on @supports rather than a fallback declaration — see the note on
|
|
1436
|
+
the token above. */
|
|
1437
|
+
@supports (height: 1dvh) {
|
|
1438
|
+
:root {
|
|
1439
|
+
--id-capture-chooser-list-max-h: min(70dvh, 480px);
|
|
1440
|
+
}
|
|
1441
|
+
}
|
|
1419
1442
|
[data-incode-theme='dark'] {
|
|
1420
1443
|
/* Surface / Neutral */
|
|
1421
1444
|
|
package/dist/themes/light.css
CHANGED
|
@@ -1307,6 +1307,20 @@
|
|
|
1307
1307
|
--id-capture-frame-horizontal-max-width: 640px;
|
|
1308
1308
|
--id-capture-frame-vertical-max-width: 274px;
|
|
1309
1309
|
--id-capture-verification-option-card-size: 60px;
|
|
1310
|
+
/* Brand marks are full-bleed, unlike the padded line icons, so they sit smaller in the same well. */
|
|
1311
|
+
--id-capture-verification-option-card-logo-size: 40px;
|
|
1312
|
+
/* Chooser card list: scrolls once taller than ~6 cards or 70% of the viewport.
|
|
1313
|
+
`vh` is the baseline; the @supports block below upgrades it to `dvh`. A
|
|
1314
|
+
`dvh` value cannot fall back per-declaration here because a custom
|
|
1315
|
+
property is stored unparsed — it would only fail when `var()` is
|
|
1316
|
+
substituted, dropping `max-height` altogether and stopping the list from
|
|
1317
|
+
scrolling at all on browsers without `dvh`. */
|
|
1318
|
+
--id-capture-chooser-list-max-h: min(70vh, 480px);
|
|
1319
|
+
--id-capture-chooser-list-scroll-padding: 4px;
|
|
1320
|
+
/* Card list width plus the scroll padding on both sides. */
|
|
1321
|
+
--id-capture-chooser-list-max-w: calc(
|
|
1322
|
+
var(--incode-form-max-w) + 2 * var(--id-capture-chooser-list-scroll-padding)
|
|
1323
|
+
);
|
|
1310
1324
|
--id-no-attempts-content-max-h: 840px;
|
|
1311
1325
|
--id-no-attempts-content-max-w: 800px;
|
|
1312
1326
|
--id-capture-hint-svg-size: 800px;
|
|
@@ -1416,3 +1430,12 @@
|
|
|
1416
1430
|
--spinner-always-dark-title: var(--primitive-color-gray-50);
|
|
1417
1431
|
--spinner-always-dark-subtitle: var(--primitive-color-gray-300);
|
|
1418
1432
|
}
|
|
1433
|
+
/* iOS Safari and Android WebView resize the viewport as their toolbars come and
|
|
1434
|
+
go; `dvh` tracks that, so the cap stays at 70% of what the user can actually
|
|
1435
|
+
see. Gated on @supports rather than a fallback declaration — see the note on
|
|
1436
|
+
the token above. */
|
|
1437
|
+
@supports (height: 1dvh) {
|
|
1438
|
+
:root {
|
|
1439
|
+
--id-capture-chooser-list-max-h: min(70dvh, 480px);
|
|
1440
|
+
}
|
|
1441
|
+
}
|
|
@@ -1301,7 +1301,7 @@ export declare function useScreenOrientation(): {
|
|
|
1301
1301
|
isLandscapeMobile: boolean;
|
|
1302
1302
|
};
|
|
1303
1303
|
|
|
1304
|
-
export declare function VerificationOptionCard({ icon: Icon, title, testId, onClick, tag, }: Readonly<VerificationOptionCardProps>): JSX.Element;
|
|
1304
|
+
export declare function VerificationOptionCard({ icon: Icon, iconSrc, title, testId, onClick, tag, }: Readonly<VerificationOptionCardProps>): JSX.Element;
|
|
1305
1305
|
|
|
1306
1306
|
export declare function VerificationOptionCardList({ children, }: Readonly<VerificationOptionCardListProps>): JSX.Element;
|
|
1307
1307
|
|
|
@@ -1310,9 +1310,15 @@ declare type VerificationOptionCardListProps = {
|
|
|
1310
1310
|
};
|
|
1311
1311
|
|
|
1312
1312
|
declare type VerificationOptionCardProps = {
|
|
1313
|
+
/** Glyph rendered in the icon slot; the fallback when `iconSrc` is absent. */
|
|
1313
1314
|
icon: FC<{
|
|
1314
1315
|
className?: string;
|
|
1315
1316
|
}>;
|
|
1317
|
+
/**
|
|
1318
|
+
* Image URL (e.g. a digital-ID provider logo) rendered in the icon slot
|
|
1319
|
+
* instead of `icon`. Decorative — the card is labelled by its title.
|
|
1320
|
+
*/
|
|
1321
|
+
iconSrc?: string;
|
|
1316
1322
|
title: string;
|
|
1317
1323
|
testId: string;
|
|
1318
1324
|
onClick: () => void;
|
package/dist/workflow/styles.css
CHANGED
|
@@ -1727,6 +1727,7 @@
|
|
|
1727
1727
|
}
|
|
1728
1728
|
|
|
1729
1729
|
.IncodeChooserPage .IncodePageContent {
|
|
1730
|
+
min-height: var(--spacing-0, var(--spacing-none, 0px));
|
|
1730
1731
|
padding-bottom: var(--spacing-16, var(--spacing-16, 16px));
|
|
1731
1732
|
}
|
|
1732
1733
|
|
|
@@ -1735,11 +1736,18 @@
|
|
|
1735
1736
|
}
|
|
1736
1737
|
|
|
1737
1738
|
.IncodeChooserPage .IncodeChooserContainer {
|
|
1739
|
+
min-height: var(--spacing-0, var(--spacing-none, 0px));
|
|
1740
|
+
width: 100%;
|
|
1741
|
+
max-height: var(--id-capture-chooser-list-max-h);
|
|
1742
|
+
max-width: var(--id-capture-chooser-list-max-w);
|
|
1743
|
+
padding: var(--id-capture-chooser-list-scroll-padding);
|
|
1744
|
+
scroll-padding-block: var(--id-capture-chooser-list-scroll-padding);
|
|
1745
|
+
margin-inline: auto;
|
|
1738
1746
|
flex-direction: column;
|
|
1739
1747
|
align-items: center;
|
|
1740
|
-
width: 100%;
|
|
1741
1748
|
margin-top: auto;
|
|
1742
1749
|
display: flex;
|
|
1750
|
+
overflow-y: auto;
|
|
1743
1751
|
}
|
|
1744
1752
|
|
|
1745
1753
|
.IncodeCaptureFrame {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@incodetech/web",
|
|
3
|
-
"version": "0.0.0-dev-20260923-
|
|
3
|
+
"version": "0.0.0-dev-20260923-1a4dbec8",
|
|
4
4
|
"license": "ISC",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -287,7 +287,7 @@
|
|
|
287
287
|
],
|
|
288
288
|
"dependencies": {
|
|
289
289
|
"preact": "^10.27.2",
|
|
290
|
-
"@incodetech/core": "0.0.0-dev-20260923-
|
|
290
|
+
"@incodetech/core": "0.0.0-dev-20260923-1a4dbec8"
|
|
291
291
|
},
|
|
292
292
|
"devDependencies": {
|
|
293
293
|
"@fontsource/dm-sans": "^5.2.8",
|