@ape.swap/bonds-sdk 6.2.24 → 6.2.25

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/README.md CHANGED
@@ -39,9 +39,11 @@ The following are some key dependencies you must have for the SDK to work proper
39
39
  - **React** (>=17 <19): Required to build the UI. Ensure your project uses React v17 or later.
40
40
  - **React DOM** (>=17 <19): Required for rendering React components to the DOM.
41
41
  - **Wagmi** (^2.14.16): Used for handling EVM wallet connections and blockchain interactions.
42
+ - **viem** (2.x): Low-level EVM client used for on-chain reads. Already required by Wagmi.
42
43
  - **@bigmi/react** (^0.6.5): Multi-chain wallet connection library supporting EVM and non-EVM chains.
43
44
  - **@lifi/widget** (^3.40.6): Cross-chain bridge and swap widget integration.
44
45
  - **@mysten/dapp-kit** (^0.19.11): Sui blockchain dApp development kit for wallet connections and interactions.
46
+ - **@mysten/sui** (^1.45.2): Sui TypeScript SDK used to build and read Sui transactions. Already installed alongside @mysten/dapp-kit.
45
47
  - **@solana/kit** (2.3.0): Comprehensive toolkit for Solana blockchain development.
46
48
  - **@solana/spl-token** (^0.4.14): Library for interacting with Solana SPL tokens.
47
49
  - **@solana/wallet-adapter-react** (^0.15.39): React hooks for Solana wallet connections.
@@ -1,6 +1,4 @@
1
- import { Network } from '@aptos-labs/ts-sdk';
2
1
  export declare const IS_APTOS_MAINNET: boolean;
3
- export declare const APTOS_NETWORK: Network;
4
2
  export declare const APTOS_FULLNODE_URL: string;
5
3
  export declare const getRandomAptosApiKey: () => string | undefined;
6
4
  export declare const APTOS_DEPOSIT_FUNCTION: `${string}::${string}::${string}`;
@@ -1,12 +1,9 @@
1
- import { Network } from '@aptos-labs/ts-sdk';
2
-
3
1
  // ---------------------------------------------------------------------------
4
2
  // Env gating — use NEXT_PUBLIC_APTOS_NETWORK to control mainnet vs testnet.
5
3
  // Defaults to testnet until mainnet contracts are deployed and verified.
6
4
  // Set NEXT_PUBLIC_APTOS_NETWORK=mainnet to switch to mainnet.
7
5
  // ---------------------------------------------------------------------------
8
6
  const IS_APTOS_MAINNET = typeof process !== 'undefined' && process.env?.NEXT_PUBLIC_APTOS_NETWORK === 'mainnet';
9
- const APTOS_NETWORK = IS_APTOS_MAINNET ? Network.MAINNET : Network.TESTNET;
10
7
  // ---------------------------------------------------------------------------
11
8
  // Contract address (single Move package containing bond, factory, treasury)
12
9
  // ---------------------------------------------------------------------------
@@ -88,5 +85,5 @@ const APTOS_VIEW_NFT_ADDRESS = `${APTOS_CONTRACT_ADDRESS}::bond_nft::nft_address
88
85
  // ---------------------------------------------------------------------------
89
86
  const APTOS_PLACEHOLDER_BILL_IMAGE = 'https://www.ape.bond/images/bills/hidden-bill.jpg';
90
87
 
91
- export { APTOS_CLAIM_FUNCTION, APTOS_DEPOSIT_FUNCTION, APTOS_FULLNODE_URL, APTOS_NETWORK, APTOS_PLACEHOLDER_BILL_IMAGE, APTOS_VIEW_BILL_INFO, APTOS_VIEW_BOND_MARKET_BY_ID, APTOS_VIEW_MARKET_INFO, APTOS_VIEW_NFT_ADDRESS, APTOS_VIEW_USER_BILLS, APTOS_VIEW_VESTING_PROGRESS, IS_APTOS_MAINNET, getRandomAptosApiKey };
88
+ export { APTOS_CLAIM_FUNCTION, APTOS_DEPOSIT_FUNCTION, APTOS_FULLNODE_URL, APTOS_PLACEHOLDER_BILL_IMAGE, APTOS_VIEW_BILL_INFO, APTOS_VIEW_BOND_MARKET_BY_ID, APTOS_VIEW_MARKET_INFO, APTOS_VIEW_NFT_ADDRESS, APTOS_VIEW_USER_BILLS, APTOS_VIEW_VESTING_PROGRESS, IS_APTOS_MAINNET, getRandomAptosApiKey };
92
89
  //# sourceMappingURL=aptosConstants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aptosConstants.js","sources":["../../src/constants/aptosConstants.ts"],"sourcesContent":["import { Network } from '@aptos-labs/ts-sdk'\n\n// ---------------------------------------------------------------------------\n// Env gating — use NEXT_PUBLIC_APTOS_NETWORK to control mainnet vs testnet.\n// Defaults to testnet until mainnet contracts are deployed and verified.\n// Set NEXT_PUBLIC_APTOS_NETWORK=mainnet to switch to mainnet.\n// ---------------------------------------------------------------------------\nexport const IS_APTOS_MAINNET = typeof process !== 'undefined' && process.env?.NEXT_PUBLIC_APTOS_NETWORK === 'mainnet'\n\nexport const APTOS_NETWORK: Network = IS_APTOS_MAINNET ? Network.MAINNET : Network.TESTNET\n\n// ---------------------------------------------------------------------------\n// Contract address (single Move package containing bond, factory, treasury)\n// ---------------------------------------------------------------------------\n// Testnet address is the current apebond-move deployment (see CLAUDE.md).\n// Mainnet is a placeholder until PLAN_002 or a future mainnet deploy lands.\n// TODO(aptos): Replace APTOS_CONTRACT_ADDRESS_MAINNET when mainnet is deployed.\nconst APTOS_CONTRACT_ADDRESS_TESTNET = '0xa1cec270b22272c801092d031ba609091f2164988a5b96cde8d9bdac0de4287b'\nconst APTOS_CONTRACT_ADDRESS_MAINNET = '0x0000000000000000000000000000000000000000000000000000000000000000'\n\nconst APTOS_CONTRACT_ADDRESS = IS_APTOS_MAINNET ? APTOS_CONTRACT_ADDRESS_MAINNET : APTOS_CONTRACT_ADDRESS_TESTNET\n\n// Warn loudly if we ever end up in production with the placeholder address —\n// that would silently break every Aptos interaction.\nif (\n typeof window !== 'undefined' &&\n IS_APTOS_MAINNET &&\n APTOS_CONTRACT_ADDRESS === APTOS_CONTRACT_ADDRESS_MAINNET &&\n APTOS_CONTRACT_ADDRESS_MAINNET.startsWith('0x0000')\n) {\n console.warn(\n '[ApeBond SDK] APTOS_CONTRACT_ADDRESS is still the placeholder in production. ' +\n 'Replace APTOS_CONTRACT_ADDRESS_MAINNET in src/constants/aptosConstants.ts before shipping.',\n )\n}\n\n// ---------------------------------------------------------------------------\n// Network endpoints (fullnode + indexer + explorer)\n// ---------------------------------------------------------------------------\n// Note: Aptos Labs authenticates via the `Authorization: Bearer <key>` header,\n// NOT via query parameters (unlike Helius). We therefore keep the URLs clean\n// and inject the key through `clientConfig.HEADERS` (see aptosHelpers.ts).\nexport const APTOS_FULLNODE_URL = IS_APTOS_MAINNET\n ? 'https://api.mainnet.aptoslabs.com/v1'\n : 'https://api.testnet.aptoslabs.com/v1'\n\n// export const APTOS_INDEXER_URL = IS_APTOS_MAINNET\n// ? 'https://api.mainnet.aptoslabs.com/v1/graphql'\n// : 'https://api.testnet.aptoslabs.com/v1/graphql'\n//\n// export const APTOS_EXPLORER_URL = 'https://explorer.aptoslabs.com'\n\n// ---------------------------------------------------------------------------\n// API key rotation (same pattern as HELIUS_SOL_RPC_ENDPOINTS in networks.ts)\n// ---------------------------------------------------------------------------\n// TODO(APTOS): the testnet key below is a temporary dev key owned by Tomás.\n// Rotate it and add more keys for load balancing before the public testnet\n// launch.\nconst APTOS_API_KEYS_TESTNET: string[] = ['aptoslabs_WmE77ykde6q_5vYSpFBrmsexdQF71Rp44az5BQNt51DeV']\n\n// TODO(APTOS): mainnet keys are pending — they will be generated once a\n// production deployment exists.\nconst APTOS_API_KEYS_MAINNET: string[] = []\n\nexport const getRandomAptosApiKey = (): string | undefined => {\n const pool = IS_APTOS_MAINNET ? APTOS_API_KEYS_MAINNET : APTOS_API_KEYS_TESTNET\n if (pool.length === 0) return undefined\n return pool[Math.floor(Math.random() * pool.length)]\n}\n\n// ---------------------------------------------------------------------------\n// Module / entry function paths (stable across networks)\n// ---------------------------------------------------------------------------\n// Built directly from `APTOS_CONTRACT_ADDRESS` so TypeScript infers each\n// entry as `${string}::${string}::${string}`, which is exactly what the\n// Aptos ts-sdk's `InputEntryFunctionData.function` field expects. Going via\n// an intermediate `APTOS_BOND_MODULE` constant makes TS collapse the inner\n// template literal and lose the third segment — avoid that.\n// export const APTOS_BOND_MODULE = `${APTOS_CONTRACT_ADDRESS}::bond`\n// Typed narrowly so the Aptos ts-sdk `InputEntryFunctionData.function` field\n// (which expects `${string}::${string}::${string}`) accepts them directly.\n\n// Entry functions (write path)\nexport const APTOS_DEPOSIT_FUNCTION: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond::deposit`\nexport const APTOS_CLAIM_FUNCTION: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond::claim`\n\n// View functions (read path, PLAN_001 Etapa 5b).\n// Names verified against apebond-move-playground routes:\n// - app/bond-market-info → bond::market_info\n// - app/bond-bill-info → bond::bill_info\n// - app/bond-nft-user-bills → bond_nft::user_bills\n// - app/bond-nft-vesting-progress → bond_nft::vesting_progress\n// - app/bond-nft-bond-market-by-id → bond_nft::bond_market_by_id\n// - app/bond-nft-nft-address → bond_nft::nft_address\nexport const APTOS_VIEW_MARKET_INFO: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond::market_info`\nexport const APTOS_VIEW_BILL_INFO: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond::bill_info`\nexport const APTOS_VIEW_USER_BILLS: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond_nft::user_bills`\nexport const APTOS_VIEW_VESTING_PROGRESS: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond::vesting_progress`\nexport const APTOS_VIEW_BOND_MARKET_BY_ID: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond_nft::bond_market_by_id`\nexport const APTOS_VIEW_NFT_ADDRESS: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond_nft::nft_address`\n\n// ---------------------------------------------------------------------------\n// Placeholder bill image (shown until backend enrichment is available)\n// ---------------------------------------------------------------------------\nexport const APTOS_PLACEHOLDER_BILL_IMAGE = 'https://www.ape.bond/images/bills/hidden-bill.jpg'\n"],"names":[],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,gBAAgB,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,yBAAyB,KAAK;AAEtG,MAAM,aAAa,GAAY,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;AAEnF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8BAA8B,GAAG,oEAAoE;AAC3G,MAAM,8BAA8B,GAAG,oEAAoE;AAE3G,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,8BAA8B,GAAG,8BAA8B;AAEjH;AACA;AACA,IACE,OAAO,MAAM,KAAK,WAAW;IAC7B,gBAAgB;AAChB,IAAA,sBAAsB,KAAK,8BAA8B;AACzD,IAAA,8BAA8B,CAAC,UAAU,CAAC,QAAQ,CAAC,EACnD;IACA,OAAO,CAAC,IAAI,CACV,+EAA+E;AAC7E,QAAA,4FAA4F,CAC/F;AACH;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,kBAAkB,GAAG;AAChC,MAAE;MACA;AAEJ;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,sBAAsB,GAAa,CAAC,yDAAyD,CAAC;AAEpG;AACA;AACA,MAAM,sBAAsB,GAAa,EAAE;AAEpC,MAAM,oBAAoB,GAAG,MAAyB;IAC3D,MAAM,IAAI,GAAG,gBAAgB,GAAG,sBAAsB,GAAG,sBAAsB;AAC/E,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,SAAS;AACvC,IAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACtD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACO,MAAM,sBAAsB,GAAsC,CAAA,EAAG,sBAAsB;AAC3F,MAAM,oBAAoB,GAAsC,CAAA,EAAG,sBAAsB;AAEhG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,sBAAsB,GAAsC,CAAA,EAAG,sBAAsB;AAC3F,MAAM,oBAAoB,GAAsC,CAAA,EAAG,sBAAsB;AACzF,MAAM,qBAAqB,GAAsC,CAAA,EAAG,sBAAsB;AAC1F,MAAM,2BAA2B,GAAsC,CAAA,EAAG,sBAAsB;AAChG,MAAM,4BAA4B,GAAsC,CAAA,EAAG,sBAAsB;AACjG,MAAM,sBAAsB,GAAsC,CAAA,EAAG,sBAAsB;AAElG;AACA;AACA;AACO,MAAM,4BAA4B,GAAG;;;;"}
1
+ {"version":3,"file":"aptosConstants.js","sources":["../../src/constants/aptosConstants.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\n// Env gating — use NEXT_PUBLIC_APTOS_NETWORK to control mainnet vs testnet.\n// Defaults to testnet until mainnet contracts are deployed and verified.\n// Set NEXT_PUBLIC_APTOS_NETWORK=mainnet to switch to mainnet.\n// ---------------------------------------------------------------------------\nexport const IS_APTOS_MAINNET = typeof process !== 'undefined' && process.env?.NEXT_PUBLIC_APTOS_NETWORK === 'mainnet'\n\n// ---------------------------------------------------------------------------\n// Contract address (single Move package containing bond, factory, treasury)\n// ---------------------------------------------------------------------------\n// Testnet address is the current apebond-move deployment (see CLAUDE.md).\n// Mainnet is a placeholder until PLAN_002 or a future mainnet deploy lands.\n// TODO(aptos): Replace APTOS_CONTRACT_ADDRESS_MAINNET when mainnet is deployed.\nconst APTOS_CONTRACT_ADDRESS_TESTNET = '0xa1cec270b22272c801092d031ba609091f2164988a5b96cde8d9bdac0de4287b'\nconst APTOS_CONTRACT_ADDRESS_MAINNET = '0x0000000000000000000000000000000000000000000000000000000000000000'\n\nconst APTOS_CONTRACT_ADDRESS = IS_APTOS_MAINNET ? APTOS_CONTRACT_ADDRESS_MAINNET : APTOS_CONTRACT_ADDRESS_TESTNET\n\n// Warn loudly if we ever end up in production with the placeholder address —\n// that would silently break every Aptos interaction.\nif (\n typeof window !== 'undefined' &&\n IS_APTOS_MAINNET &&\n APTOS_CONTRACT_ADDRESS === APTOS_CONTRACT_ADDRESS_MAINNET &&\n APTOS_CONTRACT_ADDRESS_MAINNET.startsWith('0x0000')\n) {\n console.warn(\n '[ApeBond SDK] APTOS_CONTRACT_ADDRESS is still the placeholder in production. ' +\n 'Replace APTOS_CONTRACT_ADDRESS_MAINNET in src/constants/aptosConstants.ts before shipping.',\n )\n}\n\n// ---------------------------------------------------------------------------\n// Network endpoints (fullnode + indexer + explorer)\n// ---------------------------------------------------------------------------\n// Note: Aptos Labs authenticates via the `Authorization: Bearer <key>` header,\n// NOT via query parameters (unlike Helius). We therefore keep the URLs clean\n// and inject the key through `clientConfig.HEADERS` (see aptosHelpers.ts).\nexport const APTOS_FULLNODE_URL = IS_APTOS_MAINNET\n ? 'https://api.mainnet.aptoslabs.com/v1'\n : 'https://api.testnet.aptoslabs.com/v1'\n\n// export const APTOS_INDEXER_URL = IS_APTOS_MAINNET\n// ? 'https://api.mainnet.aptoslabs.com/v1/graphql'\n// : 'https://api.testnet.aptoslabs.com/v1/graphql'\n//\n// export const APTOS_EXPLORER_URL = 'https://explorer.aptoslabs.com'\n\n// ---------------------------------------------------------------------------\n// API key rotation (same pattern as HELIUS_SOL_RPC_ENDPOINTS in networks.ts)\n// ---------------------------------------------------------------------------\n// TODO(APTOS): the testnet key below is a temporary dev key owned by Tomás.\n// Rotate it and add more keys for load balancing before the public testnet\n// launch.\nconst APTOS_API_KEYS_TESTNET: string[] = ['aptoslabs_WmE77ykde6q_5vYSpFBrmsexdQF71Rp44az5BQNt51DeV']\n\n// TODO(APTOS): mainnet keys are pending — they will be generated once a\n// production deployment exists.\nconst APTOS_API_KEYS_MAINNET: string[] = []\n\nexport const getRandomAptosApiKey = (): string | undefined => {\n const pool = IS_APTOS_MAINNET ? APTOS_API_KEYS_MAINNET : APTOS_API_KEYS_TESTNET\n if (pool.length === 0) return undefined\n return pool[Math.floor(Math.random() * pool.length)]\n}\n\n// ---------------------------------------------------------------------------\n// Module / entry function paths (stable across networks)\n// ---------------------------------------------------------------------------\n// Built directly from `APTOS_CONTRACT_ADDRESS` so TypeScript infers each\n// entry as `${string}::${string}::${string}`, which is exactly what the\n// Aptos ts-sdk's `InputEntryFunctionData.function` field expects. Going via\n// an intermediate `APTOS_BOND_MODULE` constant makes TS collapse the inner\n// template literal and lose the third segment — avoid that.\n// export const APTOS_BOND_MODULE = `${APTOS_CONTRACT_ADDRESS}::bond`\n// Typed narrowly so the Aptos ts-sdk `InputEntryFunctionData.function` field\n// (which expects `${string}::${string}::${string}`) accepts them directly.\n\n// Entry functions (write path)\nexport const APTOS_DEPOSIT_FUNCTION: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond::deposit`\nexport const APTOS_CLAIM_FUNCTION: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond::claim`\n\n// View functions (read path, PLAN_001 Etapa 5b).\n// Names verified against apebond-move-playground routes:\n// - app/bond-market-info → bond::market_info\n// - app/bond-bill-info → bond::bill_info\n// - app/bond-nft-user-bills → bond_nft::user_bills\n// - app/bond-nft-vesting-progress → bond_nft::vesting_progress\n// - app/bond-nft-bond-market-by-id → bond_nft::bond_market_by_id\n// - app/bond-nft-nft-address → bond_nft::nft_address\nexport const APTOS_VIEW_MARKET_INFO: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond::market_info`\nexport const APTOS_VIEW_BILL_INFO: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond::bill_info`\nexport const APTOS_VIEW_USER_BILLS: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond_nft::user_bills`\nexport const APTOS_VIEW_VESTING_PROGRESS: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond::vesting_progress`\nexport const APTOS_VIEW_BOND_MARKET_BY_ID: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond_nft::bond_market_by_id`\nexport const APTOS_VIEW_NFT_ADDRESS: `${string}::${string}::${string}` = `${APTOS_CONTRACT_ADDRESS}::bond_nft::nft_address`\n\n// ---------------------------------------------------------------------------\n// Placeholder bill image (shown until backend enrichment is available)\n// ---------------------------------------------------------------------------\nexport const APTOS_PLACEHOLDER_BILL_IMAGE = 'https://www.ape.bond/images/bills/hidden-bill.jpg'\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACO,MAAM,gBAAgB,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,yBAAyB,KAAK;AAE7G;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8BAA8B,GAAG,oEAAoE;AAC3G,MAAM,8BAA8B,GAAG,oEAAoE;AAE3G,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,8BAA8B,GAAG,8BAA8B;AAEjH;AACA;AACA,IACE,OAAO,MAAM,KAAK,WAAW;IAC7B,gBAAgB;AAChB,IAAA,sBAAsB,KAAK,8BAA8B;AACzD,IAAA,8BAA8B,CAAC,UAAU,CAAC,QAAQ,CAAC,EACnD;IACA,OAAO,CAAC,IAAI,CACV,+EAA+E;AAC7E,QAAA,4FAA4F,CAC/F;AACH;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,kBAAkB,GAAG;AAChC,MAAE;MACA;AAEJ;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,sBAAsB,GAAa,CAAC,yDAAyD,CAAC;AAEpG;AACA;AACA,MAAM,sBAAsB,GAAa,EAAE;AAEpC,MAAM,oBAAoB,GAAG,MAAyB;IAC3D,MAAM,IAAI,GAAG,gBAAgB,GAAG,sBAAsB,GAAG,sBAAsB;AAC/E,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,SAAS;AACvC,IAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACtD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACO,MAAM,sBAAsB,GAAsC,CAAA,EAAG,sBAAsB;AAC3F,MAAM,oBAAoB,GAAsC,CAAA,EAAG,sBAAsB;AAEhG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,sBAAsB,GAAsC,CAAA,EAAG,sBAAsB;AAC3F,MAAM,oBAAoB,GAAsC,CAAA,EAAG,sBAAsB;AACzF,MAAM,qBAAqB,GAAsC,CAAA,EAAG,sBAAsB;AAC1F,MAAM,2BAA2B,GAAsC,CAAA,EAAG,sBAAsB;AAChG,MAAM,4BAA4B,GAAsC,CAAA,EAAG,sBAAsB;AACjG,MAAM,sBAAsB,GAAsC,CAAA,EAAG,sBAAsB;AAElG;AACA;AACA;AACO,MAAM,4BAA4B,GAAG;;;;"}
@@ -1,8 +1,14 @@
1
1
  import { useSignAndExecuteTransaction } from '@mysten/dapp-kit';
2
- import type { SuiSignAndExecuteTransactionOutput } from '@mysten/wallet-standard';
2
+ type SuiExecuteTransactionResult = {
3
+ digest: string;
4
+ /** Transaction effects as base64 encoded bcs. */
5
+ effects: string;
6
+ bytes: string;
7
+ signature: string;
8
+ };
3
9
  type UseSUIAccountResult = {
4
10
  address: string | null;
5
- signAndExecuteTransaction: ReturnType<typeof useSignAndExecuteTransaction<SuiSignAndExecuteTransactionOutput>>['mutateAsync'] | null;
11
+ signAndExecuteTransaction: ReturnType<typeof useSignAndExecuteTransaction<SuiExecuteTransactionResult>>['mutateAsync'] | null;
6
12
  };
7
13
  declare const useSUIAccount: () => UseSUIAccountResult;
8
14
  export default useSUIAccount;
@@ -1,4 +1,4 @@
1
- import { useSignAndExecuteTransaction, useCurrentAccount } from '@mysten/dapp-kit';
1
+ import { useCurrentAccount, useSignAndExecuteTransaction } from '@mysten/dapp-kit';
2
2
  import { useSDKConfig } from '../../state/useSDKConfig.js';
3
3
 
4
4
  // ---------------------------------------------------------------------------
@@ -28,10 +28,11 @@ const safeUseHook = (hookFn, fallback) => {
28
28
  return fallback;
29
29
  }
30
30
  };
31
+ const useSignAndExecute = () => useSignAndExecuteTransaction();
31
32
  const useSUIAccount = () => {
32
33
  const { suiAddress } = useSDKConfig();
33
34
  const currentAccount = safeUseHook(useCurrentAccount, null);
34
- const txResult = safeUseHook(useSignAndExecuteTransaction, null);
35
+ const txResult = safeUseHook(useSignAndExecute, null);
35
36
  const signAndExecuteTransaction = txResult?.mutateAsync ?? null;
36
37
  // Prefer the injected SSR/headless address over the wallet adapter's.
37
38
  const adapterAddress = currentAccount?.address ?? null;
@@ -1 +1 @@
1
- {"version":3,"file":"useSUIAccount.js","sources":["../../../src/hooks/accounts/useSUIAccount.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\n// useSUIAccount — Sui account hook\n// ---------------------------------------------------------------------------\n//\n// Thin wrapper around `@mysten/dapp-kit` hooks, mirroring the structure of\n// `useAPTAccount`. Works in two modes:\n//\n// 1. Wallet-connected — uses `useCurrentAccount` for the address and\n// `useSignAndExecuteTransaction` for signing.\n// 2. Headless / SSR — the consumer can inject `suiAddress` through\n// `SDKProps`; the hook returns a minimal object with just that address.\n//\n// The dapp-kit hooks throw if called outside of their provider, so we wrap\n// them in try-catch to keep the hook callable from shared code paths (e.g.\n// `useUserBonds`) without forcing every SDK consumer to mount the Sui\n// provider when they do not use Sui.\n\nimport { useCurrentAccount, useSignAndExecuteTransaction } from '@mysten/dapp-kit'\nimport type { SuiSignAndExecuteTransactionOutput } from '@mysten/wallet-standard'\nimport { useSDKConfig } from '../../state/useSDKConfig'\n\n/**\n * Safely call a hook that may throw if its provider is not mounted.\n */\nconst safeUseHook = <T>(hookFn: () => T, fallback: T): T => {\n try {\n return hookFn()\n } catch {\n return fallback\n }\n}\n\ntype UseSUIAccountResult = {\n address: string | null\n signAndExecuteTransaction: ReturnType<\n typeof useSignAndExecuteTransaction<SuiSignAndExecuteTransactionOutput>\n >['mutateAsync'] | null\n}\n\nconst useSUIAccount = (): UseSUIAccountResult => {\n const { suiAddress } = useSDKConfig()\n\n const currentAccount = safeUseHook(useCurrentAccount, null)\n const txResult = safeUseHook(useSignAndExecuteTransaction, null)\n\n const signAndExecuteTransaction = txResult?.mutateAsync ?? null\n\n // Prefer the injected SSR/headless address over the wallet adapter's.\n const adapterAddress = currentAccount?.address ?? null\n const address = suiAddress ?? adapterAddress\n\n return {\n address,\n signAndExecuteTransaction,\n }\n}\n\nexport default useSUIAccount\n"],"names":[],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;AAEG;AACH,MAAM,WAAW,GAAG,CAAI,MAAe,EAAE,QAAW,KAAO;AACzD,IAAA,IAAI;QACF,OAAO,MAAM,EAAE;IACjB;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,QAAQ;IACjB;AACF,CAAC;AASD,MAAM,aAAa,GAAG,MAA0B;AAC9C,IAAA,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE;IAErC,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC;IAC3D,MAAM,QAAQ,GAAG,WAAW,CAAC,4BAA4B,EAAE,IAAI,CAAC;AAEhE,IAAA,MAAM,yBAAyB,GAAG,QAAQ,EAAE,WAAW,IAAI,IAAI;;AAG/D,IAAA,MAAM,cAAc,GAAG,cAAc,EAAE,OAAO,IAAI,IAAI;AACtD,IAAA,MAAM,OAAO,GAAG,UAAU,IAAI,cAAc;IAE5C,OAAO;QACL,OAAO;QACP,yBAAyB;KAC1B;AACH;;;;"}
1
+ {"version":3,"file":"useSUIAccount.js","sources":["../../../src/hooks/accounts/useSUIAccount.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\n// useSUIAccount — Sui account hook\n// ---------------------------------------------------------------------------\n//\n// Thin wrapper around `@mysten/dapp-kit` hooks, mirroring the structure of\n// `useAPTAccount`. Works in two modes:\n//\n// 1. Wallet-connected — uses `useCurrentAccount` for the address and\n// `useSignAndExecuteTransaction` for signing.\n// 2. Headless / SSR — the consumer can inject `suiAddress` through\n// `SDKProps`; the hook returns a minimal object with just that address.\n//\n// The dapp-kit hooks throw if called outside of their provider, so we wrap\n// them in try-catch to keep the hook callable from shared code paths (e.g.\n// `useUserBonds`) without forcing every SDK consumer to mount the Sui\n// provider when they do not use Sui.\n\nimport { useCurrentAccount, useSignAndExecuteTransaction } from '@mysten/dapp-kit'\nimport { useSDKConfig } from '../../state/useSDKConfig'\n\n/**\n * Safely call a hook that may throw if its provider is not mounted.\n */\nconst safeUseHook = <T>(hookFn: () => T, fallback: T): T => {\n try {\n return hookFn()\n } catch {\n return fallback\n }\n}\n\n// Structural copy of `SuiSignAndExecuteTransactionOutput` (what dapp-kit returns by default), declared\n// locally so the SDK doesn't import `@mysten/wallet-standard`, which is not one of its declared dependencies.\ntype SuiExecuteTransactionResult = {\n digest: string\n /** Transaction effects as base64 encoded bcs. */\n effects: string\n bytes: string\n signature: string\n}\n\nconst useSignAndExecute = () => useSignAndExecuteTransaction<SuiExecuteTransactionResult>()\n\ntype UseSUIAccountResult = {\n address: string | null\n signAndExecuteTransaction: ReturnType<\n typeof useSignAndExecuteTransaction<SuiExecuteTransactionResult>\n >['mutateAsync'] | null\n}\n\nconst useSUIAccount = (): UseSUIAccountResult => {\n const { suiAddress } = useSDKConfig()\n\n const currentAccount = safeUseHook(useCurrentAccount, null)\n const txResult = safeUseHook(useSignAndExecute, null)\n\n const signAndExecuteTransaction = txResult?.mutateAsync ?? null\n\n // Prefer the injected SSR/headless address over the wallet adapter's.\n const adapterAddress = currentAccount?.address ?? null\n const address = suiAddress ?? adapterAddress\n\n return {\n address,\n signAndExecuteTransaction,\n }\n}\n\nexport default useSUIAccount\n"],"names":[],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;AAEG;AACH,MAAM,WAAW,GAAG,CAAI,MAAe,EAAE,QAAW,KAAO;AACzD,IAAA,IAAI;QACF,OAAO,MAAM,EAAE;IACjB;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,QAAQ;IACjB;AACF,CAAC;AAYD,MAAM,iBAAiB,GAAG,MAAM,4BAA4B,EAA+B;AAS3F,MAAM,aAAa,GAAG,MAA0B;AAC9C,IAAA,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE;IAErC,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC;IAC3D,MAAM,QAAQ,GAAG,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC;AAErD,IAAA,MAAM,yBAAyB,GAAG,QAAQ,EAAE,WAAW,IAAI,IAAI;;AAG/D,IAAA,MAAM,cAAc,GAAG,cAAc,EAAE,OAAO,IAAI,IAAI;AACtD,IAAA,MAAM,OAAO,GAAG,UAAU,IAAI,cAAc;IAE5C,OAAO;QACL,OAAO;QACP,yBAAyB;KAC1B;AACH;;;;"}
package/dist/styles.css CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-outline-style:solid;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--ape-font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--ape-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--ape-color-white:#fff;--ape-spacing:.25rem;--ape-text-sm:.875rem;--ape-text-sm--line-height:calc(1.25 / .875);--ape-text-base:1rem;--ape-text-base--line-height:calc(1.5 / 1);--ape-font-weight-light:300;--ape-font-weight-normal:400;--ape-font-weight-medium:500;--ape-font-weight-semibold:600;--ape-font-weight-bold:700;--ape-ease-out:cubic-bezier(0, 0, .2, 1);--ape-ease-in-out:cubic-bezier(.4, 0, .2, 1);--ape-default-transition-duration:.15s;--ape-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--ape-default-font-family:var(--ape-font-sans);--ape-default-mono-font-family:var(--ape-font-mono);--ape-color-white1:#0e0d16;--ape-color-white2:#161420;--ape-color-white3:#1f1d29;--ape-color-white4:#282632;--ape-color-white5:#312f3a;--ape-color-primary-button:#6560c5;--ape-color-primary-button-disable:#48475b;--ape-color-primary-button-hovered:#8480d1;--ape-color-success:#38a611;--ape-color-error:#df4141;--ape-color-text:#fafafa;--ape-color-text-disabled:#424242;--ape-color-text-disabled-button:#73728e;--ape-color-primary-bright:#fafafa;--ape-color-modal-overlay:#42424280;--ape-gradient-abond:linear-gradient(98.79deg, #6560c5 -2.37%, #e07753 100%);--ape-font-body:"Poppins", sans-serif;--ape-radius-small:6px;--ape-radius-default:16px;--ape-radius-normal:10px;--ape-radius-card:32px;--ape-z-index-dropdown:10;--ape-z-index-modal:102}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--ape-default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--ape-default-font-feature-settings,normal);font-variation-settings:var(--ape-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--ape-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--ape-default-mono-font-feature-settings,normal);font-variation-settings:var(--ape-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.ape-root{width:100%;min-width:0;font-family:var(--ape-font-body);-webkit-font-smoothing:antialiased;color:var(--ape-color-text);background-color:var(--ape-color-white1);scroll-behavior:smooth;font-weight:600}.ape-root a{color:var(--ape-color-text);text-decoration:none}.ape-root a:hover{color:var(--ape-color-primary-button);text-decoration:underline}.ape-root hr{background-color:var(--ape-color-white3);border:none;height:1px}.ape-root ::-webkit-scrollbar{width:6px}.ape-root ::-webkit-scrollbar-thumb{background:var(--ape-color-text);border-radius:8px}.ape-root ::-webkit-scrollbar-track{background:var(--ape-color-white2);border-radius:10px}}@layer components{@keyframes ape-ellipsis{0%{content:"."}33%{content:".."}66%{content:"..."}}.ape-ellipsis:after{content:".";text-align:left;width:1em;animation:1.25s infinite ape-ellipsis;display:inline-block}.ape-carousel-viewport{-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;-webkit-touch-callout:none}.ape-carousel-viewport::-webkit-scrollbar{display:none}.ape-you-tooltip:after{content:"";border-style:solid;border-width:6px;border-color:transparent var(--ape-color-primary-button) transparent transparent;position:absolute;top:50%;left:-11px;transform:translateY(-50%)}.ape-you-card{position:absolute;top:0;right:-45px}.ape-you-card:before{content:"";border:9px solid #0000;border-right-color:var(--ape-color-primary-button);width:0;height:0;display:block;position:absolute;top:50%;right:100%;transform:translateY(-50%)}@keyframes ape-spinner-rotation{0%{transform:rotate(40deg)}to{transform:rotate(400deg)}}.ape-spinner{box-sizing:border-box;border-radius:50%;display:inline-block}.ape-spinner-loading{animation:1s linear infinite ape-spinner-rotation;transform:rotate(40deg)}.ape-icon{fill:currentColor;transition:transform .3s linear}.ape-icon path{fill:currentColor}.ape-text-link{cursor:pointer;text-decoration:none;display:inline-block;position:relative}.ape-text-link:after{content:"";background:var(--ape-color-text);border-radius:var(--ape-radius-normal);transform-origin:100% 100%;backface-visibility:hidden;width:100%;height:1.5px;transition:transform .25s ease-out;position:absolute;bottom:0;left:0;transform:scaleX(0)}.ape-text-link:hover:after{transform-origin:0 100%;transform:scaleX(1)}.ape-tooltip-bubble{color:var(--ape-color-text);border-radius:var(--ape-radius-normal);background-color:var(--ape-tooltip-bg,var(--ape-color-white2));width:max-content;z-index:var(--ape-z-index-modal);padding:20px;font-size:12px;font-weight:600;line-height:18px;position:relative;top:15px;box-shadow:0 0 25px #c8c8c84d}.ape-tooltip-bottom-right:before,.ape-tooltip-bottom-left:before,.ape-tooltip-top-right:before,.ape-tooltip-top-left:before,.ape-tooltip-left:before{content:"";border:12px solid #0000;width:0;display:block;position:absolute}.ape-tooltip-bottom-right:before{border-top:0;border-bottom-style:solid;border-bottom-width:15px;border-bottom-color:var(--ape-tooltip-bg,var(--ape-color-white2));top:0;right:3%;transform:translate(-50%,-100%)}.ape-tooltip-bottom-left:before{border-top:0;border-bottom-style:solid;border-bottom-width:15px;border-bottom-color:var(--ape-tooltip-bg,var(--ape-color-white2));top:0;left:calc(3% + 15px);transform:translate(-50%,-100%)}.ape-tooltip-top-right:before{border-top-style:solid;border-top-width:15px;border-bottom:0;border-top-color:var(--ape-tooltip-bg,var(--ape-color-white2));bottom:0;right:3%;transform:translate(-50%,100%)}.ape-tooltip-top-left:before{border-top-style:solid;border-top-width:15px;border-bottom:0;border-top-color:var(--ape-tooltip-bg,var(--ape-color-white2));bottom:0;left:calc(3% + 15px);transform:translate(-50%,100%)}.ape-tooltip-only-container-right:before{content:"";border-bottom-color:var(--ape-tooltip-bg,var(--ape-color-white2));position:absolute;right:3%}.ape-tooltip-left:before{color:var(--ape-color-white2);border-right:15px solid;top:65%;left:-13px;transform:translate(-50%,-100%)}@keyframes ape-skeleton-waves{0%{left:-150px}to{left:100%}}@keyframes ape-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}.ape-skeleton-waves{background-color:var(--ape-color-white2);min-height:16px;display:block;position:relative;overflow:hidden;transform:translate(0)}.ape-skeleton-waves:before{content:"";background-image:linear-gradient(90deg,#0000,#f3f3f34d,#0000);width:250px;height:100%;animation:1.5s cubic-bezier(.4,0,.2,1) infinite ape-skeleton-waves;position:absolute;top:0;left:-150px}.ape-skeleton-pulse{background-color:var(--ape-color-white2);border-radius:2px;min-height:20px;animation:2s ease-out infinite ape-skeleton-pulse;display:block;transform:translate(0)}}@layer utilities{.ape\:pointer-events-none{pointer-events:none}.ape\:absolute{position:absolute}.ape\:fixed{position:fixed}.ape\:relative{position:relative}.ape\:inset-0{inset:0}.ape\:-top-\[15px\]{top:-15px}.ape\:top-0{top:0}.ape\:top-1\/2{top:50%}.ape\:top-\[-180px\]{top:-180px}.ape\:top-\[5px\]{top:5px}.ape\:top-\[12px\]{top:12px}.ape\:top-\[24px\]{top:24px}.ape\:top-\[25px\]{top:25px}.ape\:top-\[45px\]{top:45px}.ape\:top-\[50px\]{top:50px}.ape\:top-\[56\%\]{top:56%}.ape\:right-0{right:0}.ape\:right-3{right:calc(var(--ape-spacing) * 3)}.ape\:right-\[5px\]{right:5px}.ape\:right-\[6px\]{right:6px}.ape\:right-\[10px\]{right:10px}.ape\:right-\[50\%\]{right:50%}.ape\:bottom-0{bottom:0}.ape\:bottom-\[-43px\]{bottom:-43px}.ape\:bottom-\[3px\]{bottom:3px}.ape\:bottom-\[calc\(100\%-10px\)\]{bottom:calc(100% - 10px)}.ape\:bottom-\[unset\]{bottom:unset}.ape\:left-0{left:0}.ape\:left-1\/2{left:50%}.ape\:left-\[-20px\]{left:-20px}.ape\:left-\[-50px\]{left:-50px}.ape\:left-\[1px\]{left:1px}.ape\:left-\[25\%\]{left:25%}.ape\:left-\[40px\]{left:40px}.ape\:left-\[65\%\]{left:65%}.ape\:-z-\[1\]{z-index:calc(1 * -1)}.ape\:z-0{z-index:0}.ape\:z-10{z-index:10}.ape\:z-100{z-index:100}.ape\:z-\[1\]{z-index:1}.ape\:z-\[2\]{z-index:2}.ape\:z-\[5\]{z-index:5}.ape\:z-\[20\]{z-index:20}.ape\:z-\[100\]{z-index:100}.ape\:z-\[103\]{z-index:103}.ape\:z-\[121\]{z-index:121}.ape\:z-\[999\]{z-index:999}.ape\:z-\[1000\]{z-index:1000}.ape\:z-\[1001\]{z-index:1001}.ape\:z-\[5000\]{z-index:5000}.ape\:float-left{float:left}.ape\:m-0{margin:0}.ape\:m-\[0_5px_5px_0\]{margin:0 5px 5px 0}.ape\:m-\[10px_0px_15px_0px\]{margin:10px 0 15px}.ape\:m-auto{margin:auto}.ape\:mx-\[-5px\]{margin-inline:-5px}.ape\:mx-\[-8px\]{margin-inline:-8px}.ape\:mx-\[2\.5px\]{margin-inline:2.5px}.ape\:mx-\[2px\]{margin-inline:2px}.ape\:mx-\[3px\]{margin-inline:3px}.ape\:mx-\[5px\]{margin-inline:5px}.ape\:mx-\[8px\]{margin-inline:8px}.ape\:mx-\[10px\]{margin-inline:10px}.ape\:mx-\[20px\]{margin-inline:20px}.ape\:mx-\[25px\]{margin-inline:25px}.ape\:my-\[2px\]{margin-block:2px}.ape\:my-\[5px\]{margin-block:5px}.ape\:my-\[10px\]{margin-block:10px}.ape\:my-\[15px\]{margin-block:15px}.ape\:my-\[20px\]{margin-block:20px}.ape\:mt-0{margin-top:0}.ape\:mt-0\.75{margin-top:calc(var(--ape-spacing) * .75)}.ape\:mt-2{margin-top:calc(var(--ape-spacing) * 2)}.ape\:mt-2\.5{margin-top:calc(var(--ape-spacing) * 2.5)}.ape\:mt-4{margin-top:calc(var(--ape-spacing) * 4)}.ape\:mt-\[-5px\]{margin-top:-5px}.ape\:mt-\[-15px\]{margin-top:-15px}.ape\:mt-\[3px\]{margin-top:3px}.ape\:mt-\[5px\]{margin-top:5px}.ape\:mt-\[10px\]{margin-top:10px}.ape\:mt-\[15px\]{margin-top:15px}.ape\:mt-\[20px\]{margin-top:20px}.ape\:mt-\[25px\]{margin-top:25px}.ape\:mt-\[30px\]{margin-top:30px}.ape\:mt-\[35px\]{margin-top:35px}.ape\:mt-\[40px\]{margin-top:40px}.ape\:mt-px{margin-top:1px}.ape\:mr-0{margin-right:0}.ape\:mr-1\.25{margin-right:calc(var(--ape-spacing) * 1.25)}.ape\:mr-\[3px\]{margin-right:3px}.ape\:mr-\[4px\]{margin-right:4px}.ape\:mr-\[5px\]{margin-right:5px}.ape\:mr-\[6px\]{margin-right:6px}.ape\:mr-\[8px\]{margin-right:8px}.ape\:mr-\[10px\]{margin-right:10px}.ape\:mr-\[15px\]{margin-right:15px}.ape\:mr-\[20px\]{margin-right:20px}.ape\:mb-1\.25{margin-bottom:calc(var(--ape-spacing) * 1.25)}.ape\:mb-2\.5{margin-bottom:calc(var(--ape-spacing) * 2.5)}.ape\:mb-5{margin-bottom:calc(var(--ape-spacing) * 5)}.ape\:mb-\[1px\]{margin-bottom:1px}.ape\:mb-\[3px\]{margin-bottom:3px}.ape\:mb-\[5px\]{margin-bottom:5px}.ape\:mb-\[8px\]{margin-bottom:8px}.ape\:mb-\[10px\]{margin-bottom:10px}.ape\:mb-\[14px\]{margin-bottom:14px}.ape\:mb-\[15px\]{margin-bottom:15px}.ape\:mb-\[20px\]{margin-bottom:20px}.ape\:mb-\[30px\]{margin-bottom:30px}.ape\:mb-\[50px\]{margin-bottom:50px}.ape\:ml-0{margin-left:0}.ape\:ml-1{margin-left:var(--ape-spacing)}.ape\:ml-3\.5{margin-left:calc(var(--ape-spacing) * 3.5)}.ape\:ml-3\.75{margin-left:calc(var(--ape-spacing) * 3.75)}.ape\:ml-5{margin-left:calc(var(--ape-spacing) * 5)}.ape\:ml-\[3px\]{margin-left:3px}.ape\:ml-\[4px\]{margin-left:4px}.ape\:ml-\[5px\]{margin-left:5px}.ape\:ml-\[6px\]{margin-left:6px}.ape\:ml-\[7px\]{margin-left:7px}.ape\:ml-\[10px\]{margin-left:10px}.ape\:ml-\[15px\]{margin-left:15px}.ape\:ml-\[20px\]{margin-left:20px}.ape\:ml-\[30px\]{margin-left:30px}.ape\:line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.ape\:block{display:block}.ape\:block\!{display:block!important}.ape\:flex{display:flex}.ape\:hidden{display:none}.ape\:hidden\!{display:none!important}.ape\:inline-flex{display:inline-flex}.ape\:aspect-\[1\/0\.56\]{aspect-ratio:1/.56}.ape\:size-full{width:100%;height:100%}.ape\:h-7\.5{height:calc(var(--ape-spacing) * 7.5)}.ape\:h-8{height:calc(var(--ape-spacing) * 8)}.ape\:h-10{height:calc(var(--ape-spacing) * 10)}.ape\:h-11\.25{height:calc(var(--ape-spacing) * 11.25)}.ape\:h-\[2px\]{height:2px}.ape\:h-\[3px\]{height:3px}.ape\:h-\[5px\]{height:5px}.ape\:h-\[14px\]{height:14px}.ape\:h-\[15px\]{height:15px}.ape\:h-\[18px\]{height:18px}.ape\:h-\[20px\]{height:20px}.ape\:h-\[21px\]{height:21px}.ape\:h-\[22px\]{height:22px}.ape\:h-\[24px\]{height:24px}.ape\:h-\[25px\]{height:25px}.ape\:h-\[26px\]{height:26px}.ape\:h-\[30px\]{height:30px}.ape\:h-\[30vh\]{height:30vh}.ape\:h-\[31px\]{height:31px}.ape\:h-\[32px\]{height:32px}.ape\:h-\[34px\]{height:34px}.ape\:h-\[35px\]{height:35px}.ape\:h-\[36px\]{height:36px}.ape\:h-\[36px\]\!{height:36px!important}.ape\:h-\[40px\]{height:40px}.ape\:h-\[45px\]{height:45px}.ape\:h-\[49px\]{height:49px}.ape\:h-\[60px\]{height:60px}.ape\:h-\[70px\]{height:70px}.ape\:h-\[75px\]{height:75px}.ape\:h-\[84px\]{height:84px}.ape\:h-\[91px\]{height:91px}.ape\:h-\[125px\]{height:125px}.ape\:h-\[300px\]{height:300px}.ape\:h-\[400px\]{height:400px}.ape\:h-\[725px\]{height:725px}.ape\:h-\[calc\(100\%\+20px\)\]{height:calc(100% + 20px)}.ape\:h-\[calc\(100\%-150px\)\]{height:calc(100% - 150px)}.ape\:h-\[unset\]{height:unset}.ape\:h-auto{height:auto}.ape\:h-fit{height:fit-content}.ape\:h-full{height:100%}.ape\:h-px{height:1px}.ape\:h-screen{height:100vh}.ape\:max-h-\[32px\]{max-height:32px}.ape\:max-h-\[48px\]{max-height:48px}.ape\:max-h-\[95vh\]{max-height:95vh}.ape\:max-h-\[300px\]{max-height:300px}.ape\:max-h-none{max-height:none}.ape\:min-h-4{min-height:calc(var(--ape-spacing) * 4)}.ape\:min-h-23{min-height:calc(var(--ape-spacing) * 23)}.ape\:min-h-\[27px\]{min-height:27px}.ape\:min-h-\[30px\]{min-height:30px}.ape\:min-h-\[40px\]{min-height:40px}.ape\:min-h-\[47\.45px\]{min-height:47.45px}.ape\:min-h-\[90px\]{min-height:90px}.ape\:min-h-\[160px\]{min-height:160px}.ape\:min-h-\[225px\]{min-height:225px}.ape\:min-h-\[330px\]{min-height:330px}.ape\:w-1\/2{width:50%}.ape\:w-1\/5{width:20%}.ape\:w-7\!{width:calc(var(--ape-spacing) * 7)!important}.ape\:w-43\.75{width:calc(var(--ape-spacing) * 43.75)}.ape\:w-85{width:calc(var(--ape-spacing) * 85)}.ape\:w-95{width:calc(var(--ape-spacing) * 95)}.ape\:w-\[6px\]{width:6px}.ape\:w-\[8px\]{width:8px}.ape\:w-\[14px\]{width:14px}.ape\:w-\[15px\]{width:15px}.ape\:w-\[20px\]{width:20px}.ape\:w-\[25px\]{width:25px}.ape\:w-\[30px\]{width:30px}.ape\:w-\[32\%\]{width:32%}.ape\:w-\[34\%\]{width:34%}.ape\:w-\[35px\]{width:35px}.ape\:w-\[36\%\]{width:36%}.ape\:w-\[40px\]{width:40px}.ape\:w-\[45\%\]{width:45%}.ape\:w-\[49\%\]{width:49%}.ape\:w-\[50px\]{width:50px}.ape\:w-\[55px\]{width:55px}.ape\:w-\[60px\]{width:60px}.ape\:w-\[65\%\]{width:65%}.ape\:w-\[75\%\]{width:75%}.ape\:w-\[85px\]{width:85px}.ape\:w-\[98vw\]{width:98vw}.ape\:w-\[100px\]{width:100px}.ape\:w-\[110px\]{width:110px}.ape\:w-\[115px\]{width:115px}.ape\:w-\[120px\]{width:120px}.ape\:w-\[122px\]{width:122px}.ape\:w-\[125px\]{width:125px}.ape\:w-\[127px\]{width:127px}.ape\:w-\[130px\]{width:130px}.ape\:w-\[135px\]{width:135px}.ape\:w-\[144px\]{width:144px}.ape\:w-\[155px\]{width:155px}.ape\:w-\[160px\]{width:160px}.ape\:w-\[170px\]{width:170px}.ape\:w-\[175px\]{width:175px}.ape\:w-\[190px\]{width:190px}.ape\:w-\[210px\]{width:210px}.ape\:w-\[220px\]{width:220px}.ape\:w-\[235px\]{width:235px}.ape\:w-\[300px\]{width:300px}.ape\:w-\[380px\]{width:380px}.ape\:w-\[380px\]\!{width:380px!important}.ape\:w-\[400px\]{width:400px}.ape\:w-\[420px\]{width:420px}.ape\:w-\[450px\]{width:450px}.ape\:w-\[480px\]{width:480px}.ape\:w-\[500px\]{width:500px}.ape\:w-\[740px\]\!{width:740px!important}.ape\:w-\[calc\(33\.33\%-20px\)\]{width:calc(33.33% - 20px)}.ape\:w-\[calc\(50vw-25px\)\]{width:calc(50vw - 25px)}.ape\:w-\[calc\(100\%\+40px\)\]{width:calc(100% + 40px)}.ape\:w-\[calc\(100\%-2px\)\]{width:calc(100% - 2px)}.ape\:w-auto{width:auto}.ape\:w-fit{width:fit-content}.ape\:w-full{width:100%}.ape\:w-max{width:max-content}.ape\:w-screen{width:100vw}.ape\:max-w-75{max-width:calc(var(--ape-spacing) * 75)}.ape\:max-w-85{max-width:calc(var(--ape-spacing) * 85)}.ape\:max-w-\[95vw\]{max-width:95vw}.ape\:max-w-\[100px\]{max-width:100px}.ape\:max-w-\[300px\]{max-width:300px}.ape\:max-w-full{max-width:100%}.ape\:min-w-\[10px\]{min-width:10px}.ape\:min-w-\[14px\]{min-width:14px}.ape\:min-w-\[20px\]{min-width:20px}.ape\:min-w-\[25px\]{min-width:25px}.ape\:min-w-\[30px\]{min-width:30px}.ape\:min-w-\[33px\]{min-width:33px}.ape\:min-w-\[40px\]{min-width:40px}.ape\:min-w-\[48px\]{min-width:48px}.ape\:min-w-\[65px\]{min-width:65px}.ape\:min-w-\[100px\]{min-width:100px}.ape\:min-w-\[120px\]{min-width:120px}.ape\:min-w-\[148px\]{min-width:148px}.ape\:min-w-\[250px\]{min-width:250px}.ape\:min-w-\[700px\]{min-width:700px}.ape\:min-w-\[unset\]{min-width:unset}.ape\:min-w-full{min-width:100%}.ape\:\[flex\:0_0_100\%\]{flex:0 0 100%}.ape\:flex-1{flex:1}.ape\:shrink-0{flex-shrink:0}.ape\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:translate-x-1\/2{--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:translate-x-\[50\%\]{--tw-translate-x:50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:scale-\[0\.5\]{scale:.5}.ape\:rotate-\[-45deg\]{rotate:-45deg}.ape\:cursor-\[unset\]{cursor:unset}.ape\:cursor-pointer{cursor:pointer}.ape\:snap-center{scroll-snap-align:center}.ape\:list-none{list-style-type:none}.ape\:appearance-none{appearance:none}.ape\:flex-col{flex-direction:column}.ape\:flex-col-reverse{flex-direction:column-reverse}.ape\:flex-row{flex-direction:row}.ape\:flex-row-reverse{flex-direction:row-reverse}.ape\:flex-wrap{flex-wrap:wrap}.ape\:items-center{align-items:center}.ape\:items-end{align-items:flex-end}.ape\:items-start{align-items:flex-start}.ape\:items-stretch{align-items:stretch}.ape\:justify-around{justify-content:space-around}.ape\:justify-between{justify-content:space-between}.ape\:justify-center{justify-content:center}.ape\:justify-end{justify-content:flex-end}.ape\:justify-start{justify-content:flex-start}.ape\:gap-1{gap:var(--ape-spacing)}.ape\:gap-2\.5{gap:calc(var(--ape-spacing) * 2.5)}.ape\:gap-\[1px\]{gap:1px}.ape\:gap-\[3px\]{gap:3px}.ape\:gap-\[4px\]{gap:4px}.ape\:gap-\[5px\]{gap:5px}.ape\:gap-\[7px\]{gap:7px}.ape\:gap-\[8px\]{gap:8px}.ape\:gap-\[10px\]{gap:10px}.ape\:gap-\[14px\]{gap:14px}.ape\:gap-\[15px\]{gap:15px}.ape\:gap-\[20px\]{gap:20px}.ape\:overflow-hidden{overflow:hidden}.ape\:overflow-x-auto{overflow-x:auto}.ape\:overflow-x-hidden{overflow-x:hidden}.ape\:overflow-x-visible{overflow-x:visible}.ape\:\[overflow-y\:unset\]\!{overflow-y:unset!important}.ape\:overflow-y-auto{overflow-y:auto}.ape\:overflow-y-hidden{overflow-y:hidden}.ape\:overflow-y-scroll{overflow-y:scroll}.ape\:rounded-\[0_0_10px_10px\],.ape\:rounded-\[0px_0px_10px_10px\]{border-radius:0 0 10px 10px}.ape\:rounded-\[0px_10px_10px_0px\]{border-radius:0 10px 10px 0}.ape\:rounded-\[4px\]{border-radius:4px}.ape\:rounded-\[5px\]{border-radius:5px}.ape\:rounded-\[6px\]{border-radius:6px}.ape\:rounded-\[6px_6px_0px_0px\]{border-radius:6px 6px 0 0}.ape\:rounded-\[8px\]{border-radius:8px}.ape\:rounded-\[10px\]{border-radius:10px}.ape\:rounded-\[10px_0px_10px_0px\]{border-radius:10px 0}.ape\:rounded-\[10px_10px_0_0\],.ape\:rounded-\[10px_10px_0px_0px\]{border-radius:10px 10px 0 0}.ape\:rounded-\[14px\]{border-radius:14px}.ape\:rounded-\[40px\]{border-radius:40px}.ape\:rounded-\[50\%\]{border-radius:50%}.ape\:rounded-\[50px\]{border-radius:50px}.ape\:rounded-full{border-radius:3.40282e38px}.ape\:rounded-none{border-radius:0}.ape\:rounded-normal{border-radius:var(--ape-radius-normal)}.ape\:rounded-small{border-radius:var(--ape-radius-small)}.ape\:rounded-tl-\[10px\]{border-top-left-radius:10px}.ape\:rounded-br-\[8px\]{border-bottom-right-radius:8px}.ape\:border{border-style:var(--tw-border-style);border-width:1px}.ape\:border-0{border-style:var(--tw-border-style);border-width:0}.ape\:border-2{border-style:var(--tw-border-style);border-width:2px}.ape\:border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.ape\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.ape\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.ape\:border-none{--tw-border-style:none;border-style:none}.ape\:border-solid{--tw-border-style:solid;border-style:solid}.ape\:border-\[\#9960C5\]{border-color:#9960c5}.ape\:border-\[\#222222\]{border-color:#222}.ape\:border-\[grey\]{border-color:gray}.ape\:border-primary-button{border-color:var(--ape-color-primary-button)}.ape\:border-success{border-color:var(--ape-color-success)}.ape\:border-text{border-color:var(--ape-color-text)}.ape\:border-white2{border-color:var(--ape-color-white2)}.ape\:border-white3{border-color:var(--ape-color-white3)}.ape\:border-white4{border-color:var(--ape-color-white4)}.ape\:bg-\[\#38A6110D\]{background-color:#38a6110d}.ape\:bg-\[\#9960C5\]{background-color:#9960c5}.ape\:bg-\[\#DE62F366\]{background-color:#de62f366}.ape\:bg-\[grey\]{background-color:gray}.ape\:bg-modal-overlay{background-color:var(--ape-color-modal-overlay)}.ape\:bg-primary-button{background-color:var(--ape-color-primary-button)}.ape\:bg-text{background-color:var(--ape-color-text)}.ape\:bg-text-disabled{background-color:var(--ape-color-text-disabled)}.ape\:bg-transparent{background-color:#0000}.ape\:bg-transparent\!{background-color:#0000!important}.ape\:bg-white{background-color:var(--ape-color-white)}.ape\:bg-white1{background-color:var(--ape-color-white1)}.ape\:bg-white2{background-color:var(--ape-color-white2)}.ape\:bg-white2\!{background-color:var(--ape-color-white2)!important}.ape\:bg-white3{background-color:var(--ape-color-white3)}.ape\:bg-white4{background-color:var(--ape-color-white4)}.ape\:bg-\[image\:var\(--ape-gradient-abond\)\]{background-image:var(--ape-gradient-abond)}.ape\:bg-\[image\:var\(--banner-bg-mobile\)\]{background-image:var(--banner-bg-mobile)}.ape\:bg-\[linear-gradient\(180deg\,\#FFFFFF_50\%\,\#666666_100\%\)\]{background-image:linear-gradient(#fff 50%,#666 100%)}.ape\:bg-cover{background-size:cover}.ape\:bg-clip-text{-webkit-background-clip:text;background-clip:text}.ape\:bg-no-repeat{background-repeat:no-repeat}.ape\:object-contain{object-fit:contain}.ape\:object-cover{object-fit:cover}.ape\:p-0{padding:0}.ape\:p-0\!{padding:0!important}.ape\:p-2{padding:calc(var(--ape-spacing) * 2)}.ape\:p-2\.5{padding:calc(var(--ape-spacing) * 2.5)}.ape\:p-3{padding:calc(var(--ape-spacing) * 3)}.ape\:p-3\.75{padding:calc(var(--ape-spacing) * 3.75)}.ape\:p-5{padding:calc(var(--ape-spacing) * 5)}.ape\:p-\[0_1px\]{padding:0 1px}.ape\:p-\[0_20px_20px_20px\]{padding:0 20px 20px}.ape\:p-\[0px_8px\]\!{padding:0 8px!important}.ape\:p-\[2\.5px_5px\]{padding:2.5px 5px}.ape\:p-\[2px\]{padding:2px}.ape\:p-\[2px_5px\]{padding:2px 5px}.ape\:p-\[2px_6px\]{padding:2px 6px}.ape\:p-\[2px_8px\]{padding:2px 8px}.ape\:p-\[2px_10px\]{padding:2px 10px}.ape\:p-\[2px_10px_2px_5px\]{padding:2px 10px 2px 5px}.ape\:p-\[3px_6px\]{padding:3px 6px}.ape\:p-\[4px_2px\]{padding:4px 2px}.ape\:p-\[4px_6px\]{padding:4px 6px}.ape\:p-\[4px_10px\]{padding:4px 10px}.ape\:p-\[5px\]{padding:5px}.ape\:p-\[5px_10px\]{padding:5px 10px}.ape\:p-\[5px_15px\]{padding:5px 15px}.ape\:p-\[5px_20px\]{padding:5px 20px}.ape\:p-\[6px\]{padding:6px}.ape\:p-\[6px_12px\]{padding:6px 12px}.ape\:p-\[8px\]{padding:8px}.ape\:p-\[8px_4px_4px_4px\]{padding:8px 4px 4px}.ape\:p-\[8px_10px\]{padding:8px 10px}.ape\:p-\[8px_12px\]{padding:8px 12px}.ape\:p-\[8px_16px\]{padding:8px 16px}.ape\:p-\[10px\]{padding:10px}.ape\:p-\[15px\]{padding:15px}.ape\:p-\[15px_20px_5px_20px\]{padding:15px 20px 5px}.ape\:p-\[16px\]{padding:16px}.ape\:p-\[20px\]{padding:20px}.ape\:p-px{padding:1px}.ape\:px-2\.5{padding-inline:calc(var(--ape-spacing) * 2.5)}.ape\:px-6{padding-inline:calc(var(--ape-spacing) * 6)}.ape\:px-\[3px\]{padding-inline:3px}.ape\:px-\[4px\]{padding-inline:4px}.ape\:px-\[5px\]{padding-inline:5px}.ape\:px-\[6px\]{padding-inline:6px}.ape\:px-\[8px\]{padding-inline:8px}.ape\:px-\[10px\]{padding-inline:10px}.ape\:px-\[14px\]{padding-inline:14px}.ape\:px-\[15px\]{padding-inline:15px}.ape\:px-\[19px\]{padding-inline:19px}.ape\:py-2\.5{padding-block:calc(var(--ape-spacing) * 2.5)}.ape\:py-\[2px\]{padding-block:2px}.ape\:py-\[3px\]{padding-block:3px}.ape\:py-\[5px\]{padding-block:5px}.ape\:py-\[6px\]{padding-block:6px}.ape\:py-\[10px\]{padding-block:10px}.ape\:py-\[14px\]{padding-block:14px}.ape\:pt-1\.25{padding-top:calc(var(--ape-spacing) * 1.25)}.ape\:pt-3\!{padding-top:calc(var(--ape-spacing) * 3)!important}.ape\:pt-4{padding-top:calc(var(--ape-spacing) * 4)}.ape\:pt-\[2px\]{padding-top:2px}.ape\:pt-\[3px\]{padding-top:3px}.ape\:pt-\[5px\]{padding-top:5px}.ape\:pt-\[10px\]{padding-top:10px}.ape\:pt-\[15px\]{padding-top:15px}.ape\:pt-\[20px\]{padding-top:20px}.ape\:pt-\[100px\]{padding-top:100px}.ape\:pr-0{padding-right:0}.ape\:pr-1\.25{padding-right:calc(var(--ape-spacing) * 1.25)}.ape\:pr-\[4px\]{padding-right:4px}.ape\:pr-\[14px\]{padding-right:14px}.ape\:pr-\[15px\]{padding-right:15px}.ape\:pr-\[20px\]{padding-right:20px}.ape\:pr-\[23px\]{padding-right:23px}.ape\:pb-\[2px\]{padding-bottom:2px}.ape\:pb-\[10px\]{padding-bottom:10px}.ape\:pb-\[20px\]{padding-bottom:20px}.ape\:pb-\[100px\]{padding-bottom:100px}.ape\:pl-0{padding-left:0}.ape\:pl-0\!{padding-left:0!important}.ape\:pl-1\.25{padding-left:calc(var(--ape-spacing) * 1.25)}.ape\:pl-\[5px\]{padding-left:5px}.ape\:pl-\[10px\]{padding-left:10px}.ape\:pl-\[15px\]{padding-left:15px}.ape\:pl-\[20px\]{padding-left:20px}.ape\:pl-\[26px\]{padding-left:26px}.ape\:pl-\[35px\]{padding-left:35px}.ape\:text-center{text-align:center}.ape\:text-left{text-align:left}.ape\:align-middle{vertical-align:middle}.ape\:align-sub{vertical-align:sub}.ape\:font-body{font-family:var(--ape-font-body)}.ape\:text-base{font-size:var(--ape-text-base);line-height:var(--tw-leading,var(--ape-text-base--line-height))}.ape\:text-sm{font-size:var(--ape-text-sm);line-height:var(--tw-leading,var(--ape-text-sm--line-height))}.ape\:text-sm\!{font-size:var(--ape-text-sm)!important;line-height:var(--tw-leading,var(--ape-text-sm--line-height))!important}.ape\:text-\[10px\]{font-size:10px}.ape\:text-\[10px\]\!{font-size:10px!important}.ape\:text-\[11px\]{font-size:11px}.ape\:text-\[12px\]{font-size:12px}.ape\:text-\[12px\]\!{font-size:12px!important}.ape\:text-\[13px\]{font-size:13px}.ape\:text-\[13px\]\!{font-size:13px!important}.ape\:text-\[14\.26px\]{font-size:14.26px}.ape\:text-\[14px\]{font-size:14px}.ape\:text-\[14px\]\!{font-size:14px!important}.ape\:text-\[16px\]{font-size:16px}.ape\:text-\[18px\]{font-size:18px}.ape\:text-\[18px\]\!{font-size:18px!important}.ape\:text-\[20px\]{font-size:20px}.ape\:text-\[22px\]{font-size:22px}.ape\:text-\[24px\]{font-size:24px}.ape\:text-\[24px\]\!{font-size:24px!important}.ape\:text-\[25\.26px\]{font-size:25.26px}.ape\:text-\[32px\]{font-size:32px}.ape\:leading-4{--tw-leading:calc(var(--ape-spacing) * 4);line-height:calc(var(--ape-spacing) * 4)}.ape\:leading-4\!{--tw-leading:calc(var(--ape-spacing) * 4)!important;line-height:calc(var(--ape-spacing) * 4)!important}.ape\:leading-5{--tw-leading:calc(var(--ape-spacing) * 5);line-height:calc(var(--ape-spacing) * 5)}.ape\:leading-5\.5\!{--tw-leading:calc(var(--ape-spacing) * 5.5)!important;line-height:calc(var(--ape-spacing) * 5.5)!important}.ape\:leading-\[11px\]{--tw-leading:11px;line-height:11px}.ape\:leading-\[12px\]{--tw-leading:12px;line-height:12px}.ape\:leading-\[13px\]{--tw-leading:13px;line-height:13px}.ape\:leading-\[14px\]{--tw-leading:14px;line-height:14px}.ape\:leading-\[15px\]{--tw-leading:15px;line-height:15px}.ape\:leading-\[18px\]{--tw-leading:18px;line-height:18px}.ape\:leading-\[18px\]\!{--tw-leading:18px!important;line-height:18px!important}.ape\:leading-\[21px\]{--tw-leading:21px;line-height:21px}.ape\:leading-\[22px\]{--tw-leading:22px;line-height:22px}.ape\:leading-\[24px\]{--tw-leading:24px;line-height:24px}.ape\:leading-\[28px\]{--tw-leading:28px;line-height:28px}.ape\:leading-\[30\.26px\]{--tw-leading:30.26px;line-height:30.26px}.ape\:leading-\[33px\]{--tw-leading:33px;line-height:33px}.ape\:font-bold{--tw-font-weight:var(--ape-font-weight-bold);font-weight:var(--ape-font-weight-bold)}.ape\:font-light{--tw-font-weight:var(--ape-font-weight-light);font-weight:var(--ape-font-weight-light)}.ape\:font-medium{--tw-font-weight:var(--ape-font-weight-medium);font-weight:var(--ape-font-weight-medium)}.ape\:font-normal{--tw-font-weight:var(--ape-font-weight-normal);font-weight:var(--ape-font-weight-normal)}.ape\:font-semibold{--tw-font-weight:var(--ape-font-weight-semibold);font-weight:var(--ape-font-weight-semibold)}.ape\:tracking-\[0\]{--tw-tracking:0;letter-spacing:0}.ape\:break-all{word-break:break-all}.ape\:text-ellipsis{text-overflow:ellipsis}.ape\:whitespace-nowrap{white-space:nowrap}.ape\:text-\[\#777\]{color:#777}.ape\:text-error{color:var(--ape-color-error)}.ape\:text-primary-bright{color:var(--ape-color-primary-bright)}.ape\:text-primary-button{color:var(--ape-color-primary-button)}.ape\:text-primary-button-disable{color:var(--ape-color-primary-button-disable)}.ape\:text-success{color:var(--ape-color-success)}.ape\:text-text{color:var(--ape-color-text)}.ape\:text-text-disabled{color:var(--ape-color-text-disabled)}.ape\:text-text-disabled-button{color:var(--ape-color-text-disabled-button)}.ape\:text-transparent{color:#0000}.ape\:text-white{color:var(--ape-color-white)}.ape\:capitalize{text-transform:capitalize}.ape\:normal-case{text-transform:none}.ape\:uppercase{text-transform:uppercase}.ape\:line-through{text-decoration-line:line-through}.ape\:no-underline{text-decoration-line:none}.ape\:underline{text-decoration-line:underline}.ape\:opacity-0{opacity:0}.ape\:opacity-20{opacity:.2}.ape\:opacity-50{opacity:.5}.ape\:opacity-60{opacity:.6}.ape\:opacity-70{opacity:.7}.ape\:opacity-80{opacity:.8}.ape\:opacity-90{opacity:.9}.ape\:shadow-\[0px_1px_4px_rgb\(0_0_0\/0\.16\)\]{--tw-shadow:0px 1px 4px var(--tw-shadow-color,#00000029);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:shadow-\[rgba\(0\,0\,0\,0\.16\)_0px_1px_4px\]{--tw-shadow-color:#00000029}@supports (color:color-mix(in lab, red, red)){.ape\:shadow-\[rgba\(0\,0\,0\,0\.16\)_0px_1px_4px\]{--tw-shadow-color:color-mix(in oklab, #00000029 0px 1px 4px var(--tw-shadow-alpha), transparent)}}.ape\:blur-\[1px\]{--tw-blur:blur(1px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.ape\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--ape-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ape-default-transition-duration))}.ape\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--ape-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ape-default-transition-duration))}.ape\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--ape-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ape-default-transition-duration))}.ape\:duration-300{--tw-duration:.3s;transition-duration:.3s}.ape\:duration-500{--tw-duration:.5s;transition-duration:.5s}.ape\:duration-1000{--tw-duration:1s;transition-duration:1s}.ape\:duration-\[1500ms\]{--tw-duration:1.5s;transition-duration:1.5s}.ape\:ease-\[ease\]{--tw-ease:ease;transition-timing-function:ease}.ape\:ease-in-out{--tw-ease:var(--ape-ease-in-out);transition-timing-function:var(--ape-ease-in-out)}.ape\:ease-linear{--tw-ease:linear;transition-timing-function:linear}.ape\:ease-out{--tw-ease:var(--ape-ease-out);transition-timing-function:var(--ape-ease-out)}.ape\:outline-none{--tw-outline-style:none;outline-style:none}.ape\:select-none{-webkit-user-select:none;user-select:none}.ape\:\[-webkit-text-fill-color\:transparent\]{-webkit-text-fill-color:transparent}@media (hover:hover){.ape\:group-hover\:bg-\[rgb\(20_18_29_\/_0\.25\)\]\!:is(:where(.ape\:group):hover *){background-color:#14121d40!important}.ape\:group-hover\/tooltip\:block:is(:where(.ape\:group\/tooltip):hover *){display:block}}.ape\:peer-checked\:block:is(:where(.ape\:peer):checked~*){display:block}.ape\:first\:rounded-t-normal:first-child{border-top-left-radius:var(--ape-radius-normal);border-top-right-radius:var(--ape-radius-normal)}.ape\:last\:mr-0:last-child{margin-right:0}.ape\:last\:rounded-b-normal:last-child{border-bottom-right-radius:var(--ape-radius-normal);border-bottom-left-radius:var(--ape-radius-normal)}.ape\:checked\:border-primary-button:checked{border-color:var(--ape-color-primary-button)}.ape\:checked\:bg-primary-button:checked{background-color:var(--ape-color-primary-button)}@media (hover:hover){.ape\:hover\:z-\[1000\]:hover{z-index:1000}.ape\:hover\:cursor-pointer:hover{cursor:pointer}.ape\:hover\:bg-\[rgb\(20_18_29_\/_0\.36\)\]\!:hover{background-color:#14121d5c!important}.ape\:hover\:bg-white3:hover{background-color:var(--ape-color-white3)}.ape\:hover\:bg-white4:hover{background-color:var(--ape-color-white4)}.ape\:hover\:bg-white5:hover{background-color:var(--ape-color-white5)}.ape\:hover\:underline:hover{text-decoration-line:underline}.ape\:hover\:opacity-60:hover{opacity:.6}.ape\:hover\:opacity-80:hover{opacity:.8}.ape\:hover\:brightness-115:hover{--tw-brightness:brightness(115%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.ape\:hover\:\[backdrop-filter\:blur\(2px\)\]:hover{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.ape\:hover\:\[background\:linear-gradient\(90deg\,rgba\(49\,46\,122\,0\.70\)_0\%\,rgba\(92\,79\,174\,0\.70\)_100\%\)\]:hover{background:linear-gradient(90deg,#312e7ab3 0%,#5c4faeb3 100%)}}.ape\:focus\:outline:focus,.ape\:focus\:outline-1:focus{outline-style:var(--tw-outline-style);outline-width:1px}.ape\:focus\:outline-primary-button:focus{outline-color:var(--ape-color-primary-button)}.ape\:focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.ape\:focus\:not-checked\:shadow-none:focus:not(:checked){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:focus\:not-checked\:outline-none:focus:not(:checked){--tw-outline-style:none;outline-style:none}.ape\:active\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}@media (hover:hover){.ape\:enabled\:hover\:border-primary-button-hovered:enabled:hover{border-color:var(--ape-color-primary-button-hovered)}.ape\:enabled\:hover\:bg-primary-button:enabled:hover{background-color:var(--ape-color-primary-button)}.ape\:enabled\:hover\:bg-primary-button-hovered:enabled:hover{background-color:var(--ape-color-primary-button-hovered)}.ape\:enabled\:hover\:text-text:enabled:hover{color:var(--ape-color-text)}.ape\:enabled\:hover\:not-checked\:border-primary-button:enabled:hover:not(:checked){border-color:var(--ape-color-primary-button)}}.ape\:active\:enabled\:scale-90:active:enabled{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.ape\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.ape\:disabled\:border-transparent:disabled{border-color:#0000}.ape\:disabled\:bg-white3:disabled{background-color:var(--ape-color-white3)}.ape\:disabled\:text-primary-button-disable:disabled{color:var(--ape-color-primary-button-disable)}.ape\:disabled\:text-text-disabled-button:disabled{color:var(--ape-color-text-disabled-button)}.ape\:disabled\:opacity-90:disabled{opacity:.9}@media not all and (min-width:1000px){.ape\:max-\[1000px\]\:w-\[49\%\]{width:49%}}@media not all and (min-width:852px){.ape\:max-md\:mb-\[10px\]{margin-bottom:10px}}@media not all and (min-width:768px){.ape\:max-\[768px\]\:w-full{width:100%}}@media not all and (min-width:576px){.ape\:max-sm\:mb-\[10px\]{margin-bottom:10px}.ape\:max-sm\:w-1\/2{width:50%}.ape\:max-sm\:w-\[55\%\]{width:55%}.ape\:max-sm\:text-\[12px\]{font-size:12px}.ape\:max-sm\:text-\[18px\]{font-size:18px}.ape\:max-sm\:leading-\[14px\]{--tw-leading:14px;line-height:14px}.ape\:max-sm\:leading-\[21px\]{--tw-leading:21px;line-height:21px}}@media (min-width:513px){.ape\:min-\[513px\]\:justify-center{justify-content:center}.ape\:min-\[513px\]\:pl-0{padding-left:0}}@media (min-width:576px){.ape\:sm\:top-\[-240px\]{top:-240px}.ape\:sm\:ml-2{margin-left:calc(var(--ape-spacing) * 2)}.ape\:sm\:ml-5{margin-left:calc(var(--ape-spacing) * 5)}.ape\:sm\:max-w-\[190px\]{max-width:190px}.ape\:sm\:justify-start{justify-content:flex-start}.ape\:sm\:text-\[16px\]\!{font-size:16px!important}}@media (min-width:800px){.ape\:min-\[800px\]\:max-h-none{max-height:none}.ape\:min-\[800px\]\:w-\[350px\]{width:350px}.ape\:min-\[800px\]\:flex-col{flex-direction:column}.ape\:min-\[800px\]\:flex-row{flex-direction:row}.ape\:min-\[800px\]\:gap-\[5px\]{gap:5px}.ape\:min-\[800px\]\:p-\[12px\]{padding:12px}.ape\:min-\[800px\]\:p-\[20px\]{padding:20px}.ape\:min-\[800px\]\:pb-\[5px\]{padding-bottom:5px}@media not all and (min-width:1000px){.ape\:min-\[800px\]\:max-\[1000px\]\:bg-bottom{background-position:bottom}}}@media (min-width:852px){.ape\:md\:top-\[20px\]{top:20px}.ape\:md\:top-\[unset\]{top:unset}.ape\:md\:right-\[-13\%\]{right:-13%}.ape\:md\:right-\[-50px\]{right:-50px}.ape\:md\:-bottom-12\.5{bottom:calc(var(--ape-spacing) * -12.5)}.ape\:md\:bottom-\[-15px\]{bottom:-15px}.ape\:md\:bottom-\[unset\]{bottom:unset}.ape\:md\:mt-0{margin-top:0}.ape\:md\:mt-\[5px\]{margin-top:5px}.ape\:md\:mr-\[15px\]{margin-right:15px}.ape\:md\:mb-0{margin-bottom:0}.ape\:md\:ml-\[5px\]{margin-left:5px}.ape\:md\:block{display:block}.ape\:md\:flex{display:flex}.ape\:md\:flex\!{display:flex!important}.ape\:md\:hidden{display:none}.ape\:md\:hidden\!{display:none!important}.ape\:md\:h-\[200px\]{height:200px}.ape\:md\:h-\[225px\]{height:225px}.ape\:md\:max-h-\[350px\]{max-height:350px}.ape\:md\:min-h-\[430px\]{min-height:430px}.ape\:md\:w-1\/2{width:50%}.ape\:md\:w-87\.5{width:calc(var(--ape-spacing) * 87.5)}.ape\:md\:w-175{width:calc(var(--ape-spacing) * 175)}.ape\:md\:w-\[35\%\]{width:35%}.ape\:md\:w-\[150px\]{width:150px}.ape\:md\:w-\[180px\]{width:180px}.ape\:md\:w-\[200px\]{width:200px}.ape\:md\:w-\[225px\]{width:225px}.ape\:md\:w-\[300px\]{width:300px}.ape\:md\:w-\[calc\(100\%-300px\)\]{width:calc(100% - 300px)}.ape\:md\:w-\[unset\]{width:unset}.ape\:md\:w-full{width:100%}.ape\:md\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:md\:translate-x-0{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:md\:-translate-y-3\/4{--tw-translate-y:calc(calc(3 / 4 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:md\:scale-\[0\.4\]{scale:.4}.ape\:md\:flex-col{flex-direction:column}.ape\:md\:flex-row,.ape\:min-md\:flex-row{flex-direction:row}.ape\:md\:justify-end{justify-content:flex-end}.ape\:md\:gap-\[15px\]{gap:15px}.ape\:min-md\:gap-\[5px\]{gap:5px}.ape\:md\:rounded-\[20px\]{border-radius:20px}.ape\:md\:rounded-normal{border-radius:var(--ape-radius-normal)}.ape\:md\:p-3{padding:calc(var(--ape-spacing) * 3)}.ape\:md\:p-5{padding:calc(var(--ape-spacing) * 5)}.ape\:md\:p-\[4px_10px\]{padding:4px 10px}.ape\:md\:p-\[20px\]{padding:20px}.ape\:md\:pr-\[20px\]{padding-right:20px}.ape\:md\:pb-1\.25{padding-bottom:calc(var(--ape-spacing) * 1.25)}.ape\:min-md\:pb-\[5px\]{padding-bottom:5px}.ape\:md\:pl-\[20px\]{padding-left:20px}.ape\:md\:text-\[12px\]\!{font-size:12px!important}.ape\:md\:text-\[14px\]{font-size:14px}.ape\:md\:text-\[14px\]\!{font-size:14px!important}.ape\:md\:text-\[16px\]{font-size:16px}.ape\:md\:text-\[18px\]{font-size:18px}.ape\:md\:text-\[20px\]{font-size:20px}.ape\:md\:text-\[24px\]{font-size:24px}.ape\:min-md\:text-\[16px\]{font-size:16px}.ape\:md\:leading-\[21px\]\!{--tw-leading:21px!important;line-height:21px!important}.ape\:md\:font-bold{--tw-font-weight:var(--ape-font-weight-bold);font-weight:var(--ape-font-weight-bold)}@media (hover:hover){.ape\:md\:hover\:z-\[1000\]\!:hover{z-index:1000!important}}}@media (min-width:968px){.ape\:lg\:mt-0{margin-top:0}.ape\:lg\:mr-\[10px\]{margin-right:10px}.ape\:lg\:mr-\[15px\]{margin-right:15px}.ape\:lg\:mb-0{margin-bottom:0}.ape\:lg\:ml-0{margin-left:0}.ape\:lg\:ml-\[10px\]{margin-left:10px}.ape\:lg\:flex{display:flex}.ape\:lg\:inline{display:inline}.ape\:lg\:h-\[40px\]{height:40px}.ape\:lg\:w-1\/2{width:50%}.ape\:lg\:w-\[30\%\]{width:30%}.ape\:lg\:w-\[35\%\]{width:35%}.ape\:lg\:w-\[45\%\]{width:45%}.ape\:lg\:w-\[65\%\]{width:65%}.ape\:lg\:w-\[unset\]{width:unset}.ape\:lg\:w-auto{width:auto}.ape\:lg\:max-w-\[calc\(100\%-35px\)\]{max-width:calc(100% - 35px)}.ape\:lg\:min-w-75\!{min-width:calc(var(--ape-spacing) * 75)!important}.ape\:lg\:min-w-100{min-width:calc(var(--ape-spacing) * 100)}.ape\:lg\:flex-row{flex-direction:row}.ape\:lg\:items-center{align-items:center}.ape\:lg\:gap-\[10px\]{gap:10px}.ape\:lg\:gap-\[15px\]{gap:15px}.ape\:lg\:overflow-visible{overflow:visible}.ape\:lg\:rounded-normal{border-radius:var(--ape-radius-normal)}.ape\:lg\:bg-white4{background-color:var(--ape-color-white4)}.ape\:lg\:bg-\[image\:var\(--banner-bg-desktop\)\]{background-image:var(--banner-bg-desktop)}.ape\:lg\:px-\[10px\]{padding-inline:10px}.ape\:lg\:pr-\[20px\]{padding-right:20px}.ape\:lg\:pb-\[20px\]{padding-bottom:20px}.ape\:lg\:text-\[16px\]\!{font-size:16px!important}.ape\:lg\:leading-6\!{--tw-leading:calc(var(--ape-spacing) * 6)!important;line-height:calc(var(--ape-spacing) * 6)!important}}@media (min-width:1000px){.ape\:min-\[1000px\]\:absolute{position:absolute}.ape\:min-\[1000px\]\:left-\[10px\]{left:10px}.ape\:min-\[1000px\]\:mt-0{margin-top:0}.ape\:min-\[1000px\]\:flex{display:flex}.ape\:min-\[1000px\]\:hidden{display:none}.ape\:min-\[1000px\]\:h-\[70px\]{height:70px}.ape\:min-\[1000px\]\:w-\[30\%\]{width:30%}.ape\:min-\[1000px\]\:w-\[70\%\]{width:70%}.ape\:min-\[1000px\]\:w-\[130px\]{width:130px}.ape\:min-\[1000px\]\:w-\[210px\]{width:210px}.ape\:min-\[1000px\]\:w-\[300px\]{width:300px}.ape\:min-\[1000px\]\:min-w-\[300px\]{min-width:300px}.ape\:min-\[1000px\]\:flex-row{flex-direction:row}.ape\:min-\[1000px\]\:justify-between{justify-content:space-between}.ape\:min-\[1000px\]\:justify-center{justify-content:center}.ape\:min-\[1000px\]\:justify-end{justify-content:flex-end}.ape\:min-\[1000px\]\:p-0{padding:0}.ape\:min-\[1000px\]\:p-\[20px_0_10px_0\]{padding:20px 0 10px}.ape\:min-\[1000px\]\:pr-\[20px\]{padding-right:20px}}@media (min-width:1080px){.ape\:xl\:flex{display:flex}.ape\:xl\:w-\[30\%\]{width:30%}.ape\:xl\:w-\[70\%\]{width:70%}.ape\:xl\:w-\[100px\]{width:100px}.ape\:xl\:w-\[115px\]{width:115px}.ape\:xl\:w-\[135px\]{width:135px}.ape\:xl\:min-w-\[400px\]{min-width:400px}.ape\:xl\:flex-row{flex-direction:row}.ape\:xl\:justify-between{justify-content:space-between}.ape\:xl\:gap-\[30px\]{gap:30px}.ape\:xl\:p-\[20px_0_10px_0\]{padding:20px 0 10px}}@media (min-width:1200px){.ape\:xxl\:flex{display:flex}}.ape\:\[\&_\*\]\:text-\[14px\]\! *{font-size:14px!important}.ape\:\[\&_\*\]\:text-\[18px\]\! *{font-size:18px!important}.ape\:\[\&_\*\]\:text-\[24px\]\! *{font-size:24px!important}.ape\:\[\&_button\]\:ml-auto button,.ape\:\[\&_svg\]\:ml-auto svg{margin-left:auto}.ape\:\[\&_svg\]\:w-\[11px\] svg{width:11px}.ape\:\[\&_svg\]\:cursor-pointer svg{cursor:pointer}.ape\:\[\&_svg\]\:bg-transparent svg{background-color:#0000}.ape\:\[\&_svg\]\:fill-text svg{fill:var(--ape-color-text)}.ape\:\[\&\:\:-webkit-scrollbar\]\:h-\[5px\]::-webkit-scrollbar{height:5px}.ape\:\[\&\>\*\]\:h-\[31px\]\!>*{height:31px!important}.ape\:\[\&\>\*\]\:w-\[210px\]>*{width:210px}.ape\:\[\&\>\*\]\:text-\[14px\]\!>*{font-size:14px!important}@media (min-width:1080px){.ape\:xl\:\[\&\>\*\]\:w-\[100px\]>*{width:100px}}.ape\:\[\&\>div\]\:pt-0\!>div{padding-top:0!important}.ape\:\[\&\>div\:last-child\]\:mr-0>div:last-child{margin-right:0}.ape\:\[\&\>div\>div\]\:bg-white2>div>div{background-color:var(--ape-color-white2)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-outline-style:solid;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--ape-font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--ape-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--ape-color-white:#fff;--ape-spacing:.25rem;--ape-text-sm:.875rem;--ape-text-sm--line-height:calc(1.25 / .875);--ape-text-base:1rem;--ape-text-base--line-height:calc(1.5 / 1);--ape-font-weight-light:300;--ape-font-weight-normal:400;--ape-font-weight-medium:500;--ape-font-weight-semibold:600;--ape-font-weight-bold:700;--ape-ease-out:cubic-bezier(0, 0, .2, 1);--ape-ease-in-out:cubic-bezier(.4, 0, .2, 1);--ape-default-transition-duration:.15s;--ape-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--ape-default-font-family:var(--ape-font-sans);--ape-default-mono-font-family:var(--ape-font-mono);--ape-color-white1:#0e0d16;--ape-color-white2:#161420;--ape-color-white3:#1f1d29;--ape-color-white4:#282632;--ape-color-white5:#312f3a;--ape-color-primary-button:#6560c5;--ape-color-primary-button-disable:#48475b;--ape-color-primary-button-hovered:#8480d1;--ape-color-success:#38a611;--ape-color-error:#df4141;--ape-color-text:#fafafa;--ape-color-text-disabled:#424242;--ape-color-text-disabled-button:#73728e;--ape-color-primary-bright:#fafafa;--ape-color-modal-overlay:#42424280;--ape-gradient-abond:linear-gradient(98.79deg, #6560c5 -2.37%, #e07753 100%);--ape-font-body:"Poppins", sans-serif;--ape-radius-small:6px;--ape-radius-default:16px;--ape-radius-normal:10px;--ape-radius-card:32px;--ape-z-index-dropdown:10;--ape-z-index-modal:102}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--ape-default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--ape-default-font-feature-settings,normal);font-variation-settings:var(--ape-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--ape-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--ape-default-mono-font-feature-settings,normal);font-variation-settings:var(--ape-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.ape-root{width:100%;min-width:0;font-family:var(--ape-font-body);-webkit-font-smoothing:antialiased;color:var(--ape-color-text);background-color:var(--ape-color-white1);scroll-behavior:smooth;font-weight:600}.ape-root a{color:var(--ape-color-text);text-decoration:none}.ape-root a:hover{color:var(--ape-color-primary-button);text-decoration:underline}.ape-root hr{background-color:var(--ape-color-white3);border:none;height:1px}.ape-root ::-webkit-scrollbar{width:6px}.ape-root ::-webkit-scrollbar-thumb{background:var(--ape-color-text);border-radius:8px}.ape-root ::-webkit-scrollbar-track{background:var(--ape-color-white2);border-radius:10px}}@layer components{@keyframes ape-ellipsis{0%{content:"."}33%{content:".."}66%{content:"..."}}.ape-ellipsis:after{content:".";text-align:left;width:1em;animation:1.25s infinite ape-ellipsis;display:inline-block}.ape-carousel-viewport{-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;-webkit-touch-callout:none}.ape-carousel-viewport::-webkit-scrollbar{display:none}.ape-you-tooltip:after{content:"";border-style:solid;border-width:6px;border-color:transparent var(--ape-color-primary-button) transparent transparent;position:absolute;top:50%;left:-11px;transform:translateY(-50%)}.ape-you-card{position:absolute;top:0;right:-45px}.ape-you-card:before{content:"";border:9px solid #0000;border-right-color:var(--ape-color-primary-button);width:0;height:0;display:block;position:absolute;top:50%;right:100%;transform:translateY(-50%)}@keyframes ape-spinner-rotation{0%{transform:rotate(40deg)}to{transform:rotate(400deg)}}.ape-spinner{box-sizing:border-box;border-radius:50%;display:inline-block}.ape-spinner-loading{animation:1s linear infinite ape-spinner-rotation;transform:rotate(40deg)}.ape-icon{fill:currentColor;transition:transform .3s linear}.ape-icon path{fill:currentColor}.ape-text-link{cursor:pointer;text-decoration:none;display:inline-block;position:relative}.ape-text-link:after{content:"";background:var(--ape-color-text);border-radius:var(--ape-radius-normal);transform-origin:100% 100%;backface-visibility:hidden;width:100%;height:1.5px;transition:transform .25s ease-out;position:absolute;bottom:0;left:0;transform:scaleX(0)}.ape-text-link:hover:after{transform-origin:0 100%;transform:scaleX(1)}.ape-tooltip-bubble{color:var(--ape-color-text);border-radius:var(--ape-radius-normal);background-color:var(--ape-tooltip-bg,var(--ape-color-white2));width:max-content;z-index:var(--ape-z-index-modal);padding:20px;font-size:12px;font-weight:600;line-height:18px;position:relative;top:15px;box-shadow:0 0 25px #c8c8c84d}.ape-tooltip-bottom-right:before,.ape-tooltip-bottom-left:before,.ape-tooltip-top-right:before,.ape-tooltip-top-left:before,.ape-tooltip-left:before{content:"";border:12px solid #0000;width:0;display:block;position:absolute}.ape-tooltip-bottom-right:before{border-top:0;border-bottom-style:solid;border-bottom-width:15px;border-bottom-color:var(--ape-tooltip-bg,var(--ape-color-white2));top:0;right:3%;transform:translate(-50%,-100%)}.ape-tooltip-bottom-left:before{border-top:0;border-bottom-style:solid;border-bottom-width:15px;border-bottom-color:var(--ape-tooltip-bg,var(--ape-color-white2));top:0;left:calc(3% + 15px);transform:translate(-50%,-100%)}.ape-tooltip-top-right:before{border-top-style:solid;border-top-width:15px;border-bottom:0;border-top-color:var(--ape-tooltip-bg,var(--ape-color-white2));bottom:0;right:3%;transform:translate(-50%,100%)}.ape-tooltip-top-left:before{border-top-style:solid;border-top-width:15px;border-bottom:0;border-top-color:var(--ape-tooltip-bg,var(--ape-color-white2));bottom:0;left:calc(3% + 15px);transform:translate(-50%,100%)}.ape-tooltip-only-container-right:before{content:"";border-bottom-color:var(--ape-tooltip-bg,var(--ape-color-white2));position:absolute;right:3%}.ape-tooltip-left:before{color:var(--ape-color-white2);border-right:15px solid;top:65%;left:-13px;transform:translate(-50%,-100%)}@keyframes ape-skeleton-waves{0%{left:-150px}to{left:100%}}@keyframes ape-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}.ape-skeleton-waves{background-color:var(--ape-color-white2);min-height:16px;display:block;position:relative;overflow:hidden;transform:translate(0)}.ape-skeleton-waves:before{content:"";background-image:linear-gradient(90deg,#0000,#f3f3f34d,#0000);width:250px;height:100%;animation:1.5s cubic-bezier(.4,0,.2,1) infinite ape-skeleton-waves;position:absolute;top:0;left:-150px}.ape-skeleton-pulse{background-color:var(--ape-color-white2);border-radius:2px;min-height:20px;animation:2s ease-out infinite ape-skeleton-pulse;display:block;transform:translate(0)}}@layer utilities{.ape\:pointer-events-none{pointer-events:none}.ape\:absolute{position:absolute}.ape\:fixed{position:fixed}.ape\:relative{position:relative}.ape\:inset-0{inset:0}.ape\:-top-\[15px\]{top:-15px}.ape\:top-0{top:0}.ape\:top-1\/2{top:50%}.ape\:top-\[-180px\]{top:-180px}.ape\:top-\[5px\]{top:5px}.ape\:top-\[12px\]{top:12px}.ape\:top-\[24px\]{top:24px}.ape\:top-\[25px\]{top:25px}.ape\:top-\[45px\]{top:45px}.ape\:top-\[50px\]{top:50px}.ape\:top-\[56\%\]{top:56%}.ape\:right-0{right:0}.ape\:right-3{right:calc(var(--ape-spacing) * 3)}.ape\:right-\[5px\]{right:5px}.ape\:right-\[6px\]{right:6px}.ape\:right-\[10px\]{right:10px}.ape\:right-\[50\%\]{right:50%}.ape\:bottom-0{bottom:0}.ape\:bottom-\[-43px\]{bottom:-43px}.ape\:bottom-\[3px\]{bottom:3px}.ape\:bottom-\[calc\(100\%-10px\)\]{bottom:calc(100% - 10px)}.ape\:bottom-\[unset\]{bottom:unset}.ape\:left-0{left:0}.ape\:left-1\/2{left:50%}.ape\:left-\[-20px\]{left:-20px}.ape\:left-\[-50px\]{left:-50px}.ape\:left-\[1px\]{left:1px}.ape\:left-\[25\%\]{left:25%}.ape\:left-\[40px\]{left:40px}.ape\:left-\[65\%\]{left:65%}.ape\:-z-\[1\]{z-index:calc(1 * -1)}.ape\:z-0{z-index:0}.ape\:z-10{z-index:10}.ape\:z-100{z-index:100}.ape\:z-\[1\]{z-index:1}.ape\:z-\[2\]{z-index:2}.ape\:z-\[5\]{z-index:5}.ape\:z-\[20\]{z-index:20}.ape\:z-\[100\]{z-index:100}.ape\:z-\[103\]{z-index:103}.ape\:z-\[121\]{z-index:121}.ape\:z-\[999\]{z-index:999}.ape\:z-\[1000\]{z-index:1000}.ape\:z-\[1001\]{z-index:1001}.ape\:z-\[5000\]{z-index:5000}.ape\:float-left{float:left}.ape\:m-0{margin:0}.ape\:m-\[0_5px_5px_0\]{margin:0 5px 5px 0}.ape\:m-\[10px_0px_15px_0px\]{margin:10px 0 15px}.ape\:m-auto{margin:auto}.ape\:mx-\[-5px\]{margin-inline:-5px}.ape\:mx-\[-8px\]{margin-inline:-8px}.ape\:mx-\[2\.5px\]{margin-inline:2.5px}.ape\:mx-\[2px\]{margin-inline:2px}.ape\:mx-\[3px\]{margin-inline:3px}.ape\:mx-\[5px\]{margin-inline:5px}.ape\:mx-\[8px\]{margin-inline:8px}.ape\:mx-\[10px\]{margin-inline:10px}.ape\:mx-\[20px\]{margin-inline:20px}.ape\:mx-\[25px\]{margin-inline:25px}.ape\:my-\[2px\]{margin-block:2px}.ape\:my-\[5px\]{margin-block:5px}.ape\:my-\[10px\]{margin-block:10px}.ape\:my-\[15px\]{margin-block:15px}.ape\:my-\[20px\]{margin-block:20px}.ape\:mt-0{margin-top:0}.ape\:mt-0\.75{margin-top:calc(var(--ape-spacing) * .75)}.ape\:mt-2{margin-top:calc(var(--ape-spacing) * 2)}.ape\:mt-2\.5{margin-top:calc(var(--ape-spacing) * 2.5)}.ape\:mt-4{margin-top:calc(var(--ape-spacing) * 4)}.ape\:mt-\[-5px\]{margin-top:-5px}.ape\:mt-\[-15px\]{margin-top:-15px}.ape\:mt-\[3px\]{margin-top:3px}.ape\:mt-\[5px\]{margin-top:5px}.ape\:mt-\[10px\]{margin-top:10px}.ape\:mt-\[15px\]{margin-top:15px}.ape\:mt-\[20px\]{margin-top:20px}.ape\:mt-\[25px\]{margin-top:25px}.ape\:mt-\[30px\]{margin-top:30px}.ape\:mt-\[35px\]{margin-top:35px}.ape\:mt-\[40px\]{margin-top:40px}.ape\:mt-px{margin-top:1px}.ape\:mr-0{margin-right:0}.ape\:mr-1\.25{margin-right:calc(var(--ape-spacing) * 1.25)}.ape\:mr-\[3px\]{margin-right:3px}.ape\:mr-\[4px\]{margin-right:4px}.ape\:mr-\[5px\]{margin-right:5px}.ape\:mr-\[6px\]{margin-right:6px}.ape\:mr-\[8px\]{margin-right:8px}.ape\:mr-\[10px\]{margin-right:10px}.ape\:mr-\[15px\]{margin-right:15px}.ape\:mr-\[20px\]{margin-right:20px}.ape\:mb-1\.25{margin-bottom:calc(var(--ape-spacing) * 1.25)}.ape\:mb-2\.5{margin-bottom:calc(var(--ape-spacing) * 2.5)}.ape\:mb-5{margin-bottom:calc(var(--ape-spacing) * 5)}.ape\:mb-\[1px\]{margin-bottom:1px}.ape\:mb-\[3px\]{margin-bottom:3px}.ape\:mb-\[5px\]{margin-bottom:5px}.ape\:mb-\[8px\]{margin-bottom:8px}.ape\:mb-\[10px\]{margin-bottom:10px}.ape\:mb-\[14px\]{margin-bottom:14px}.ape\:mb-\[15px\]{margin-bottom:15px}.ape\:mb-\[20px\]{margin-bottom:20px}.ape\:mb-\[30px\]{margin-bottom:30px}.ape\:mb-\[50px\]{margin-bottom:50px}.ape\:ml-0{margin-left:0}.ape\:ml-1{margin-left:var(--ape-spacing)}.ape\:ml-3\.5{margin-left:calc(var(--ape-spacing) * 3.5)}.ape\:ml-3\.75{margin-left:calc(var(--ape-spacing) * 3.75)}.ape\:ml-5{margin-left:calc(var(--ape-spacing) * 5)}.ape\:ml-\[3px\]{margin-left:3px}.ape\:ml-\[4px\]{margin-left:4px}.ape\:ml-\[5px\]{margin-left:5px}.ape\:ml-\[6px\]{margin-left:6px}.ape\:ml-\[7px\]{margin-left:7px}.ape\:ml-\[10px\]{margin-left:10px}.ape\:ml-\[15px\]{margin-left:15px}.ape\:ml-\[20px\]{margin-left:20px}.ape\:ml-\[30px\]{margin-left:30px}.ape\:line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.ape\:block{display:block}.ape\:block\!{display:block!important}.ape\:flex{display:flex}.ape\:hidden{display:none}.ape\:hidden\!{display:none!important}.ape\:inline-flex{display:inline-flex}.ape\:aspect-\[1\/0\.56\]{aspect-ratio:1/.56}.ape\:size-full{width:100%;height:100%}.ape\:h-7\.5{height:calc(var(--ape-spacing) * 7.5)}.ape\:h-8{height:calc(var(--ape-spacing) * 8)}.ape\:h-10{height:calc(var(--ape-spacing) * 10)}.ape\:h-11\.25{height:calc(var(--ape-spacing) * 11.25)}.ape\:h-\[2px\]{height:2px}.ape\:h-\[3px\]{height:3px}.ape\:h-\[5px\]{height:5px}.ape\:h-\[14px\]{height:14px}.ape\:h-\[15px\]{height:15px}.ape\:h-\[18px\]{height:18px}.ape\:h-\[20px\]{height:20px}.ape\:h-\[21px\]{height:21px}.ape\:h-\[22px\]{height:22px}.ape\:h-\[24px\]{height:24px}.ape\:h-\[25px\]{height:25px}.ape\:h-\[26px\]{height:26px}.ape\:h-\[30px\]{height:30px}.ape\:h-\[30vh\]{height:30vh}.ape\:h-\[31px\]{height:31px}.ape\:h-\[32px\]{height:32px}.ape\:h-\[34px\]{height:34px}.ape\:h-\[35px\]{height:35px}.ape\:h-\[36px\]{height:36px}.ape\:h-\[36px\]\!{height:36px!important}.ape\:h-\[40px\]{height:40px}.ape\:h-\[45px\]{height:45px}.ape\:h-\[49px\]{height:49px}.ape\:h-\[60px\]{height:60px}.ape\:h-\[70px\]{height:70px}.ape\:h-\[75px\]{height:75px}.ape\:h-\[84px\]{height:84px}.ape\:h-\[91px\]{height:91px}.ape\:h-\[125px\]{height:125px}.ape\:h-\[300px\]{height:300px}.ape\:h-\[400px\]{height:400px}.ape\:h-\[725px\]{height:725px}.ape\:h-\[calc\(100\%\+20px\)\]{height:calc(100% + 20px)}.ape\:h-\[calc\(100\%-150px\)\]{height:calc(100% - 150px)}.ape\:h-\[unset\]{height:unset}.ape\:h-auto{height:auto}.ape\:h-fit{height:fit-content}.ape\:h-full{height:100%}.ape\:h-px{height:1px}.ape\:h-screen{height:100vh}.ape\:max-h-\[32px\]{max-height:32px}.ape\:max-h-\[48px\]{max-height:48px}.ape\:max-h-\[95vh\]{max-height:95vh}.ape\:max-h-\[300px\]{max-height:300px}.ape\:max-h-none{max-height:none}.ape\:min-h-4{min-height:calc(var(--ape-spacing) * 4)}.ape\:min-h-23{min-height:calc(var(--ape-spacing) * 23)}.ape\:min-h-\[27px\]{min-height:27px}.ape\:min-h-\[30px\]{min-height:30px}.ape\:min-h-\[40px\]{min-height:40px}.ape\:min-h-\[47\.45px\]{min-height:47.45px}.ape\:min-h-\[90px\]{min-height:90px}.ape\:min-h-\[160px\]{min-height:160px}.ape\:min-h-\[225px\]{min-height:225px}.ape\:min-h-\[330px\]{min-height:330px}.ape\:w-1\/2{width:50%}.ape\:w-1\/5{width:20%}.ape\:w-7\!{width:calc(var(--ape-spacing) * 7)!important}.ape\:w-43\.75{width:calc(var(--ape-spacing) * 43.75)}.ape\:w-85{width:calc(var(--ape-spacing) * 85)}.ape\:w-95{width:calc(var(--ape-spacing) * 95)}.ape\:w-\[6px\]{width:6px}.ape\:w-\[8px\]{width:8px}.ape\:w-\[14px\]{width:14px}.ape\:w-\[15px\]{width:15px}.ape\:w-\[20px\]{width:20px}.ape\:w-\[25px\]{width:25px}.ape\:w-\[30px\]{width:30px}.ape\:w-\[32\%\]{width:32%}.ape\:w-\[34\%\]{width:34%}.ape\:w-\[35px\]{width:35px}.ape\:w-\[36\%\]{width:36%}.ape\:w-\[40px\]{width:40px}.ape\:w-\[45\%\]{width:45%}.ape\:w-\[49\%\]{width:49%}.ape\:w-\[50px\]{width:50px}.ape\:w-\[55px\]{width:55px}.ape\:w-\[60px\]{width:60px}.ape\:w-\[65\%\]{width:65%}.ape\:w-\[75\%\]{width:75%}.ape\:w-\[85px\]{width:85px}.ape\:w-\[98vw\]{width:98vw}.ape\:w-\[100px\]{width:100px}.ape\:w-\[110px\]{width:110px}.ape\:w-\[115px\]{width:115px}.ape\:w-\[120px\]{width:120px}.ape\:w-\[122px\]{width:122px}.ape\:w-\[125px\]{width:125px}.ape\:w-\[127px\]{width:127px}.ape\:w-\[130px\]{width:130px}.ape\:w-\[135px\]{width:135px}.ape\:w-\[144px\]{width:144px}.ape\:w-\[155px\]{width:155px}.ape\:w-\[160px\]{width:160px}.ape\:w-\[170px\]{width:170px}.ape\:w-\[175px\]{width:175px}.ape\:w-\[190px\]{width:190px}.ape\:w-\[210px\]{width:210px}.ape\:w-\[220px\]{width:220px}.ape\:w-\[235px\]{width:235px}.ape\:w-\[300px\]{width:300px}.ape\:w-\[380px\]{width:380px}.ape\:w-\[380px\]\!{width:380px!important}.ape\:w-\[400px\]{width:400px}.ape\:w-\[420px\]{width:420px}.ape\:w-\[450px\]{width:450px}.ape\:w-\[480px\]{width:480px}.ape\:w-\[500px\]{width:500px}.ape\:w-\[740px\]\!{width:740px!important}.ape\:w-\[calc\(33\.33\%-20px\)\]{width:calc(33.33% - 20px)}.ape\:w-\[calc\(50vw-25px\)\]{width:calc(50vw - 25px)}.ape\:w-\[calc\(100\%\+40px\)\]{width:calc(100% + 40px)}.ape\:w-\[calc\(100\%-2px\)\]{width:calc(100% - 2px)}.ape\:w-auto{width:auto}.ape\:w-fit{width:fit-content}.ape\:w-full{width:100%}.ape\:w-max{width:max-content}.ape\:w-screen{width:100vw}.ape\:max-w-75{max-width:calc(var(--ape-spacing) * 75)}.ape\:max-w-85{max-width:calc(var(--ape-spacing) * 85)}.ape\:max-w-\[95vw\]{max-width:95vw}.ape\:max-w-\[100px\]{max-width:100px}.ape\:max-w-\[300px\]{max-width:300px}.ape\:max-w-full{max-width:100%}.ape\:min-w-\[10px\]{min-width:10px}.ape\:min-w-\[14px\]{min-width:14px}.ape\:min-w-\[20px\]{min-width:20px}.ape\:min-w-\[25px\]{min-width:25px}.ape\:min-w-\[30px\]{min-width:30px}.ape\:min-w-\[33px\]{min-width:33px}.ape\:min-w-\[40px\]{min-width:40px}.ape\:min-w-\[48px\]{min-width:48px}.ape\:min-w-\[65px\]{min-width:65px}.ape\:min-w-\[100px\]{min-width:100px}.ape\:min-w-\[120px\]{min-width:120px}.ape\:min-w-\[148px\]{min-width:148px}.ape\:min-w-\[250px\]{min-width:250px}.ape\:min-w-\[700px\]{min-width:700px}.ape\:min-w-\[unset\]{min-width:unset}.ape\:min-w-full{min-width:100%}.ape\:\[flex\:0_0_100\%\]{flex:0 0 100%}.ape\:flex-1{flex:1}.ape\:shrink-0{flex-shrink:0}.ape\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:translate-x-1\/2{--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:translate-x-\[50\%\]{--tw-translate-x:50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:scale-\[0\.5\]{scale:.5}.ape\:rotate-\[-45deg\]{rotate:-45deg}.ape\:cursor-\[unset\]{cursor:unset}.ape\:cursor-pointer{cursor:pointer}.ape\:snap-center{scroll-snap-align:center}.ape\:list-none{list-style-type:none}.ape\:appearance-none{appearance:none}.ape\:flex-col{flex-direction:column}.ape\:flex-col-reverse{flex-direction:column-reverse}.ape\:flex-row{flex-direction:row}.ape\:flex-row-reverse{flex-direction:row-reverse}.ape\:flex-wrap{flex-wrap:wrap}.ape\:items-center{align-items:center}.ape\:items-end{align-items:flex-end}.ape\:items-start{align-items:flex-start}.ape\:items-stretch{align-items:stretch}.ape\:justify-around{justify-content:space-around}.ape\:justify-between{justify-content:space-between}.ape\:justify-center{justify-content:center}.ape\:justify-end{justify-content:flex-end}.ape\:justify-start{justify-content:flex-start}.ape\:gap-1{gap:var(--ape-spacing)}.ape\:gap-2\.5{gap:calc(var(--ape-spacing) * 2.5)}.ape\:gap-\[1px\]{gap:1px}.ape\:gap-\[3px\]{gap:3px}.ape\:gap-\[4px\]{gap:4px}.ape\:gap-\[5px\]{gap:5px}.ape\:gap-\[7px\]{gap:7px}.ape\:gap-\[8px\]{gap:8px}.ape\:gap-\[10px\]{gap:10px}.ape\:gap-\[14px\]{gap:14px}.ape\:gap-\[15px\]{gap:15px}.ape\:gap-\[20px\]{gap:20px}.ape\:overflow-hidden{overflow:hidden}.ape\:overflow-x-auto{overflow-x:auto}.ape\:overflow-x-hidden{overflow-x:hidden}.ape\:overflow-x-visible{overflow-x:visible}.ape\:\[overflow-y\:unset\]\!{overflow-y:unset!important}.ape\:overflow-y-auto{overflow-y:auto}.ape\:overflow-y-hidden{overflow-y:hidden}.ape\:overflow-y-scroll{overflow-y:scroll}.ape\:rounded-\[0_0_10px_10px\],.ape\:rounded-\[0px_0px_10px_10px\]{border-radius:0 0 10px 10px}.ape\:rounded-\[0px_10px_10px_0px\]{border-radius:0 10px 10px 0}.ape\:rounded-\[4px\]{border-radius:4px}.ape\:rounded-\[5px\]{border-radius:5px}.ape\:rounded-\[6px\]{border-radius:6px}.ape\:rounded-\[6px_6px_0px_0px\]{border-radius:6px 6px 0 0}.ape\:rounded-\[8px\]{border-radius:8px}.ape\:rounded-\[10px\]{border-radius:10px}.ape\:rounded-\[10px_0px_10px_0px\]{border-radius:10px 0}.ape\:rounded-\[10px_10px_0_0\],.ape\:rounded-\[10px_10px_0px_0px\]{border-radius:10px 10px 0 0}.ape\:rounded-\[14px\]{border-radius:14px}.ape\:rounded-\[40px\]{border-radius:40px}.ape\:rounded-\[50\%\]{border-radius:50%}.ape\:rounded-\[50px\]{border-radius:50px}.ape\:rounded-full{border-radius:3.40282e38px}.ape\:rounded-none{border-radius:0}.ape\:rounded-normal{border-radius:var(--ape-radius-normal)}.ape\:rounded-small{border-radius:var(--ape-radius-small)}.ape\:rounded-tl-\[10px\]{border-top-left-radius:10px}.ape\:rounded-br-\[8px\]{border-bottom-right-radius:8px}.ape\:border{border-style:var(--tw-border-style);border-width:1px}.ape\:border-0{border-style:var(--tw-border-style);border-width:0}.ape\:border-2{border-style:var(--tw-border-style);border-width:2px}.ape\:border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.ape\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.ape\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.ape\:border-none{--tw-border-style:none;border-style:none}.ape\:border-solid{--tw-border-style:solid;border-style:solid}.ape\:border-\[\#9960C5\]{border-color:#9960c5}.ape\:border-\[\#222222\]{border-color:#222}.ape\:border-\[grey\]{border-color:gray}.ape\:border-primary-button{border-color:var(--ape-color-primary-button)}.ape\:border-success{border-color:var(--ape-color-success)}.ape\:border-text{border-color:var(--ape-color-text)}.ape\:border-white2{border-color:var(--ape-color-white2)}.ape\:border-white3{border-color:var(--ape-color-white3)}.ape\:border-white4{border-color:var(--ape-color-white4)}.ape\:bg-\[\#38A6110D\]{background-color:#38a6110d}.ape\:bg-\[\#9960C5\]{background-color:#9960c5}.ape\:bg-\[\#DE62F366\]{background-color:#de62f366}.ape\:bg-\[grey\]{background-color:gray}.ape\:bg-modal-overlay{background-color:var(--ape-color-modal-overlay)}.ape\:bg-primary-button{background-color:var(--ape-color-primary-button)}.ape\:bg-text{background-color:var(--ape-color-text)}.ape\:bg-text-disabled{background-color:var(--ape-color-text-disabled)}.ape\:bg-transparent{background-color:#0000}.ape\:bg-transparent\!{background-color:#0000!important}.ape\:bg-white{background-color:var(--ape-color-white)}.ape\:bg-white1{background-color:var(--ape-color-white1)}.ape\:bg-white2{background-color:var(--ape-color-white2)}.ape\:bg-white2\!{background-color:var(--ape-color-white2)!important}.ape\:bg-white3{background-color:var(--ape-color-white3)}.ape\:bg-white4{background-color:var(--ape-color-white4)}.ape\:bg-\[image\:var\(--ape-gradient-abond\)\]{background-image:var(--ape-gradient-abond)}.ape\:bg-\[image\:var\(--banner-bg-mobile\)\]{background-image:var(--banner-bg-mobile)}.ape\:bg-\[linear-gradient\(180deg\,\#FFFFFF_50\%\,\#666666_100\%\)\]{background-image:linear-gradient(#fff 50%,#666 100%)}.ape\:bg-cover{background-size:cover}.ape\:bg-clip-text{-webkit-background-clip:text;background-clip:text}.ape\:bg-no-repeat{background-repeat:no-repeat}.ape\:object-contain{object-fit:contain}.ape\:object-cover{object-fit:cover}.ape\:p-0{padding:0}.ape\:p-0\!{padding:0!important}.ape\:p-2{padding:calc(var(--ape-spacing) * 2)}.ape\:p-2\.5{padding:calc(var(--ape-spacing) * 2.5)}.ape\:p-3{padding:calc(var(--ape-spacing) * 3)}.ape\:p-3\.75{padding:calc(var(--ape-spacing) * 3.75)}.ape\:p-4{padding:calc(var(--ape-spacing) * 4)}.ape\:p-5{padding:calc(var(--ape-spacing) * 5)}.ape\:p-\[0_1px\]{padding:0 1px}.ape\:p-\[0_20px_20px_20px\]{padding:0 20px 20px}.ape\:p-\[0px_8px\]\!{padding:0 8px!important}.ape\:p-\[2\.5px_5px\]{padding:2.5px 5px}.ape\:p-\[2px\]{padding:2px}.ape\:p-\[2px_5px\]{padding:2px 5px}.ape\:p-\[2px_6px\]{padding:2px 6px}.ape\:p-\[2px_8px\]{padding:2px 8px}.ape\:p-\[2px_10px\]{padding:2px 10px}.ape\:p-\[2px_10px_2px_5px\]{padding:2px 10px 2px 5px}.ape\:p-\[3px_6px\]{padding:3px 6px}.ape\:p-\[4px_2px\]{padding:4px 2px}.ape\:p-\[4px_6px\]{padding:4px 6px}.ape\:p-\[4px_10px\]{padding:4px 10px}.ape\:p-\[5px\]{padding:5px}.ape\:p-\[5px_10px\]{padding:5px 10px}.ape\:p-\[5px_15px\]{padding:5px 15px}.ape\:p-\[5px_20px\]{padding:5px 20px}.ape\:p-\[6px\]{padding:6px}.ape\:p-\[6px_12px\]{padding:6px 12px}.ape\:p-\[8px\]{padding:8px}.ape\:p-\[8px_4px_4px_4px\]{padding:8px 4px 4px}.ape\:p-\[8px_10px\]{padding:8px 10px}.ape\:p-\[8px_12px\]{padding:8px 12px}.ape\:p-\[8px_16px\]{padding:8px 16px}.ape\:p-\[10px\]{padding:10px}.ape\:p-\[15px\]{padding:15px}.ape\:p-\[15px_20px_5px_20px\]{padding:15px 20px 5px}.ape\:p-\[16px\]{padding:16px}.ape\:p-\[20px\]{padding:20px}.ape\:p-px{padding:1px}.ape\:px-2\.5{padding-inline:calc(var(--ape-spacing) * 2.5)}.ape\:px-6{padding-inline:calc(var(--ape-spacing) * 6)}.ape\:px-\[3px\]{padding-inline:3px}.ape\:px-\[4px\]{padding-inline:4px}.ape\:px-\[5px\]{padding-inline:5px}.ape\:px-\[6px\]{padding-inline:6px}.ape\:px-\[8px\]{padding-inline:8px}.ape\:px-\[10px\]{padding-inline:10px}.ape\:px-\[14px\]{padding-inline:14px}.ape\:px-\[15px\]{padding-inline:15px}.ape\:px-\[19px\]{padding-inline:19px}.ape\:py-2\.5{padding-block:calc(var(--ape-spacing) * 2.5)}.ape\:py-\[2px\]{padding-block:2px}.ape\:py-\[3px\]{padding-block:3px}.ape\:py-\[5px\]{padding-block:5px}.ape\:py-\[6px\]{padding-block:6px}.ape\:py-\[10px\]{padding-block:10px}.ape\:py-\[14px\]{padding-block:14px}.ape\:pt-1\.25{padding-top:calc(var(--ape-spacing) * 1.25)}.ape\:pt-3\!{padding-top:calc(var(--ape-spacing) * 3)!important}.ape\:pt-4{padding-top:calc(var(--ape-spacing) * 4)}.ape\:pt-\[2px\]{padding-top:2px}.ape\:pt-\[3px\]{padding-top:3px}.ape\:pt-\[5px\]{padding-top:5px}.ape\:pt-\[10px\]{padding-top:10px}.ape\:pt-\[15px\]{padding-top:15px}.ape\:pt-\[20px\]{padding-top:20px}.ape\:pt-\[100px\]{padding-top:100px}.ape\:pr-0{padding-right:0}.ape\:pr-1\.25{padding-right:calc(var(--ape-spacing) * 1.25)}.ape\:pr-\[4px\]{padding-right:4px}.ape\:pr-\[14px\]{padding-right:14px}.ape\:pr-\[15px\]{padding-right:15px}.ape\:pr-\[20px\]{padding-right:20px}.ape\:pr-\[23px\]{padding-right:23px}.ape\:pb-\[2px\]{padding-bottom:2px}.ape\:pb-\[10px\]{padding-bottom:10px}.ape\:pb-\[20px\]{padding-bottom:20px}.ape\:pb-\[100px\]{padding-bottom:100px}.ape\:pl-0{padding-left:0}.ape\:pl-0\!{padding-left:0!important}.ape\:pl-1\.25{padding-left:calc(var(--ape-spacing) * 1.25)}.ape\:pl-\[5px\]{padding-left:5px}.ape\:pl-\[10px\]{padding-left:10px}.ape\:pl-\[15px\]{padding-left:15px}.ape\:pl-\[20px\]{padding-left:20px}.ape\:pl-\[26px\]{padding-left:26px}.ape\:pl-\[35px\]{padding-left:35px}.ape\:text-center{text-align:center}.ape\:text-left{text-align:left}.ape\:align-middle{vertical-align:middle}.ape\:align-sub{vertical-align:sub}.ape\:font-body{font-family:var(--ape-font-body)}.ape\:text-base{font-size:var(--ape-text-base);line-height:var(--tw-leading,var(--ape-text-base--line-height))}.ape\:text-sm{font-size:var(--ape-text-sm);line-height:var(--tw-leading,var(--ape-text-sm--line-height))}.ape\:text-sm\!{font-size:var(--ape-text-sm)!important;line-height:var(--tw-leading,var(--ape-text-sm--line-height))!important}.ape\:text-\[10px\]{font-size:10px}.ape\:text-\[10px\]\!{font-size:10px!important}.ape\:text-\[11px\]{font-size:11px}.ape\:text-\[12px\]{font-size:12px}.ape\:text-\[12px\]\!{font-size:12px!important}.ape\:text-\[13px\]{font-size:13px}.ape\:text-\[13px\]\!{font-size:13px!important}.ape\:text-\[14\.26px\]{font-size:14.26px}.ape\:text-\[14px\]{font-size:14px}.ape\:text-\[14px\]\!{font-size:14px!important}.ape\:text-\[16px\]{font-size:16px}.ape\:text-\[18px\]{font-size:18px}.ape\:text-\[18px\]\!{font-size:18px!important}.ape\:text-\[20px\]{font-size:20px}.ape\:text-\[22px\]{font-size:22px}.ape\:text-\[24px\]{font-size:24px}.ape\:text-\[24px\]\!{font-size:24px!important}.ape\:text-\[25\.26px\]{font-size:25.26px}.ape\:text-\[32px\]{font-size:32px}.ape\:leading-4{--tw-leading:calc(var(--ape-spacing) * 4);line-height:calc(var(--ape-spacing) * 4)}.ape\:leading-4\!{--tw-leading:calc(var(--ape-spacing) * 4)!important;line-height:calc(var(--ape-spacing) * 4)!important}.ape\:leading-5{--tw-leading:calc(var(--ape-spacing) * 5);line-height:calc(var(--ape-spacing) * 5)}.ape\:leading-5\.5\!{--tw-leading:calc(var(--ape-spacing) * 5.5)!important;line-height:calc(var(--ape-spacing) * 5.5)!important}.ape\:leading-\[11px\]{--tw-leading:11px;line-height:11px}.ape\:leading-\[12px\]{--tw-leading:12px;line-height:12px}.ape\:leading-\[13px\]{--tw-leading:13px;line-height:13px}.ape\:leading-\[14px\]{--tw-leading:14px;line-height:14px}.ape\:leading-\[15px\]{--tw-leading:15px;line-height:15px}.ape\:leading-\[18px\]{--tw-leading:18px;line-height:18px}.ape\:leading-\[18px\]\!{--tw-leading:18px!important;line-height:18px!important}.ape\:leading-\[21px\]{--tw-leading:21px;line-height:21px}.ape\:leading-\[22px\]{--tw-leading:22px;line-height:22px}.ape\:leading-\[24px\]{--tw-leading:24px;line-height:24px}.ape\:leading-\[28px\]{--tw-leading:28px;line-height:28px}.ape\:leading-\[30\.26px\]{--tw-leading:30.26px;line-height:30.26px}.ape\:leading-\[33px\]{--tw-leading:33px;line-height:33px}.ape\:font-bold{--tw-font-weight:var(--ape-font-weight-bold);font-weight:var(--ape-font-weight-bold)}.ape\:font-light{--tw-font-weight:var(--ape-font-weight-light);font-weight:var(--ape-font-weight-light)}.ape\:font-medium{--tw-font-weight:var(--ape-font-weight-medium);font-weight:var(--ape-font-weight-medium)}.ape\:font-normal{--tw-font-weight:var(--ape-font-weight-normal);font-weight:var(--ape-font-weight-normal)}.ape\:font-semibold{--tw-font-weight:var(--ape-font-weight-semibold);font-weight:var(--ape-font-weight-semibold)}.ape\:tracking-\[0\]{--tw-tracking:0;letter-spacing:0}.ape\:break-all{word-break:break-all}.ape\:text-ellipsis{text-overflow:ellipsis}.ape\:whitespace-nowrap{white-space:nowrap}.ape\:text-\[\#777\]{color:#777}.ape\:text-error{color:var(--ape-color-error)}.ape\:text-primary-bright{color:var(--ape-color-primary-bright)}.ape\:text-primary-button{color:var(--ape-color-primary-button)}.ape\:text-primary-button-disable{color:var(--ape-color-primary-button-disable)}.ape\:text-success{color:var(--ape-color-success)}.ape\:text-text{color:var(--ape-color-text)}.ape\:text-text-disabled{color:var(--ape-color-text-disabled)}.ape\:text-text-disabled-button{color:var(--ape-color-text-disabled-button)}.ape\:text-transparent{color:#0000}.ape\:text-white{color:var(--ape-color-white)}.ape\:capitalize{text-transform:capitalize}.ape\:normal-case{text-transform:none}.ape\:uppercase{text-transform:uppercase}.ape\:line-through{text-decoration-line:line-through}.ape\:no-underline{text-decoration-line:none}.ape\:underline{text-decoration-line:underline}.ape\:opacity-0{opacity:0}.ape\:opacity-20{opacity:.2}.ape\:opacity-50{opacity:.5}.ape\:opacity-60{opacity:.6}.ape\:opacity-70{opacity:.7}.ape\:opacity-80{opacity:.8}.ape\:opacity-90{opacity:.9}.ape\:shadow-\[0px_1px_4px_rgb\(0_0_0\/0\.16\)\]{--tw-shadow:0px 1px 4px var(--tw-shadow-color,#00000029);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:shadow-\[rgba\(0\,0\,0\,0\.16\)_0px_1px_4px\]{--tw-shadow-color:#00000029}@supports (color:color-mix(in lab, red, red)){.ape\:shadow-\[rgba\(0\,0\,0\,0\.16\)_0px_1px_4px\]{--tw-shadow-color:color-mix(in oklab, #00000029 0px 1px 4px var(--tw-shadow-alpha), transparent)}}.ape\:blur-\[1px\]{--tw-blur:blur(1px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.ape\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--ape-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ape-default-transition-duration))}.ape\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--ape-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ape-default-transition-duration))}.ape\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--ape-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ape-default-transition-duration))}.ape\:duration-300{--tw-duration:.3s;transition-duration:.3s}.ape\:duration-500{--tw-duration:.5s;transition-duration:.5s}.ape\:duration-1000{--tw-duration:1s;transition-duration:1s}.ape\:duration-\[1500ms\]{--tw-duration:1.5s;transition-duration:1.5s}.ape\:ease-\[ease\]{--tw-ease:ease;transition-timing-function:ease}.ape\:ease-in-out{--tw-ease:var(--ape-ease-in-out);transition-timing-function:var(--ape-ease-in-out)}.ape\:ease-linear{--tw-ease:linear;transition-timing-function:linear}.ape\:ease-out{--tw-ease:var(--ape-ease-out);transition-timing-function:var(--ape-ease-out)}.ape\:outline-none{--tw-outline-style:none;outline-style:none}.ape\:select-none{-webkit-user-select:none;user-select:none}.ape\:\[-webkit-text-fill-color\:transparent\]{-webkit-text-fill-color:transparent}@media (hover:hover){.ape\:group-hover\:bg-\[rgb\(20_18_29_\/_0\.25\)\]\!:is(:where(.ape\:group):hover *){background-color:#14121d40!important}.ape\:group-hover\/tooltip\:block:is(:where(.ape\:group\/tooltip):hover *){display:block}}.ape\:peer-checked\:block:is(:where(.ape\:peer):checked~*){display:block}.ape\:first\:rounded-t-normal:first-child{border-top-left-radius:var(--ape-radius-normal);border-top-right-radius:var(--ape-radius-normal)}.ape\:last\:mr-0:last-child{margin-right:0}.ape\:last\:rounded-b-normal:last-child{border-bottom-right-radius:var(--ape-radius-normal);border-bottom-left-radius:var(--ape-radius-normal)}.ape\:checked\:border-primary-button:checked{border-color:var(--ape-color-primary-button)}.ape\:checked\:bg-primary-button:checked{background-color:var(--ape-color-primary-button)}@media (hover:hover){.ape\:hover\:z-\[1000\]:hover{z-index:1000}.ape\:hover\:cursor-pointer:hover{cursor:pointer}.ape\:hover\:bg-\[rgb\(20_18_29_\/_0\.36\)\]\!:hover{background-color:#14121d5c!important}.ape\:hover\:bg-white3:hover{background-color:var(--ape-color-white3)}.ape\:hover\:bg-white4:hover{background-color:var(--ape-color-white4)}.ape\:hover\:bg-white5:hover{background-color:var(--ape-color-white5)}.ape\:hover\:underline:hover{text-decoration-line:underline}.ape\:hover\:opacity-60:hover{opacity:.6}.ape\:hover\:opacity-80:hover{opacity:.8}.ape\:hover\:brightness-115:hover{--tw-brightness:brightness(115%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.ape\:hover\:\[backdrop-filter\:blur\(2px\)\]:hover{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.ape\:hover\:\[background\:linear-gradient\(90deg\,rgba\(49\,46\,122\,0\.70\)_0\%\,rgba\(92\,79\,174\,0\.70\)_100\%\)\]:hover{background:linear-gradient(90deg,#312e7ab3 0%,#5c4faeb3 100%)}}.ape\:focus\:outline:focus,.ape\:focus\:outline-1:focus{outline-style:var(--tw-outline-style);outline-width:1px}.ape\:focus\:outline-primary-button:focus{outline-color:var(--ape-color-primary-button)}.ape\:focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.ape\:focus\:not-checked\:shadow-none:focus:not(:checked){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:focus\:not-checked\:outline-none:focus:not(:checked){--tw-outline-style:none;outline-style:none}.ape\:active\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}@media (hover:hover){.ape\:enabled\:hover\:border-primary-button-hovered:enabled:hover{border-color:var(--ape-color-primary-button-hovered)}.ape\:enabled\:hover\:bg-primary-button:enabled:hover{background-color:var(--ape-color-primary-button)}.ape\:enabled\:hover\:bg-primary-button-hovered:enabled:hover{background-color:var(--ape-color-primary-button-hovered)}.ape\:enabled\:hover\:text-text:enabled:hover{color:var(--ape-color-text)}.ape\:enabled\:hover\:not-checked\:border-primary-button:enabled:hover:not(:checked){border-color:var(--ape-color-primary-button)}}.ape\:active\:enabled\:scale-90:active:enabled{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.ape\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.ape\:disabled\:border-transparent:disabled{border-color:#0000}.ape\:disabled\:bg-white3:disabled{background-color:var(--ape-color-white3)}.ape\:disabled\:text-primary-button-disable:disabled{color:var(--ape-color-primary-button-disable)}.ape\:disabled\:text-text-disabled-button:disabled{color:var(--ape-color-text-disabled-button)}.ape\:disabled\:opacity-90:disabled{opacity:.9}@media not all and (min-width:1000px){.ape\:max-\[1000px\]\:w-\[49\%\]{width:49%}}@media not all and (min-width:852px){.ape\:max-md\:mb-\[10px\]{margin-bottom:10px}}@media not all and (min-width:768px){.ape\:max-\[768px\]\:w-full{width:100%}}@media not all and (min-width:576px){.ape\:max-sm\:mb-\[10px\]{margin-bottom:10px}.ape\:max-sm\:w-1\/2{width:50%}.ape\:max-sm\:w-\[55\%\]{width:55%}.ape\:max-sm\:text-\[12px\]{font-size:12px}.ape\:max-sm\:text-\[18px\]{font-size:18px}.ape\:max-sm\:leading-\[14px\]{--tw-leading:14px;line-height:14px}.ape\:max-sm\:leading-\[21px\]{--tw-leading:21px;line-height:21px}}@media (min-width:513px){.ape\:min-\[513px\]\:justify-center{justify-content:center}.ape\:min-\[513px\]\:pl-0{padding-left:0}}@media (min-width:576px){.ape\:sm\:top-\[-240px\]{top:-240px}.ape\:sm\:ml-2{margin-left:calc(var(--ape-spacing) * 2)}.ape\:sm\:ml-5{margin-left:calc(var(--ape-spacing) * 5)}.ape\:sm\:max-w-\[190px\]{max-width:190px}.ape\:sm\:justify-start{justify-content:flex-start}.ape\:sm\:text-\[16px\]\!{font-size:16px!important}}@media (min-width:800px){.ape\:min-\[800px\]\:max-h-none{max-height:none}.ape\:min-\[800px\]\:w-\[350px\]{width:350px}.ape\:min-\[800px\]\:flex-col{flex-direction:column}.ape\:min-\[800px\]\:flex-row{flex-direction:row}.ape\:min-\[800px\]\:gap-\[5px\]{gap:5px}.ape\:min-\[800px\]\:p-\[12px\]{padding:12px}.ape\:min-\[800px\]\:p-\[20px\]{padding:20px}.ape\:min-\[800px\]\:pb-\[5px\]{padding-bottom:5px}@media not all and (min-width:1000px){.ape\:min-\[800px\]\:max-\[1000px\]\:bg-bottom{background-position:bottom}}}@media (min-width:852px){.ape\:md\:top-\[20px\]{top:20px}.ape\:md\:top-\[unset\]{top:unset}.ape\:md\:right-\[-13\%\]{right:-13%}.ape\:md\:right-\[-50px\]{right:-50px}.ape\:md\:-bottom-12\.5{bottom:calc(var(--ape-spacing) * -12.5)}.ape\:md\:bottom-\[-15px\]{bottom:-15px}.ape\:md\:bottom-\[unset\]{bottom:unset}.ape\:md\:mt-0{margin-top:0}.ape\:md\:mt-\[5px\]{margin-top:5px}.ape\:md\:mr-\[15px\]{margin-right:15px}.ape\:md\:mb-0{margin-bottom:0}.ape\:md\:ml-\[5px\]{margin-left:5px}.ape\:md\:block{display:block}.ape\:md\:flex{display:flex}.ape\:md\:flex\!{display:flex!important}.ape\:md\:hidden{display:none}.ape\:md\:hidden\!{display:none!important}.ape\:md\:h-\[200px\]{height:200px}.ape\:md\:h-\[225px\]{height:225px}.ape\:md\:max-h-\[350px\]{max-height:350px}.ape\:md\:min-h-\[430px\]{min-height:430px}.ape\:md\:w-1\/2{width:50%}.ape\:md\:w-87\.5{width:calc(var(--ape-spacing) * 87.5)}.ape\:md\:w-175{width:calc(var(--ape-spacing) * 175)}.ape\:md\:w-\[35\%\]{width:35%}.ape\:md\:w-\[150px\]{width:150px}.ape\:md\:w-\[180px\]{width:180px}.ape\:md\:w-\[200px\]{width:200px}.ape\:md\:w-\[225px\]{width:225px}.ape\:md\:w-\[300px\]{width:300px}.ape\:md\:w-\[calc\(100\%-300px\)\]{width:calc(100% - 300px)}.ape\:md\:w-\[unset\]{width:unset}.ape\:md\:w-full{width:100%}.ape\:md\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:md\:translate-x-0{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:md\:-translate-y-3\/4{--tw-translate-y:calc(calc(3 / 4 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:md\:scale-\[0\.4\]{scale:.4}.ape\:md\:flex-col{flex-direction:column}.ape\:md\:flex-row,.ape\:min-md\:flex-row{flex-direction:row}.ape\:md\:justify-end{justify-content:flex-end}.ape\:md\:gap-\[15px\]{gap:15px}.ape\:min-md\:gap-\[5px\]{gap:5px}.ape\:md\:rounded-\[20px\]{border-radius:20px}.ape\:md\:rounded-normal{border-radius:var(--ape-radius-normal)}.ape\:md\:p-3{padding:calc(var(--ape-spacing) * 3)}.ape\:md\:p-5{padding:calc(var(--ape-spacing) * 5)}.ape\:md\:p-\[4px_10px\]{padding:4px 10px}.ape\:md\:p-\[20px\]{padding:20px}.ape\:md\:pr-\[20px\]{padding-right:20px}.ape\:md\:pb-1\.25{padding-bottom:calc(var(--ape-spacing) * 1.25)}.ape\:min-md\:pb-\[5px\]{padding-bottom:5px}.ape\:md\:pl-\[20px\]{padding-left:20px}.ape\:md\:text-\[12px\]\!{font-size:12px!important}.ape\:md\:text-\[14px\]{font-size:14px}.ape\:md\:text-\[14px\]\!{font-size:14px!important}.ape\:md\:text-\[16px\]{font-size:16px}.ape\:md\:text-\[18px\]{font-size:18px}.ape\:md\:text-\[20px\]{font-size:20px}.ape\:md\:text-\[24px\]{font-size:24px}.ape\:min-md\:text-\[16px\]{font-size:16px}.ape\:md\:leading-\[21px\]\!{--tw-leading:21px!important;line-height:21px!important}.ape\:md\:font-bold{--tw-font-weight:var(--ape-font-weight-bold);font-weight:var(--ape-font-weight-bold)}@media (hover:hover){.ape\:md\:hover\:z-\[1000\]\!:hover{z-index:1000!important}}}@media (min-width:968px){.ape\:lg\:mt-0{margin-top:0}.ape\:lg\:mr-\[10px\]{margin-right:10px}.ape\:lg\:mr-\[15px\]{margin-right:15px}.ape\:lg\:mb-0{margin-bottom:0}.ape\:lg\:ml-0{margin-left:0}.ape\:lg\:ml-\[10px\]{margin-left:10px}.ape\:lg\:flex{display:flex}.ape\:lg\:inline{display:inline}.ape\:lg\:h-\[40px\]{height:40px}.ape\:lg\:w-1\/2{width:50%}.ape\:lg\:w-\[30\%\]{width:30%}.ape\:lg\:w-\[35\%\]{width:35%}.ape\:lg\:w-\[45\%\]{width:45%}.ape\:lg\:w-\[65\%\]{width:65%}.ape\:lg\:w-\[unset\]{width:unset}.ape\:lg\:w-auto{width:auto}.ape\:lg\:max-w-\[calc\(100\%-35px\)\]{max-width:calc(100% - 35px)}.ape\:lg\:min-w-75\!{min-width:calc(var(--ape-spacing) * 75)!important}.ape\:lg\:min-w-100{min-width:calc(var(--ape-spacing) * 100)}.ape\:lg\:flex-row{flex-direction:row}.ape\:lg\:items-center{align-items:center}.ape\:lg\:gap-\[10px\]{gap:10px}.ape\:lg\:gap-\[15px\]{gap:15px}.ape\:lg\:overflow-visible{overflow:visible}.ape\:lg\:rounded-normal{border-radius:var(--ape-radius-normal)}.ape\:lg\:bg-white4{background-color:var(--ape-color-white4)}.ape\:lg\:bg-\[image\:var\(--banner-bg-desktop\)\]{background-image:var(--banner-bg-desktop)}.ape\:lg\:px-\[10px\]{padding-inline:10px}.ape\:lg\:pr-\[20px\]{padding-right:20px}.ape\:lg\:pb-\[20px\]{padding-bottom:20px}.ape\:lg\:text-\[16px\]\!{font-size:16px!important}.ape\:lg\:leading-6\!{--tw-leading:calc(var(--ape-spacing) * 6)!important;line-height:calc(var(--ape-spacing) * 6)!important}}@media (min-width:1000px){.ape\:min-\[1000px\]\:absolute{position:absolute}.ape\:min-\[1000px\]\:left-\[10px\]{left:10px}.ape\:min-\[1000px\]\:mt-0{margin-top:0}.ape\:min-\[1000px\]\:flex{display:flex}.ape\:min-\[1000px\]\:hidden{display:none}.ape\:min-\[1000px\]\:h-\[70px\]{height:70px}.ape\:min-\[1000px\]\:w-\[30\%\]{width:30%}.ape\:min-\[1000px\]\:w-\[70\%\]{width:70%}.ape\:min-\[1000px\]\:w-\[130px\]{width:130px}.ape\:min-\[1000px\]\:w-\[210px\]{width:210px}.ape\:min-\[1000px\]\:w-\[300px\]{width:300px}.ape\:min-\[1000px\]\:min-w-\[300px\]{min-width:300px}.ape\:min-\[1000px\]\:flex-row{flex-direction:row}.ape\:min-\[1000px\]\:justify-between{justify-content:space-between}.ape\:min-\[1000px\]\:justify-center{justify-content:center}.ape\:min-\[1000px\]\:justify-end{justify-content:flex-end}.ape\:min-\[1000px\]\:p-0{padding:0}.ape\:min-\[1000px\]\:p-\[20px_0_10px_0\]{padding:20px 0 10px}.ape\:min-\[1000px\]\:pr-\[20px\]{padding-right:20px}}@media (min-width:1080px){.ape\:xl\:flex{display:flex}.ape\:xl\:w-\[30\%\]{width:30%}.ape\:xl\:w-\[70\%\]{width:70%}.ape\:xl\:w-\[100px\]{width:100px}.ape\:xl\:w-\[115px\]{width:115px}.ape\:xl\:w-\[135px\]{width:135px}.ape\:xl\:min-w-\[400px\]{min-width:400px}.ape\:xl\:flex-row{flex-direction:row}.ape\:xl\:justify-between{justify-content:space-between}.ape\:xl\:gap-\[30px\]{gap:30px}.ape\:xl\:p-\[20px_0_10px_0\]{padding:20px 0 10px}}@media (min-width:1200px){.ape\:xxl\:flex{display:flex}}.ape\:\[\&_\*\]\:text-\[14px\]\! *{font-size:14px!important}.ape\:\[\&_\*\]\:text-\[18px\]\! *{font-size:18px!important}.ape\:\[\&_\*\]\:text-\[24px\]\! *{font-size:24px!important}.ape\:\[\&_button\]\:ml-auto button,.ape\:\[\&_svg\]\:ml-auto svg{margin-left:auto}.ape\:\[\&_svg\]\:w-\[11px\] svg{width:11px}.ape\:\[\&_svg\]\:cursor-pointer svg{cursor:pointer}.ape\:\[\&_svg\]\:bg-transparent svg{background-color:#0000}.ape\:\[\&_svg\]\:fill-text svg{fill:var(--ape-color-text)}.ape\:\[\&\:\:-webkit-scrollbar\]\:h-\[5px\]::-webkit-scrollbar{height:5px}.ape\:\[\&\>\*\]\:h-\[31px\]\!>*{height:31px!important}.ape\:\[\&\>\*\]\:w-\[210px\]>*{width:210px}.ape\:\[\&\>\*\]\:text-\[14px\]\!>*{font-size:14px!important}@media (min-width:1080px){.ape\:xl\:\[\&\>\*\]\:w-\[100px\]>*{width:100px}}.ape\:\[\&\>div\]\:pt-0\!>div{padding-top:0!important}.ape\:\[\&\>div\:last-child\]\:mr-0>div:last-child{margin-right:0}.ape\:\[\&\>div\>div\]\:bg-white2>div>div{background-color:var(--ape-color-white2)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
@@ -1,5 +1,6 @@
1
- import { Aptos } from '@aptos-labs/ts-sdk';
1
+ import { Aptos, Network } from '@aptos-labs/ts-sdk';
2
2
  import type { AptosBillInfo, AptosMarketInfoTuple, AptosVestingProgressTuple } from '../types/aptosBonds';
3
+ export declare const APTOS_NETWORK: Network;
3
4
  export declare const getAptosClient: () => Aptos;
4
5
  export declare const safeExtractAddress: (input: unknown) => string | undefined;
5
6
  interface AptosTxnWithEvents {
@@ -1,6 +1,7 @@
1
- import { AptosConfig, Aptos } from '@aptos-labs/ts-sdk';
2
- import { APTOS_VIEW_USER_BILLS, APTOS_NETWORK, APTOS_FULLNODE_URL, APTOS_VIEW_BOND_MARKET_BY_ID, APTOS_VIEW_NFT_ADDRESS, APTOS_VIEW_BILL_INFO, APTOS_VIEW_VESTING_PROGRESS, getRandomAptosApiKey, APTOS_VIEW_MARKET_INFO } from '../constants/aptosConstants.js';
1
+ import { Network, AptosConfig, Aptos } from '@aptos-labs/ts-sdk';
2
+ import { IS_APTOS_MAINNET, APTOS_VIEW_USER_BILLS, APTOS_FULLNODE_URL, APTOS_VIEW_BOND_MARKET_BY_ID, APTOS_VIEW_NFT_ADDRESS, APTOS_VIEW_BILL_INFO, APTOS_VIEW_VESTING_PROGRESS, getRandomAptosApiKey, APTOS_VIEW_MARKET_INFO } from '../constants/aptosConstants.js';
3
3
 
4
+ const APTOS_NETWORK = IS_APTOS_MAINNET ? Network.MAINNET : Network.TESTNET;
4
5
  // ---------------------------------------------------------------------------
5
6
  // Aptos client — lazy singleton
6
7
  // ---------------------------------------------------------------------------
@@ -226,5 +227,5 @@ const readNftAddressByBillId = async (billId) => {
226
227
  return String(result[0] ?? '');
227
228
  };
228
229
 
229
- export { extractBillMinted, extractDepositEvent, getAptosClient, readAptosBillInfo, readAptosMarketInfo, readBondMarketByBillId, readNftAddressByBillId, readUserBillIds, readVestingProgress, safeExtractAddress };
230
+ export { APTOS_NETWORK, extractBillMinted, extractDepositEvent, getAptosClient, readAptosBillInfo, readAptosMarketInfo, readBondMarketByBillId, readNftAddressByBillId, readUserBillIds, readVestingProgress, safeExtractAddress };
230
231
  //# sourceMappingURL=aptosHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aptosHelpers.js","sources":["../../src/utils/aptosHelpers.ts"],"sourcesContent":["import { Aptos, AptosConfig } from '@aptos-labs/ts-sdk'\nimport {\n APTOS_FULLNODE_URL,\n APTOS_NETWORK,\n APTOS_VIEW_BILL_INFO,\n APTOS_VIEW_BOND_MARKET_BY_ID,\n APTOS_VIEW_MARKET_INFO,\n APTOS_VIEW_NFT_ADDRESS,\n APTOS_VIEW_USER_BILLS,\n APTOS_VIEW_VESTING_PROGRESS,\n getRandomAptosApiKey,\n} from '../constants/aptosConstants'\nimport type { AptosBillInfo, AptosMarketInfoTuple, AptosVestingProgressTuple } from '../types/aptosBonds'\n\n// ---------------------------------------------------------------------------\n// Aptos client — lazy singleton\n// ---------------------------------------------------------------------------\n// We keep one client per (network, api key) pair. The API key is picked with\n// `getRandomAptosApiKey()` on first call, so different sessions hit a\n// different key (very simple load balancing). If the pool is empty we fall\n// back to unauthenticated requests.\nlet _aptosClient: Aptos | undefined\n\nexport const getAptosClient = (): Aptos => {\n if (_aptosClient) return _aptosClient\n const apiKey = getRandomAptosApiKey()\n // The Aptos ts-sdk exposes `API_KEY` directly on `clientConfig`; it adds\n // the `Authorization: Bearer <key>` header internally. This is the\n // idiomatic way to authenticate — no manual header wiring needed.\n const config = new AptosConfig({\n network: APTOS_NETWORK,\n ...(apiKey && { clientConfig: { API_KEY: apiKey } }),\n })\n _aptosClient = new Aptos(config)\n return _aptosClient\n}\n\n// ---------------------------------------------------------------------------\n// Address normalisation\n// ---------------------------------------------------------------------------\n// Aptos wallet adapters can surface account addresses in several shapes:\n// plain string, `{ data: Uint8Array }`, `Uint8Array`, or an `AccountAddress`\n// instance. This helper returns a canonical `0x`-prefixed hex string, or\n// `undefined` if the input cannot be decoded. We keep the interface loose so\n// callers can pass whatever the SDK hands them.\nexport const safeExtractAddress = (input: unknown): string | undefined => {\n if (input == null) return undefined\n\n // Already a string\n if (typeof input === 'string') {\n return input.startsWith('0x') ? input : `0x${input}`\n }\n\n // AccountAddress instance (has `toString()` that returns `0x...`)\n if (typeof input === 'object' && typeof (input as { toString?: () => string }).toString === 'function') {\n const asObject = input as { data?: Uint8Array | number[]; toString: () => string }\n // Prefer `.data` if it looks like a byte array — `.toString()` on\n // AccountAddress already returns the canonical hex, but some wallets\n // return `{ data: Uint8Array }` without the method.\n if (asObject.data instanceof Uint8Array) {\n return bytesToHex(asObject.data)\n }\n if (Array.isArray(asObject.data)) {\n return bytesToHex(new Uint8Array(asObject.data))\n }\n const stringified = asObject.toString()\n if (stringified.startsWith('0x')) return stringified\n }\n\n // Raw Uint8Array\n if (input instanceof Uint8Array) {\n return bytesToHex(input)\n }\n\n // Raw number[]\n if (Array.isArray(input)) {\n return bytesToHex(new Uint8Array(input))\n }\n\n return undefined\n}\n\nconst bytesToHex = (bytes: Uint8Array): string => {\n let out = '0x'\n for (let i = 0; i < bytes.length; i++) {\n out += bytes[i].toString(16).padStart(2, '0')\n }\n return out\n}\n\n// ---------------------------------------------------------------------------\n// Unit conversion\n// ---------------------------------------------------------------------------\n// User inputs live in \"whole tokens\" (e.g. \"1.5 USDC\"). The Aptos ts-sdk\n// serialises numeric function arguments from strings, so we convert to\n// atomic units and return a stringified BigInt.\n// export const toAtomicUnits = (amount: string | number, decimals: number): string => {\n// if (amount === '' || amount == null) return '0'\n// const bn = new BigNumber(amount).times(new BigNumber(10).pow(decimals))\n// // Floor so we never over-spend what the user typed.\n// return bn.integerValue(BigNumber.ROUND_FLOOR).toFixed(0)\n// }\n\n// ---------------------------------------------------------------------------\n// Payload builders\n// ---------------------------------------------------------------------------\n// These return the `InputEntryFunctionData` shape consumed by\n// `wallet.signAndSubmitTransaction({ sender, data: ... })`. Keeping them in\n// one place means the buy/claim components do not have to repeat the\n// function-name and argument order.\n\n// export const buildDepositPayload = (args: AptosDepositPayload) => ({\n// function: APTOS_DEPOSIT_FUNCTION,\n// typeArguments: [] as string[],\n// functionArguments: [args.market, args.amount, args.max_price, args.depositor] as (string | number)[],\n// })\n//\n// export const buildClaimPayload = (args: AptosClaimPayload) => ({\n// function: APTOS_CLAIM_FUNCTION,\n// typeArguments: [] as string[],\n// // `apebond::bond::claim(market, bill_id: u64)` — the contract takes the\n// // scalar bill_id, NOT the object address.\n// functionArguments: [args.market, args.bill_id] as (string | number)[],\n// })\n\n// ---------------------------------------------------------------------------\n// Event extractors\n// ---------------------------------------------------------------------------\n// Parse events out of a `waitForTransaction` response. The event `type`\n// format is `${module}::${EventStruct}`. We match by `.endsWith('::Foo')` so\n// we do not have to hard-code the full module path (which contains the\n// contract address).\n\ninterface AptosTxnWithEvents {\n events?: Array<{ type: string; data: Record<string, unknown> }>\n}\n\nconst extractEventData = <T = Record<string, unknown>>(txn: AptosTxnWithEvents, eventSuffix: string): T | undefined => {\n const event = txn?.events?.find((e) => e.type.includes(eventSuffix))\n return event?.data as T | undefined\n}\n\n/**\n * `bond::DepositEvent` — emitted by the deposit entry function.\n * Contains bill_id, bill_address, deposit_amount, payout_amount, price.\n */\nexport const extractDepositEvent = (\n txn: AptosTxnWithEvents,\n):\n | {\n bill_id: string\n bill_address: string\n market: string\n deposit_amount: string\n payout_amount: string\n price: string\n depositor: string\n recipient: string\n }\n | undefined => extractEventData(txn, '::DepositEvent')\n\n/**\n * Extract bill_id from transaction events. Checks both `BillMinted` (from bond_nft)\n * and `DepositEvent` (from bond) since the contract emits both.\n */\nexport const extractBillMinted = (txn: AptosTxnWithEvents): { bill_id: string; owner: string } | undefined => {\n // Try BillMinted event first (emitted by bond_nft module)\n const billMinted = extractEventData<{ bill_id: string; owner: string }>(txn, '::BillMinted')\n if (billMinted) return billMinted\n // Fall back to DepositEvent (emitted by bond module)\n const deposit = extractDepositEvent(txn)\n if (!deposit) return undefined\n return { bill_id: deposit.bill_id, owner: deposit.depositor }\n}\n\n// ---------------------------------------------------------------------------\n// Fetch helper — GraphQL to the Aptos indexer\n// ---------------------------------------------------------------------------\n// Uses the same API key that is configured on the Aptos client. Everything\n// else on the HTTP layer goes through the Aptos ts-sdk, but the indexer\n// needs a raw `fetch` call because GraphQL is not part of the SDK surface.\n// export const aptosIndexerFetch = async <T = unknown>(\n// url: string,\n// query: string,\n// variables?: Record<string, unknown>,\n// ): Promise<T> => {\n// const apiKey = getRandomAptosApiKey()\n// const response = await fetch(url, {\n// method: 'POST',\n// headers: {\n// 'Content-Type': 'application/json',\n// ...(apiKey && { Authorization: `Bearer ${apiKey}` }),\n// },\n// body: JSON.stringify({ query, variables }),\n// })\n// if (!response.ok) {\n// throw new Error(`Aptos indexer request failed: ${response.status}`)\n// }\n// const json = (await response.json()) as { data: T; errors?: Array<{ message: string }> }\n// if (json.errors?.length) {\n// throw new Error(`Aptos indexer returned errors: ${json.errors.map((e) => e.message).join(', ')}`)\n// }\n// return json.data\n// }\n\n// ---------------------------------------------------------------------------\n// View function readers (PLAN_001 Etapa 5b — real read skeleton)\n// ---------------------------------------------------------------------------\n// Thin wrappers around `aptos.view(...)` for the specific view functions the\n// SDK needs. Every reader throws on RPC / contract error — callers should\n// wrap in try/catch so a missing deployment degrades gracefully rather than\n// crashing the UI.\n//\n// Shapes are verified against apebond-move-playground pages. See the matching\n// `AptosMarketInfoTuple` / `AptosBillInfo` / `AptosVestingProgressTuple`\n// types for documentation on each field.\n\n/**\n * `bond::market_info(market)` — returns the 27-element market info tuple.\n */\nexport const readAptosMarketInfo = async (marketAddress: string): Promise<AptosMarketInfoTuple> => {\n const aptos = getAptosClient()\n const result = await aptos.view({\n payload: {\n function: APTOS_VIEW_MARKET_INFO,\n functionArguments: [marketAddress],\n },\n })\n return result as unknown as AptosMarketInfoTuple\n}\n\n/**\n * `bond::bill_info(market, bill_id)` — returns the Bill struct for a\n * specific bill. The contract takes `bill_id: u64` (NOT the object address).\n * Uses REST directly to avoid SDK remoteAbi serialisation bug with u64 args.\n */\nexport const readAptosBillInfo = async (marketAddress: string, billId: string): Promise<AptosBillInfo> => {\n const result = await viewViaRest(APTOS_VIEW_BILL_INFO, [marketAddress, billId])\n return result[0] as unknown as AptosBillInfo\n}\n\n/**\n * `bond_nft::user_bills(user)` — returns all bill_ids owned by the user\n * across every deployed market. The view returns `[bill_ids]` (the inner\n * array is at index 0), so we unwrap it here.\n */\nexport const readUserBillIds = async (user: string): Promise<string[]> => {\n const aptos = getAptosClient()\n const result = await aptos.view({\n payload: {\n function: APTOS_VIEW_USER_BILLS,\n functionArguments: [user],\n },\n })\n const ids = (result[0] ?? []) as unknown as Array<string | number>\n return ids.map((id) => String(id))\n}\n\n/**\n * `bond::vesting_progress(market, bill_id)` — returns `[vested_amount, claimable_amount]`.\n * Note: this is in `bond` module (not `bond_nft`), and takes the market as first argument.\n * Uses REST directly to avoid SDK remoteAbi serialisation bug with u64 args.\n */\nexport const readVestingProgress = async (\n marketAddress: string,\n billId: string,\n): Promise<AptosVestingProgressTuple> => {\n const result = await viewViaRest(APTOS_VIEW_VESTING_PROGRESS, [marketAddress, billId])\n return [String(result[0] ?? '0'), String(result[1] ?? '0')] as const\n}\n\n// ---------------------------------------------------------------------------\n// REST-based view call — bypasses the SDK's remoteAbi serialisation which\n// has a bug in v6.x where u64 arguments to functions returning `address` get\n// mis-serialised. The REST endpoint handles string arguments natively.\n// ---------------------------------------------------------------------------\nconst viewViaRest = async (fn: string, args: string[], typeArgs: string[] = []): Promise<unknown[]> => {\n const apiKey = getRandomAptosApiKey()\n const res = await fetch(`${APTOS_FULLNODE_URL}/view`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(apiKey && { Authorization: `Bearer ${apiKey}` }),\n },\n body: JSON.stringify({\n function: fn,\n type_arguments: typeArgs,\n arguments: args,\n }),\n })\n if (!res.ok) {\n const text = await res.text()\n throw new Error(`View call ${fn} failed: ${res.status} ${text}`)\n }\n return (await res.json()) as unknown[]\n}\n\n/**\n * `bond_nft::bond_market_by_id(bill_id)` — which market owns this bill.\n * Uses REST directly — SDK's aptos.view() mis-serialises u64→address functions.\n */\nexport const readBondMarketByBillId = async (billId: string): Promise<string> => {\n const result = await viewViaRest(APTOS_VIEW_BOND_MARKET_BY_ID, [billId])\n return String(result[0] ?? '')\n}\n\n/**\n * `bond_nft::nft_address(bill_id)` — resolve the scalar bill_id to the\n * on-chain NFT object address (aka `bill_addr`). Needed to then call\n * `bond::bill_info(market, bill_addr)` or `bond::claim(market, bill_addr)`.\n * Uses REST directly — SDK's aptos.view() mis-serialises u64→address functions.\n */\nexport const readNftAddressByBillId = async (billId: string): Promise<string> => {\n const result = await viewViaRest(APTOS_VIEW_NFT_ADDRESS, [billId])\n return String(result[0] ?? '')\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aptosHelpers.js","sources":["../../src/utils/aptosHelpers.ts"],"sourcesContent":["import { Aptos, AptosConfig, Network } from '@aptos-labs/ts-sdk'\nimport {\n APTOS_FULLNODE_URL,\n APTOS_VIEW_BILL_INFO,\n APTOS_VIEW_BOND_MARKET_BY_ID,\n APTOS_VIEW_MARKET_INFO,\n APTOS_VIEW_NFT_ADDRESS,\n APTOS_VIEW_USER_BILLS,\n APTOS_VIEW_VESTING_PROGRESS,\n getRandomAptosApiKey,\n IS_APTOS_MAINNET,\n} from '../constants/aptosConstants'\nimport type { AptosBillInfo, AptosMarketInfoTuple, AptosVestingProgressTuple } from '../types/aptosBonds'\n\nexport const APTOS_NETWORK: Network = IS_APTOS_MAINNET ? Network.MAINNET : Network.TESTNET\n\n// ---------------------------------------------------------------------------\n// Aptos client — lazy singleton\n// ---------------------------------------------------------------------------\n// We keep one client per (network, api key) pair. The API key is picked with\n// `getRandomAptosApiKey()` on first call, so different sessions hit a\n// different key (very simple load balancing). If the pool is empty we fall\n// back to unauthenticated requests.\nlet _aptosClient: Aptos | undefined\n\nexport const getAptosClient = (): Aptos => {\n if (_aptosClient) return _aptosClient\n const apiKey = getRandomAptosApiKey()\n // The Aptos ts-sdk exposes `API_KEY` directly on `clientConfig`; it adds\n // the `Authorization: Bearer <key>` header internally. This is the\n // idiomatic way to authenticate — no manual header wiring needed.\n const config = new AptosConfig({\n network: APTOS_NETWORK,\n ...(apiKey && { clientConfig: { API_KEY: apiKey } }),\n })\n _aptosClient = new Aptos(config)\n return _aptosClient\n}\n\n// ---------------------------------------------------------------------------\n// Address normalisation\n// ---------------------------------------------------------------------------\n// Aptos wallet adapters can surface account addresses in several shapes:\n// plain string, `{ data: Uint8Array }`, `Uint8Array`, or an `AccountAddress`\n// instance. This helper returns a canonical `0x`-prefixed hex string, or\n// `undefined` if the input cannot be decoded. We keep the interface loose so\n// callers can pass whatever the SDK hands them.\nexport const safeExtractAddress = (input: unknown): string | undefined => {\n if (input == null) return undefined\n\n // Already a string\n if (typeof input === 'string') {\n return input.startsWith('0x') ? input : `0x${input}`\n }\n\n // AccountAddress instance (has `toString()` that returns `0x...`)\n if (typeof input === 'object' && typeof (input as { toString?: () => string }).toString === 'function') {\n const asObject = input as { data?: Uint8Array | number[]; toString: () => string }\n // Prefer `.data` if it looks like a byte array — `.toString()` on\n // AccountAddress already returns the canonical hex, but some wallets\n // return `{ data: Uint8Array }` without the method.\n if (asObject.data instanceof Uint8Array) {\n return bytesToHex(asObject.data)\n }\n if (Array.isArray(asObject.data)) {\n return bytesToHex(new Uint8Array(asObject.data))\n }\n const stringified = asObject.toString()\n if (stringified.startsWith('0x')) return stringified\n }\n\n // Raw Uint8Array\n if (input instanceof Uint8Array) {\n return bytesToHex(input)\n }\n\n // Raw number[]\n if (Array.isArray(input)) {\n return bytesToHex(new Uint8Array(input))\n }\n\n return undefined\n}\n\nconst bytesToHex = (bytes: Uint8Array): string => {\n let out = '0x'\n for (let i = 0; i < bytes.length; i++) {\n out += bytes[i].toString(16).padStart(2, '0')\n }\n return out\n}\n\n// ---------------------------------------------------------------------------\n// Unit conversion\n// ---------------------------------------------------------------------------\n// User inputs live in \"whole tokens\" (e.g. \"1.5 USDC\"). The Aptos ts-sdk\n// serialises numeric function arguments from strings, so we convert to\n// atomic units and return a stringified BigInt.\n// export const toAtomicUnits = (amount: string | number, decimals: number): string => {\n// if (amount === '' || amount == null) return '0'\n// const bn = new BigNumber(amount).times(new BigNumber(10).pow(decimals))\n// // Floor so we never over-spend what the user typed.\n// return bn.integerValue(BigNumber.ROUND_FLOOR).toFixed(0)\n// }\n\n// ---------------------------------------------------------------------------\n// Payload builders\n// ---------------------------------------------------------------------------\n// These return the `InputEntryFunctionData` shape consumed by\n// `wallet.signAndSubmitTransaction({ sender, data: ... })`. Keeping them in\n// one place means the buy/claim components do not have to repeat the\n// function-name and argument order.\n\n// export const buildDepositPayload = (args: AptosDepositPayload) => ({\n// function: APTOS_DEPOSIT_FUNCTION,\n// typeArguments: [] as string[],\n// functionArguments: [args.market, args.amount, args.max_price, args.depositor] as (string | number)[],\n// })\n//\n// export const buildClaimPayload = (args: AptosClaimPayload) => ({\n// function: APTOS_CLAIM_FUNCTION,\n// typeArguments: [] as string[],\n// // `apebond::bond::claim(market, bill_id: u64)` — the contract takes the\n// // scalar bill_id, NOT the object address.\n// functionArguments: [args.market, args.bill_id] as (string | number)[],\n// })\n\n// ---------------------------------------------------------------------------\n// Event extractors\n// ---------------------------------------------------------------------------\n// Parse events out of a `waitForTransaction` response. The event `type`\n// format is `${module}::${EventStruct}`. We match by `.endsWith('::Foo')` so\n// we do not have to hard-code the full module path (which contains the\n// contract address).\n\ninterface AptosTxnWithEvents {\n events?: Array<{ type: string; data: Record<string, unknown> }>\n}\n\nconst extractEventData = <T = Record<string, unknown>>(txn: AptosTxnWithEvents, eventSuffix: string): T | undefined => {\n const event = txn?.events?.find((e) => e.type.includes(eventSuffix))\n return event?.data as T | undefined\n}\n\n/**\n * `bond::DepositEvent` — emitted by the deposit entry function.\n * Contains bill_id, bill_address, deposit_amount, payout_amount, price.\n */\nexport const extractDepositEvent = (\n txn: AptosTxnWithEvents,\n):\n | {\n bill_id: string\n bill_address: string\n market: string\n deposit_amount: string\n payout_amount: string\n price: string\n depositor: string\n recipient: string\n }\n | undefined => extractEventData(txn, '::DepositEvent')\n\n/**\n * Extract bill_id from transaction events. Checks both `BillMinted` (from bond_nft)\n * and `DepositEvent` (from bond) since the contract emits both.\n */\nexport const extractBillMinted = (txn: AptosTxnWithEvents): { bill_id: string; owner: string } | undefined => {\n // Try BillMinted event first (emitted by bond_nft module)\n const billMinted = extractEventData<{ bill_id: string; owner: string }>(txn, '::BillMinted')\n if (billMinted) return billMinted\n // Fall back to DepositEvent (emitted by bond module)\n const deposit = extractDepositEvent(txn)\n if (!deposit) return undefined\n return { bill_id: deposit.bill_id, owner: deposit.depositor }\n}\n\n// ---------------------------------------------------------------------------\n// Fetch helper — GraphQL to the Aptos indexer\n// ---------------------------------------------------------------------------\n// Uses the same API key that is configured on the Aptos client. Everything\n// else on the HTTP layer goes through the Aptos ts-sdk, but the indexer\n// needs a raw `fetch` call because GraphQL is not part of the SDK surface.\n// export const aptosIndexerFetch = async <T = unknown>(\n// url: string,\n// query: string,\n// variables?: Record<string, unknown>,\n// ): Promise<T> => {\n// const apiKey = getRandomAptosApiKey()\n// const response = await fetch(url, {\n// method: 'POST',\n// headers: {\n// 'Content-Type': 'application/json',\n// ...(apiKey && { Authorization: `Bearer ${apiKey}` }),\n// },\n// body: JSON.stringify({ query, variables }),\n// })\n// if (!response.ok) {\n// throw new Error(`Aptos indexer request failed: ${response.status}`)\n// }\n// const json = (await response.json()) as { data: T; errors?: Array<{ message: string }> }\n// if (json.errors?.length) {\n// throw new Error(`Aptos indexer returned errors: ${json.errors.map((e) => e.message).join(', ')}`)\n// }\n// return json.data\n// }\n\n// ---------------------------------------------------------------------------\n// View function readers (PLAN_001 Etapa 5b — real read skeleton)\n// ---------------------------------------------------------------------------\n// Thin wrappers around `aptos.view(...)` for the specific view functions the\n// SDK needs. Every reader throws on RPC / contract error — callers should\n// wrap in try/catch so a missing deployment degrades gracefully rather than\n// crashing the UI.\n//\n// Shapes are verified against apebond-move-playground pages. See the matching\n// `AptosMarketInfoTuple` / `AptosBillInfo` / `AptosVestingProgressTuple`\n// types for documentation on each field.\n\n/**\n * `bond::market_info(market)` — returns the 27-element market info tuple.\n */\nexport const readAptosMarketInfo = async (marketAddress: string): Promise<AptosMarketInfoTuple> => {\n const aptos = getAptosClient()\n const result = await aptos.view({\n payload: {\n function: APTOS_VIEW_MARKET_INFO,\n functionArguments: [marketAddress],\n },\n })\n return result as unknown as AptosMarketInfoTuple\n}\n\n/**\n * `bond::bill_info(market, bill_id)` — returns the Bill struct for a\n * specific bill. The contract takes `bill_id: u64` (NOT the object address).\n * Uses REST directly to avoid SDK remoteAbi serialisation bug with u64 args.\n */\nexport const readAptosBillInfo = async (marketAddress: string, billId: string): Promise<AptosBillInfo> => {\n const result = await viewViaRest(APTOS_VIEW_BILL_INFO, [marketAddress, billId])\n return result[0] as unknown as AptosBillInfo\n}\n\n/**\n * `bond_nft::user_bills(user)` — returns all bill_ids owned by the user\n * across every deployed market. The view returns `[bill_ids]` (the inner\n * array is at index 0), so we unwrap it here.\n */\nexport const readUserBillIds = async (user: string): Promise<string[]> => {\n const aptos = getAptosClient()\n const result = await aptos.view({\n payload: {\n function: APTOS_VIEW_USER_BILLS,\n functionArguments: [user],\n },\n })\n const ids = (result[0] ?? []) as unknown as Array<string | number>\n return ids.map((id) => String(id))\n}\n\n/**\n * `bond::vesting_progress(market, bill_id)` — returns `[vested_amount, claimable_amount]`.\n * Note: this is in `bond` module (not `bond_nft`), and takes the market as first argument.\n * Uses REST directly to avoid SDK remoteAbi serialisation bug with u64 args.\n */\nexport const readVestingProgress = async (\n marketAddress: string,\n billId: string,\n): Promise<AptosVestingProgressTuple> => {\n const result = await viewViaRest(APTOS_VIEW_VESTING_PROGRESS, [marketAddress, billId])\n return [String(result[0] ?? '0'), String(result[1] ?? '0')] as const\n}\n\n// ---------------------------------------------------------------------------\n// REST-based view call — bypasses the SDK's remoteAbi serialisation which\n// has a bug in v6.x where u64 arguments to functions returning `address` get\n// mis-serialised. The REST endpoint handles string arguments natively.\n// ---------------------------------------------------------------------------\nconst viewViaRest = async (fn: string, args: string[], typeArgs: string[] = []): Promise<unknown[]> => {\n const apiKey = getRandomAptosApiKey()\n const res = await fetch(`${APTOS_FULLNODE_URL}/view`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(apiKey && { Authorization: `Bearer ${apiKey}` }),\n },\n body: JSON.stringify({\n function: fn,\n type_arguments: typeArgs,\n arguments: args,\n }),\n })\n if (!res.ok) {\n const text = await res.text()\n throw new Error(`View call ${fn} failed: ${res.status} ${text}`)\n }\n return (await res.json()) as unknown[]\n}\n\n/**\n * `bond_nft::bond_market_by_id(bill_id)` — which market owns this bill.\n * Uses REST directly — SDK's aptos.view() mis-serialises u64→address functions.\n */\nexport const readBondMarketByBillId = async (billId: string): Promise<string> => {\n const result = await viewViaRest(APTOS_VIEW_BOND_MARKET_BY_ID, [billId])\n return String(result[0] ?? '')\n}\n\n/**\n * `bond_nft::nft_address(bill_id)` — resolve the scalar bill_id to the\n * on-chain NFT object address (aka `bill_addr`). Needed to then call\n * `bond::bill_info(market, bill_addr)` or `bond::claim(market, bill_addr)`.\n * Uses REST directly — SDK's aptos.view() mis-serialises u64→address functions.\n */\nexport const readNftAddressByBillId = async (billId: string): Promise<string> => {\n const result = await viewViaRest(APTOS_VIEW_NFT_ADDRESS, [billId])\n return String(result[0] ?? '')\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Ape Bond SDK",
4
4
  "author": "Ape Bond",
5
5
  "license": "MIT",
6
- "version": "6.2.24",
6
+ "version": "6.2.25",
7
7
  "module": "dist/main.js",
8
8
  "type": "module",
9
9
  "types": "dist/main.d.ts",
@@ -101,11 +101,11 @@
101
101
  },
102
102
  "peerDependencies": {
103
103
  "@aptos-labs/ts-sdk": "^6.3.1",
104
- "@aptos-labs/wallet-adapter-ant-design": "^5.3.19",
105
104
  "@aptos-labs/wallet-adapter-react": "^8.3.3",
106
105
  "@bigmi/react": "^0.6.5",
107
106
  "@lifi/widget": ">=3",
108
107
  "@mysten/dapp-kit": "^0.19.11",
108
+ "@mysten/sui": "^1.45.2",
109
109
  "@solana/kit": "2.3.0",
110
110
  "@solana/spl-token": "^0.4.14",
111
111
  "@solana/wallet-adapter-react": "^0.15.39",
@@ -113,6 +113,7 @@
113
113
  "@tanstack/react-query": "^5.90.2",
114
114
  "react": ">=17",
115
115
  "react-dom": ">=17",
116
+ "viem": "2.x",
116
117
  "wagmi": ">=2"
117
118
  },
118
119
  "dependencies": {
@@ -125,6 +126,7 @@
125
126
  "lodash-es": "4.17.23"
126
127
  },
127
128
  "devDependencies": {
129
+ "@aptos-labs/wallet-adapter-ant-design": "5.3.19",
128
130
  "@eslint/js": "9.39.4",
129
131
  "@rainbow-me/rainbowkit": "2.2.10",
130
132
  "@rollup/plugin-commonjs": "25.0.8",