@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 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
  }
@@ -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-DhQIQp5j.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-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(Icon, {})
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: 1
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
- function getAvailableChooserOptions(availableDocumentTypes) {
2587
- const reduceFn = (accumulated, documentType) => {
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) accumulated.push(chooserOption);
2590
- return accumulated;
2591
- };
2592
- return availableDocumentTypes.reduce(reduceFn, []).sort((optionA, optionB) => optionA.weight - optionB.weight);
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 handleSelectDocument = (documentType) => {
2600
- manager.selectDocument(documentType);
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((chooserOption) => /* @__PURE__ */ u(VerificationOptionCard, {
2609
- icon: chooserOption.icon,
2610
- title: t(chooserOption.title),
2611
- testId: chooserOption.testId,
2612
- tag: chooserOption.tag ? t(chooserOption.tag) : void 0,
2613
- onClick: () => handleSelectDocument(chooserOption.type)
2614
- }, chooserOption.type)) })
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
  };
@@ -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-DhQIQp5j.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-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";
@@ -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 {
@@ -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";
@@ -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
 
@@ -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;
@@ -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-b02a604b",
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-b02a604b"
290
+ "@incodetech/core": "0.0.0-dev-20260923-1a4dbec8"
291
291
  },
292
292
  "devDependencies": {
293
293
  "@fontsource/dm-sans": "^5.2.8",