@shapeshiftoss/swap-widget 0.0.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/README.md +18 -11
- package/package.json +77 -28
- package/Dockerfile +0 -87
- package/dist/assets/PhArrowCircleDown-B305t-Sh.js +0 -14
- package/dist/assets/PhArrowClockwise-CJPxQhr_.js +0 -14
- package/dist/assets/PhArrowDown-C4hT9BVu.js +0 -14
- package/dist/assets/PhArrowLeft-Way4Cu-r.js +0 -14
- package/dist/assets/PhArrowRight-Cp5ZME0F.js +0 -14
- package/dist/assets/PhArrowSquareOut-NnrK69c5.js +0 -14
- package/dist/assets/PhArrowUp-Dph6j8rm.js +0 -14
- package/dist/assets/PhArrowUpRight-BpJjRRRh.js +0 -14
- package/dist/assets/PhArrowsClockwise-CFUT8X7R.js +0 -14
- package/dist/assets/PhArrowsDownUp-BjBI4ckC.js +0 -14
- package/dist/assets/PhArrowsLeftRight-CuLpbKRk.js +0 -14
- package/dist/assets/PhBank-Dchr4XQJ.js +0 -14
- package/dist/assets/PhBrowser-dUu2TrC1.js +0 -14
- package/dist/assets/PhCaretDown-78IuKU3V.js +0 -14
- package/dist/assets/PhCaretLeft-_aiyH7n1.js +0 -14
- package/dist/assets/PhCaretRight-8zJQEuDX.js +0 -14
- package/dist/assets/PhCaretUp-CiCxKWwN.js +0 -14
- package/dist/assets/PhCheck-CcADx8br.js +0 -14
- package/dist/assets/PhCircleHalf-BYzSzd2h.js +0 -14
- package/dist/assets/PhClock-UItiXeJq.js +0 -14
- package/dist/assets/PhCompass-CUy3uA7t.js +0 -14
- package/dist/assets/PhCopy-C-PDgSlZ.js +0 -14
- package/dist/assets/PhCreditCard-CWRaUT6F.js +0 -14
- package/dist/assets/PhCurrencyDollar-Cqla3AXT.js +0 -14
- package/dist/assets/PhDesktop-BBIPrYLl.js +0 -14
- package/dist/assets/PhDeviceMobile-BdsPaATg.js +0 -14
- package/dist/assets/PhDotsThree-BMXCQl-0.js +0 -14
- package/dist/assets/PhEnvelope-yUsis6yU.js +0 -14
- package/dist/assets/PhFunnelSimple-Ba7BbWTp.js +0 -14
- package/dist/assets/PhGlobe-DgLxBk5U.js +0 -14
- package/dist/assets/PhIdentificationCard-Czjmq9Z3.js +0 -14
- package/dist/assets/PhImage-BAJ_erz6.js +0 -14
- package/dist/assets/PhInfo-Cr4DhVUE.js +0 -14
- package/dist/assets/PhLightbulb-BX_7duTr.js +0 -14
- package/dist/assets/PhMagnifyingGlass-Mygfryvz.js +0 -14
- package/dist/assets/PhPaperPlaneRight-BeuCA660.js +0 -14
- package/dist/assets/PhPlus-BMjcHjsT.js +0 -14
- package/dist/assets/PhPower-CGffGmdb.js +0 -14
- package/dist/assets/PhPuzzlePiece-wm_GpVSi.js +0 -14
- package/dist/assets/PhQrCode-DRwRzXCH.js +0 -14
- package/dist/assets/PhQuestion-M09j2U0T.js +0 -14
- package/dist/assets/PhQuestionMark-BP9EMB6h.js +0 -14
- package/dist/assets/PhSealCheck-BfG80yKn.js +0 -14
- package/dist/assets/PhSignOut-C5YOWlPT.js +0 -14
- package/dist/assets/PhSpinner-BXooDYzU.js +0 -14
- package/dist/assets/PhTrash-Biq6rmmL.js +0 -14
- package/dist/assets/PhUser-CAgZSpGe.js +0 -14
- package/dist/assets/PhVault-l2PHF38a.js +0 -14
- package/dist/assets/PhWallet-w25D16It.js +0 -14
- package/dist/assets/PhWarning-DPEydIPw.js +0 -14
- package/dist/assets/PhWarningCircle-BqjT745H.js +0 -14
- package/dist/assets/PhX-s-SmVExa.js +0 -14
- package/dist/assets/SwapController-If0bFrNc.js +0 -1
- package/dist/assets/ccip-BBB7uCdL.js +0 -1
- package/dist/assets/ccip-CkkdfKKI.js +0 -1
- package/dist/assets/data-capture-D4gAy-Yc.js +0 -242
- package/dist/assets/email-B1AJehis.js +0 -90
- package/dist/assets/embedded-wallet-Q6DQopDk.js +0 -410
- package/dist/assets/features-B6JAPAFb.js +0 -5
- package/dist/assets/index-5jd8RPN9.js +0 -7428
- package/dist/assets/index-B4kNtSTk.js +0 -1080
- package/dist/assets/index-B753eAob.js +0 -1
- package/dist/assets/index-BZoLTv77.js +0 -3
- package/dist/assets/index-Bcw9UURX.js +0 -3
- package/dist/assets/index-BkrV-ahK.js +0 -2
- package/dist/assets/index-CRQzQ_up.js +0 -9
- package/dist/assets/index-CSW0Gt5y.js +0 -132
- package/dist/assets/index-CZ4jTIsk.js +0 -138
- package/dist/assets/index-Cwa8SB3h.js +0 -61
- package/dist/assets/index-DEwQgT4r.js +0 -78
- package/dist/assets/index-DVfQiQ1d.js +0 -1
- package/dist/assets/index-cV3UdaMs.css +0 -1
- package/dist/assets/index-hAmu622O.js +0 -43
- package/dist/assets/onramp-XcPNCLRU.js +0 -422
- package/dist/assets/pay-with-exchange-BeHt4OF4.js +0 -280
- package/dist/assets/property-C9JG5tag.js +0 -27
- package/dist/assets/receive-7ff4he2S.js +0 -131
- package/dist/assets/send-CkMBIRXT.js +0 -554
- package/dist/assets/socials-DmmxuLrP.js +0 -250
- package/dist/assets/swaps-IHAYRQ0x.js +0 -1050
- package/dist/assets/transactions-9Cxdk7o9.js +0 -16
- package/dist/assets/v4-BOvFkHkt.js +0 -1
- package/dist/assets/w3m-modal-kJzFnBfB.js +0 -891
- package/dist/assets/wallet-standard-Dv8LMoUB.js +0 -1
- package/dist/favicon.png +0 -0
- package/dist/favicon.svg +0 -11
- package/dist/icon-192x192.png +0 -0
- package/dist/icon-512x512.png +0 -0
- package/dist/index.html +0 -33
- package/index.html +0 -32
- package/public/favicon.png +0 -0
- package/public/favicon.svg +0 -11
- package/public/icon-192x192.png +0 -0
- package/public/icon-512x512.png +0 -0
- package/railway.toml +0 -10
- package/src/api/client.ts +0 -95
- package/src/components/AddressInputModal.css +0 -173
- package/src/components/AddressInputModal.tsx +0 -250
- package/src/components/ApprovalStep.tsx +0 -92
- package/src/components/ExecutionStep.tsx +0 -27
- package/src/components/InputStep.tsx +0 -431
- package/src/components/QuoteSelector.css +0 -146
- package/src/components/QuoteSelector.tsx +0 -137
- package/src/components/QuotesModal.css +0 -250
- package/src/components/QuotesModal.tsx +0 -182
- package/src/components/SettingsModal.css +0 -145
- package/src/components/SettingsModal.tsx +0 -180
- package/src/components/StatusStep.tsx +0 -139
- package/src/components/SwapWidget.css +0 -713
- package/src/components/SwapWidget.tsx +0 -607
- package/src/components/TokenSelectModal.css +0 -438
- package/src/components/TokenSelectModal.tsx +0 -487
- package/src/components/WalletProvider.tsx +0 -92
- package/src/config/appkit.ts +0 -104
- package/src/config/wagmi.ts +0 -27
- package/src/constants/chains.ts +0 -72
- package/src/constants/defaults.ts +0 -28
- package/src/constants/swappers.ts +0 -48
- package/src/constants/viemChains.ts +0 -69
- package/src/contexts/SwapWalletContext.tsx +0 -25
- package/src/demo/App.css +0 -458
- package/src/demo/App.tsx +0 -481
- package/src/demo/main.tsx +0 -25
- package/src/hooks/useAssets.ts +0 -180
- package/src/hooks/useBalances.ts +0 -822
- package/src/hooks/useBitcoinSigning.ts +0 -276
- package/src/hooks/useMarketData.ts +0 -169
- package/src/hooks/useSolanaSigning.ts +0 -275
- package/src/hooks/useStatusPolling.ts +0 -137
- package/src/hooks/useSwapApproval.ts +0 -106
- package/src/hooks/useSwapDisplayValues.ts +0 -157
- package/src/hooks/useSwapExecution.ts +0 -199
- package/src/hooks/useSwapHandlers.ts +0 -119
- package/src/hooks/useSwapQuote.ts +0 -71
- package/src/hooks/useSwapQuoting.ts +0 -102
- package/src/hooks/useSwapRates.ts +0 -61
- package/src/index.ts +0 -43
- package/src/machines/SwapMachineContext.ts +0 -5
- package/src/machines/__tests__/guards.test.ts +0 -228
- package/src/machines/__tests__/setup.test.ts +0 -7
- package/src/machines/__tests__/swapMachine.test.ts +0 -544
- package/src/machines/__tests__/types.test.ts +0 -124
- package/src/machines/guards.ts +0 -33
- package/src/machines/swapMachine.ts +0 -288
- package/src/machines/types.ts +0 -54
- package/src/services/transactionStatus.ts +0 -322
- package/src/types/index.ts +0 -361
- package/src/utils/addressValidation.ts +0 -201
- package/src/utils/redirect.ts +0 -45
- package/src/vite-env.d.ts +0 -10
- package/tsconfig.json +0 -23
- package/tsconfig.node.json +0 -10
- package/vite.config.ts +0 -101
- package/vitest.config.ts +0 -18
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import{y as d,z as m,D as c,F as r,G as f,I as v,K as y,L as b,J as h,M as g,U as w}from"./index-5jd8RPN9.js";const x=d`
|
|
2
|
-
:host {
|
|
3
|
-
position: relative;
|
|
4
|
-
display: inline-block;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
:host([data-error='true']) > input {
|
|
8
|
-
color: ${({tokens:t})=>t.core.textError};
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
:host([data-error='false']) > input {
|
|
12
|
-
color: ${({tokens:t})=>t.theme.textPrimary};
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
input {
|
|
16
|
-
background: transparent;
|
|
17
|
-
height: auto;
|
|
18
|
-
box-sizing: border-box;
|
|
19
|
-
color: ${({tokens:t})=>t.theme.textPrimary};
|
|
20
|
-
font-feature-settings: 'case' on;
|
|
21
|
-
font-size: ${({textSize:t})=>t.h4};
|
|
22
|
-
caret-color: ${({tokens:t})=>t.core.backgroundAccentPrimary};
|
|
23
|
-
line-height: ${({typography:t})=>t["h4-regular-mono"].lineHeight};
|
|
24
|
-
letter-spacing: ${({typography:t})=>t["h4-regular-mono"].letterSpacing};
|
|
25
|
-
-webkit-appearance: none;
|
|
26
|
-
-moz-appearance: textfield;
|
|
27
|
-
padding: 0px;
|
|
28
|
-
font-family: ${({fontFamily:t})=>t.mono};
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
:host([data-width-variant='auto']) input {
|
|
32
|
-
width: 100%;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
:host([data-width-variant='fit']) input {
|
|
36
|
-
width: 1ch;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.wui-input-amount-fit-mirror {
|
|
40
|
-
position: absolute;
|
|
41
|
-
visibility: hidden;
|
|
42
|
-
white-space: pre;
|
|
43
|
-
font-size: var(--local-font-size);
|
|
44
|
-
line-height: 130%;
|
|
45
|
-
letter-spacing: -1.28px;
|
|
46
|
-
font-family: ${({fontFamily:t})=>t.mono};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.wui-input-amount-fit-width {
|
|
50
|
-
display: inline-block;
|
|
51
|
-
position: relative;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
input::-webkit-outer-spin-button,
|
|
55
|
-
input::-webkit-inner-spin-button {
|
|
56
|
-
-webkit-appearance: none;
|
|
57
|
-
margin: 0;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
input::placeholder {
|
|
61
|
-
color: ${({tokens:t})=>t.theme.textSecondary};
|
|
62
|
-
}
|
|
63
|
-
`;var a=function(t,e,n,s){var p=arguments.length,o=p<3?e:s===null?s=Object.getOwnPropertyDescriptor(e,n):s,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(t,e,n,s);else for(var u=t.length-1;u>=0;u--)(l=t[u])&&(o=(p<3?l(o):p>3?l(e,n,o):l(e,n))||o);return p>3&&o&&Object.defineProperty(e,n,o),o};let i=class extends v{constructor(){super(...arguments),this.inputElementRef=y(),this.disabled=!1,this.value="",this.placeholder="0",this.widthVariant="auto",this.maxDecimals=void 0,this.maxIntegers=void 0,this.fontSize="h4",this.error=!1}firstUpdated(){this.resizeInput()}updated(){this.style.setProperty("--local-font-size",b.textSize[this.fontSize]),this.resizeInput()}render(){var e;return this.dataset.widthVariant=this.widthVariant,this.dataset.error=String(this.error),(e=this.inputElementRef)!=null&&e.value&&this.value&&(this.inputElementRef.value.value=this.value),this.widthVariant==="auto"?this.inputTemplate():h`
|
|
64
|
-
<div class="wui-input-amount-fit-width">
|
|
65
|
-
<span class="wui-input-amount-fit-mirror"></span>
|
|
66
|
-
${this.inputTemplate()}
|
|
67
|
-
</div>
|
|
68
|
-
`}inputTemplate(){return h`<input
|
|
69
|
-
${g(this.inputElementRef)}
|
|
70
|
-
type="text"
|
|
71
|
-
inputmode="decimal"
|
|
72
|
-
pattern="[0-9,.]*"
|
|
73
|
-
placeholder=${this.placeholder}
|
|
74
|
-
?disabled=${this.disabled}
|
|
75
|
-
autofocus
|
|
76
|
-
value=${this.value??""}
|
|
77
|
-
@input=${this.dispatchInputChangeEvent.bind(this)}
|
|
78
|
-
/>`}dispatchInputChangeEvent(){this.inputElementRef.value&&(this.inputElementRef.value.value=w.maskInput({value:this.inputElementRef.value.value,decimals:this.maxDecimals,integers:this.maxIntegers}),this.dispatchEvent(new CustomEvent("inputChange",{detail:this.inputElementRef.value.value,bubbles:!0,composed:!0})),this.resizeInput())}resizeInput(){if(this.widthVariant==="fit"){const e=this.inputElementRef.value;if(e){const n=e.previousElementSibling;n&&(n.textContent=e.value||"0",e.style.width=`${n.offsetWidth}px`)}}}};i.styles=[m,c,x];a([r({type:Boolean})],i.prototype,"disabled",void 0);a([r({type:String})],i.prototype,"value",void 0);a([r({type:String})],i.prototype,"placeholder",void 0);a([r({type:String})],i.prototype,"widthVariant",void 0);a([r({type:Number})],i.prototype,"maxDecimals",void 0);a([r({type:Number})],i.prototype,"maxIntegers",void 0);a([r({type:String})],i.prototype,"fontSize",void 0);a([r({type:Boolean})],i.prototype,"error",void 0);i=a([f("wui-input-amount")],i);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{P as t,A as m,a as d}from"./index-B4kNtSTk.js";import{b as B,c as G,W}from"./index-B4kNtSTk.js";import"./index-5jd8RPN9.js";const U=3e5;async function E(e){return t.handleOpenPay(e)}async function P(e,n=U){if(n<=0)throw new m(d.INVALID_PAYMENT_CONFIG,"Timeout must be greater than 0");try{await E(e)}catch(s){throw s instanceof m?s:new m(d.UNABLE_TO_INITIATE_PAYMENT,s.message)}return new Promise((s,b)=>{let r=!1;const i=setTimeout(()=>{r||(r=!0,c(),b(new m(d.GENERIC_PAYMENT_ERROR,"Payment timeout")))},n);function o(){if(r)return;const a=t.state.currentPayment,u=t.state.error,C=t.state.isPaymentInProgress;if((a==null?void 0:a.status)==="SUCCESS"){r=!0,c(),clearTimeout(i),s({success:!0,result:a.result});return}if((a==null?void 0:a.status)==="FAILED"){r=!0,c(),clearTimeout(i),s({success:!1,error:u||"Payment failed"});return}u&&!C&&!a&&(r=!0,c(),clearTimeout(i),s({success:!1,error:u}))}const y=l("currentPayment",o),S=l("error",o),D=l("isPaymentInProgress",o),c=T([y,S,D]);o()})}function w(){return t.getExchanges()}function h(){var e;return(e=t.state.currentPayment)==null?void 0:e.result}function k(){return t.state.error}function g(){return t.state.isPaymentInProgress}function l(e,n){return t.subscribeKey(e,n)}function T(e){return()=>{e.forEach(n=>{try{n()}catch{}})}}const A={network:"eip155:8453",asset:"native",metadata:{name:"Ethereum",symbol:"ETH",decimals:18}},I={network:"eip155:8453",asset:"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",metadata:{name:"USD Coin",symbol:"USDC",decimals:6}},N={network:"eip155:84532",asset:"native",metadata:{name:"Ethereum",symbol:"ETH",decimals:18}},x={network:"eip155:1",asset:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",metadata:{name:"USD Coin",symbol:"USDC",decimals:6}},v={network:"eip155:10",asset:"0x0b2c639c533813f4aa9d7837caf62653d097ff85",metadata:{name:"USD Coin",symbol:"USDC",decimals:6}},F={network:"eip155:42161",asset:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831",metadata:{name:"USD Coin",symbol:"USDC",decimals:6}},K={network:"eip155:137",asset:"0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",metadata:{name:"USD Coin",symbol:"USDC",decimals:6}},R={network:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",asset:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",metadata:{name:"USD Coin",symbol:"USDC",decimals:6}},Y={network:"eip155:1",asset:"0xdAC17F958D2ee523a2206206994597C13D831ec7",metadata:{name:"Tether USD",symbol:"USDT",decimals:6}},q={network:"eip155:10",asset:"0x94b008aA00579c1307B0EF2c499aD98a8ce58e58",metadata:{name:"Tether USD",symbol:"USDT",decimals:6}},_={network:"eip155:42161",asset:"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",metadata:{name:"Tether USD",symbol:"USDT",decimals:6}},M={network:"eip155:137",asset:"0xc2132d05d31c914a87c6611c10748aeb04b58e8f",metadata:{name:"Tether USD",symbol:"USDT",decimals:6}},O={network:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",asset:"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",metadata:{name:"Tether USD",symbol:"USDT",decimals:6}},H={network:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",asset:"native",metadata:{name:"Solana",symbol:"SOL",decimals:9}};export{t as PayController,B as W3mPayLoadingView,G as W3mPayQuoteView,W as W3mPayView,F as arbitrumUSDC,_ as arbitrumUSDT,A as baseETH,N as baseSepoliaETH,I as baseUSDC,x as ethereumUSDC,Y as ethereumUSDT,w as getExchanges,g as getIsPaymentInProgress,k as getPayError,h as getPayResult,E as openPay,v as optimismUSDC,q as optimismUSDT,P as pay,K as polygonUSDC,M as polygonUSDT,H as solanaSOL,R as solanaUSDC,O as solanaUSDT};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;min-height:100vh}.demo-app{width:100%;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;display:flex;flex-direction:column}.demo-app.dark{--demo-bg: var(--demo-page-bg, #09090f);--demo-bg-secondary: color-mix( in srgb, var(--demo-page-bg, #09090f), white 5% );--demo-text: #ffffff;--demo-text-secondary: #a0a0b0;--demo-text-muted: #6b6b80;--demo-border: rgba(255, 255, 255, .08);--demo-accent: var(--demo-page-accent, #3861fb);background:var(--demo-bg);background-image:radial-gradient(ellipse 80% 50% at 50% -20%,color-mix(in srgb,var(--demo-page-accent, #3861fb),transparent 88%),transparent),radial-gradient(ellipse 60% 40% at 80% 100%,color-mix(in srgb,var(--demo-page-accent, #6366f1),transparent 92%),transparent);color:var(--demo-text)}.demo-app.light{--demo-bg: #f5f5f7;--demo-bg-secondary: #ffffff;--demo-text: #1a1a2e;--demo-text-secondary: #5c5c70;--demo-text-muted: #9090a0;--demo-border: rgba(0, 0, 0, .08);--demo-accent: #3861fb;background:var(--demo-bg);color:var(--demo-text)}.demo-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--demo-border);background:var(--demo-bg-secondary);position:sticky;top:0;z-index:100}.demo-logo{display:flex;align-items:center;gap:10px;color:var(--demo-text);text-decoration:none;transition:opacity .15s ease}.demo-logo:hover{opacity:.8}.demo-logo-text{font-size:17px;font-weight:700;letter-spacing:-.02em}.demo-header-actions{display:flex;align-items:center;gap:12px}.demo-customize-btn{display:flex;align-items:center;gap:6px;padding:10px 14px;border:1px solid var(--demo-border);border-radius:12px;background:transparent;color:var(--demo-text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.demo-customize-btn:hover{border-color:var(--demo-accent);color:var(--demo-text)}.demo-main{flex:1;display:flex;flex-direction:column;align-items:center;padding:48px 24px}.demo-content{width:100%;max-width:1100px;display:flex;flex-direction:column;align-items:center;gap:40px}.demo-hero{text-align:center;max-width:500px}.demo-title{font-size:42px;font-weight:700;letter-spacing:-.03em;margin-bottom:12px;color:var(--demo-accent)}.demo-subtitle{font-size:16px;color:var(--demo-text-secondary);line-height:1.5}.demo-layout{display:flex;gap:24px;align-items:flex-start;justify-content:center;width:100%}.demo-customizer{width:280px;padding:20px;background:var(--demo-bg-secondary);border:1px solid var(--demo-border);border-radius:16px;flex-shrink:0}.demo-customizer-title{font-size:15px;font-weight:600;color:var(--demo-text);margin-bottom:20px}.demo-customizer-section{margin-bottom:20px}.demo-customizer-section:last-child{margin-bottom:0}.demo-customizer-label{display:block;font-size:12px;font-weight:500;color:var(--demo-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px}.demo-theme-toggle{display:flex;gap:8px}.demo-theme-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:10px;border:1px solid var(--demo-border);border-radius:10px;background:transparent;color:var(--demo-text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.demo-theme-btn:hover{border-color:var(--demo-text-muted)}.demo-theme-btn.active{border-color:var(--demo-accent);background:color-mix(in srgb,var(--demo-accent),transparent 90%);color:var(--demo-accent)}.demo-color-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.demo-color-btn{width:100%;aspect-ratio:1;border:2px solid transparent;border-radius:8px;cursor:pointer;transition:all .15s ease}.demo-color-btn:hover{transform:scale(1.1)}.demo-color-btn.active{border-color:var(--demo-text);box-shadow:0 0 0 2px var(--demo-bg)}.demo-preset-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.demo-preset-btn{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px;border:1px solid var(--demo-border);border-radius:10px;background:transparent;cursor:pointer;transition:all .15s ease}.demo-preset-btn:hover{border-color:var(--demo-accent);transform:translateY(-1px)}.demo-preset-preview{width:100%;aspect-ratio:1.2;border-radius:6px;position:relative;overflow:hidden}.demo-preset-card{position:absolute;top:20%;right:20%;bottom:20%;left:20%;border-radius:4px}.demo-preset-accent{position:absolute;bottom:15%;left:25%;right:25%;height:12%;border-radius:2px}.demo-preset-name{font-size:10px;font-weight:500;color:var(--demo-text-secondary)}.demo-color-input-row{display:flex;gap:8px;align-items:center}.demo-color-picker{width:40px;height:40px;padding:0;border:1px solid var(--demo-border);border-radius:8px;cursor:pointer;background:transparent}.demo-color-picker::-webkit-color-swatch-wrapper{padding:2px}.demo-color-picker::-webkit-color-swatch{border-radius:6px;border:none}.demo-color-text{flex:1;padding:10px 12px;border:1px solid var(--demo-border);border-radius:8px;background:var(--demo-bg);color:var(--demo-text);font-size:13px;font-family:monospace}.demo-color-text:focus{outline:none;border-color:var(--demo-accent)}.demo-copy-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px 16px;border:1px solid var(--demo-accent);border-radius:10px;background:color-mix(in srgb,var(--demo-accent),transparent 90%);color:var(--demo-accent);font-size:13px;font-weight:600;cursor:pointer;transition:all .15s ease}.demo-copy-btn:hover{background:color-mix(in srgb,var(--demo-accent),transparent 80%)}.demo-copy-btn:active{transform:scale(.98)}.demo-connection-info{display:flex;flex-direction:column;gap:6px}.demo-connected-badge{display:inline-flex;align-items:center;padding:4px 8px;background:#10b9811a;color:#10b981;border-radius:6px;font-size:12px;font-weight:500;width:fit-content}.demo-address{font-size:13px;color:var(--demo-text-secondary);font-family:monospace}.demo-disconnected{font-size:13px;color:var(--demo-text-muted)}.demo-widget-container{display:flex;justify-content:center}.demo-footer{padding:20px;text-align:center;border-top:1px solid var(--demo-border);color:var(--demo-text-muted);font-size:13px}@media (max-width: 768px){.demo-header{padding:12px 16px;flex-wrap:wrap;gap:12px}.demo-customize-btn span{display:none}.demo-customize-btn{padding:10px}.demo-title{font-size:32px}.demo-subtitle{font-size:14px}.demo-layout{flex-direction:column;align-items:center}.demo-customizer{width:100%;max-width:420px}.demo-main{padding:32px 16px}}.ssw-widget{--ssw-accent: #3861fb;--ssw-accent-light: rgba(56, 97, 251, .1);--ssw-success: #00d395;--ssw-error: #f44336;--ssw-warning: #ffc107;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;width:100%;max-width:420px;border-radius:20px;overflow:hidden}.ssw-widget *,.ssw-widget *:before,.ssw-widget *:after{box-sizing:border-box}.ssw-widget.ssw-dark{--ssw-bg-primary: #0a0a14;--ssw-bg-secondary: #12121c;--ssw-bg-tertiary: #1a1a2e;--ssw-bg-input: #0d0d16;--ssw-bg-hover: rgba(255, 255, 255, .05);--ssw-border: rgba(255, 255, 255, .08);--ssw-border-hover: rgba(255, 255, 255, .15);--ssw-text-primary: #ffffff;--ssw-text-secondary: #a0a0b0;--ssw-text-muted: #6b6b80;background:var(--ssw-bg-secondary);color:var(--ssw-text-primary)}.ssw-widget.ssw-light{--ssw-bg-primary: #ffffff;--ssw-bg-secondary: #f8f9fc;--ssw-bg-tertiary: #ffffff;--ssw-bg-input: #f0f2f5;--ssw-bg-hover: rgba(0, 0, 0, .04);--ssw-border: rgba(0, 0, 0, .08);--ssw-border-hover: rgba(0, 0, 0, .15);--ssw-text-primary: #1a1a2e;--ssw-text-secondary: #5c5c70;--ssw-text-muted: #9090a0;background:var(--ssw-bg-secondary);color:var(--ssw-text-primary);box-shadow:0 4px 24px #00000014}.ssw-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--ssw-border)}.ssw-header-title{font-size:16px;font-weight:600;color:var(--ssw-text-primary)}.ssw-header-actions{display:flex;align-items:center;gap:8px}.ssw-connect-btn{display:flex;align-items:center;gap:6px;padding:8px 12px;border:1px solid var(--ssw-border);background:var(--ssw-bg-tertiary);border-radius:10px;color:var(--ssw-text-primary);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.ssw-connect-btn:hover{background:var(--ssw-bg-hover);border-color:var(--ssw-accent)}.ssw-connect-btn.ssw-connected{background:color-mix(in srgb,var(--ssw-accent) 15%,var(--ssw-bg-tertiary));border-color:color-mix(in srgb,var(--ssw-accent) 40%,transparent)}.ssw-connect-btn.ssw-wrong-network{background:color-mix(in srgb,var(--ssw-error) 15%,var(--ssw-bg-tertiary));border-color:var(--ssw-error);color:var(--ssw-error)}.ssw-settings-btn{padding:8px;border:none;background:none;border-radius:10px;color:var(--ssw-text-secondary);cursor:pointer;transition:all .15s ease}.ssw-settings-btn:hover{color:var(--ssw-text-primary);background:var(--ssw-bg-hover)}.ssw-swap-container{padding:16px;display:flex;flex-direction:column;gap:4px;position:relative}.ssw-token-section{background:var(--ssw-bg-tertiary);border-radius:16px;padding:16px;border:1px solid var(--ssw-border);transition:border-color .15s ease}.ssw-token-section:focus-within{border-color:var(--ssw-accent)}.ssw-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ssw-section-label{font-size:13px;font-weight:500;color:var(--ssw-text-secondary)}.ssw-wallet-badge{font-size:12px;color:var(--ssw-accent);padding:2px 8px;background:var(--ssw-accent-light);border-radius:6px}.ssw-input-row{display:flex;align-items:center;gap:12px}.ssw-amount-input{flex:1;background:none;border:none;font-size:32px;font-weight:500;color:var(--ssw-text-primary);outline:none;min-width:0}.ssw-amount-input::placeholder{color:var(--ssw-text-muted)}.ssw-token-btn{display:flex;align-items:center;gap:10px;padding:8px 12px;border:none;background:var(--ssw-bg-secondary);border-radius:12px;cursor:pointer;transition:all .15s ease;flex-shrink:0}.ssw-token-btn:hover{background:var(--ssw-bg-hover)}.ssw-token-icon{width:32px;height:32px;border-radius:50%;object-fit:contain}.ssw-token-icon-placeholder{width:32px;height:32px;border-radius:50%;background:var(--ssw-accent);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;color:#fff}.ssw-token-info{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.ssw-token-chain{font-size:12px;color:var(--ssw-text-secondary)}.ssw-token-btn svg{color:var(--ssw-text-muted)}.ssw-section-footer{display:flex;align-items:center;justify-content:space-between;margin-top:8px}.ssw-balance{font-size:12px;color:var(--ssw-text-muted)}.ssw-balance-skeleton{width:80px;height:14px;border-radius:4px;background:linear-gradient(90deg,var(--ssw-bg-hover) 25%,var(--ssw-border) 50%,var(--ssw-bg-hover) 75%);background-size:200% 100%;animation:ssw-skeleton-shimmer 1.5s infinite}.ssw-usd-value{font-size:13px;color:var(--ssw-text-muted)}.ssw-swap-divider{display:flex;justify-content:center;margin:-12px 0;position:relative;z-index:10}.ssw-swap-btn{width:36px;height:36px;border:4px solid var(--ssw-bg-secondary);background:var(--ssw-bg-tertiary);border-radius:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ssw-text-secondary);transition:all .15s ease}.ssw-swap-btn:hover{color:var(--ssw-text-primary);background:var(--ssw-bg-hover)}.ssw-receive-address-btn{display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--ssw-bg-tertiary);border:1px solid var(--ssw-border);border-radius:8px;cursor:pointer;transition:all .15s ease}.ssw-receive-address-btn:hover{background:var(--ssw-bg-hover);border-color:var(--ssw-accent)}.ssw-receive-address-btn.ssw-custom{border-color:var(--ssw-accent);background:color-mix(in srgb,var(--ssw-accent) 10%,var(--ssw-bg-tertiary))}.ssw-receive-address-text{font-size:12px;font-family:monospace;color:var(--ssw-accent)}.ssw-receive-address-btn svg{color:var(--ssw-text-muted);flex-shrink:0}.ssw-receive-address-btn:hover svg{color:var(--ssw-accent)}.ssw-quotes{padding:0 16px 16px}.ssw-action-btn{width:calc(100% - 32px);margin:0 16px 16px;padding:16px;border:none;border-radius:14px;background:var(--ssw-accent);color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:all .15s ease}.ssw-action-btn:hover:not(:disabled){filter:brightness(1.1)}.ssw-action-btn:disabled{background:var(--ssw-bg-tertiary);color:var(--ssw-text-muted);cursor:not-allowed}.ssw-action-btn.ssw-secondary{background:color-mix(in srgb,var(--ssw-accent) 15%,var(--ssw-bg-tertiary));color:var(--ssw-text-primary);border:1px solid color-mix(in srgb,var(--ssw-accent) 40%,transparent)}.ssw-action-btn.ssw-secondary:hover:not(:disabled){background:color-mix(in srgb,var(--ssw-accent) 25%,var(--ssw-bg-tertiary));filter:none}.ssw-powered-by{padding:12px 16px;display:flex;align-items:center;justify-content:center;gap:4px;font-size:12px;color:var(--ssw-text-muted);border-top:1px solid var(--ssw-border)}.ssw-powered-by a{color:var(--ssw-accent);text-decoration:none;font-weight:500}.ssw-powered-by-link{display:inline-flex;align-items:center;gap:4px}.ssw-powered-by a:hover{opacity:.8}.ssw-tx-status{display:flex;align-items:center;gap:12px;padding:12px 16px;margin:0 16px 16px;border-radius:12px;background:var(--ssw-bg-tertiary);border:1px solid var(--ssw-border)}.ssw-tx-status-pending{border-color:var(--ssw-accent);background:var(--ssw-accent-light)}.ssw-tx-status-success{border-color:var(--ssw-success);background:#00d3951a}.ssw-tx-status-error{border-color:var(--ssw-error);background:#f443361a}.ssw-tx-status-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px}.ssw-tx-status-pending .ssw-tx-status-icon{color:var(--ssw-accent)}.ssw-tx-status-success .ssw-tx-status-icon{color:var(--ssw-success)}.ssw-tx-status-error .ssw-tx-status-icon{color:var(--ssw-error)}.ssw-tx-status-content{flex:1;display:flex;flex-direction:row;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}.ssw-tx-status-message{font-size:14px;font-weight:500;color:var(--ssw-text-primary);word-break:break-word}.ssw-tx-status-link{font-size:13px;color:var(--ssw-accent);text-decoration:none}.ssw-tx-status-link:hover{text-decoration:underline}.ssw-tx-status-close{flex-shrink:0;background:none;border:none;padding:4px;cursor:pointer;color:var(--ssw-text-muted);transition:color .15s ease}.ssw-tx-status-close:hover{color:var(--ssw-text-primary)}@keyframes ssw-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ssw-spinner{animation:ssw-spin 1s linear infinite}.ssw-address-modal{background:var(--ssw-bg-secondary);border-radius:16px;width:90%;max-width:420px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.ssw-address-content{padding:16px;display:flex;flex-direction:column;gap:12px}.ssw-address-label{font-size:14px;color:var(--ssw-text-secondary)}.ssw-address-input-wrapper{display:flex;align-items:center;gap:8px;background:var(--ssw-bg-tertiary);border:1px solid var(--ssw-border);border-radius:12px;padding:12px 16px;transition:border-color .15s ease}.ssw-address-input-wrapper:focus-within{border-color:var(--ssw-accent)}.ssw-address-input-wrapper.ssw-invalid{border-color:var(--ssw-error)}.ssw-address-input{flex:1;background:none;border:none;outline:none;color:var(--ssw-text-primary);font-size:14px;font-family:monospace}.ssw-address-input::placeholder{color:var(--ssw-text-muted)}.ssw-address-clear-btn{display:flex;align-items:center;justify-content:center;padding:4px;border:none;background:none;color:var(--ssw-text-muted);cursor:pointer;border-radius:4px;transition:all .15s ease}.ssw-address-clear-btn:hover{color:var(--ssw-text-primary);background:var(--ssw-bg-hover)}.ssw-address-error{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ssw-error)}.ssw-use-wallet-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;background:var(--ssw-bg-tertiary);border:1px solid var(--ssw-border);border-radius:10px;color:var(--ssw-text-secondary);font-size:14px;cursor:pointer;transition:all .15s ease}.ssw-use-wallet-btn:hover{background:var(--ssw-bg-hover);color:var(--ssw-text-primary)}.ssw-address-actions{display:flex;gap:12px;margin-top:8px}.ssw-address-btn{flex:1;padding:14px 16px;border-radius:12px;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s ease}.ssw-address-btn-secondary{background:var(--ssw-bg-tertiary);border:1px solid var(--ssw-border);color:var(--ssw-text-secondary)}.ssw-address-btn-secondary:hover{background:var(--ssw-bg-hover);color:var(--ssw-text-primary)}.ssw-address-btn-primary{background:var(--ssw-accent);border:none;color:#fff}.ssw-address-btn-primary:hover:not(:disabled){filter:brightness(1.1)}.ssw-address-btn-primary:disabled{background:var(--ssw-bg-tertiary);color:var(--ssw-text-muted);cursor:not-allowed}.ssw-quote-selector{width:100%;padding:14px 16px;border-radius:14px;background:var(--ssw-bg-tertiary);border:1px solid var(--ssw-border);cursor:pointer;transition:all .15s ease;display:flex;align-items:center;justify-content:space-between;gap:12px}.ssw-quote-selector:hover{border-color:var(--ssw-border-hover);background:var(--ssw-bg-hover)}.ssw-quote-selector.ssw-loading{cursor:default;justify-content:center}.ssw-quote-selector.ssw-loading:hover{border-color:var(--ssw-border);background:var(--ssw-bg-tertiary)}.ssw-quote-loading{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--ssw-text-secondary);font-size:14px}.ssw-spinner-small{width:16px;height:16px;border:2px solid var(--ssw-border);border-top-color:var(--ssw-accent);border-radius:50%;animation:ssw-spin .8s linear infinite}.ssw-quote-left{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.ssw-quote-provider{display:flex;align-items:center;gap:10px}.ssw-quote-provider-icon{width:28px;height:28px;border-radius:8px;object-fit:contain;background:var(--ssw-bg-secondary)}.ssw-quote-provider-icon-placeholder{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#fff}.ssw-quote-provider-name{font-size:14px;font-weight:600;color:var(--ssw-text-primary)}.ssw-quote-best-tag{padding:3px 7px;border-radius:5px;background:var(--ssw-accent);color:#fff;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.ssw-quote-usd{font-size:13px;color:var(--ssw-text-secondary);padding-left:38px}.ssw-quote-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.ssw-quote-amount-row{display:flex;align-items:baseline;gap:5px}.ssw-quote-amount{font-size:17px;font-weight:600;color:var(--ssw-text-primary)}.ssw-quote-symbol{font-size:13px;color:var(--ssw-text-secondary);font-weight:500}.ssw-quote-more{display:flex;align-items:center;gap:3px;font-size:12px;color:var(--ssw-accent);font-weight:500}.ssw-quote-more svg{opacity:.9}.ssw-quotes-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:ssw-fade-in .15s ease}@keyframes ssw-fade-in{0%{opacity:0}to{opacity:1}}.ssw-quotes-modal{width:100%;max-width:400px;max-height:70vh;background:var(--ssw-bg-secondary, #12121c);border-radius:20px;border:1px solid var(--ssw-border, rgba(255, 255, 255, .08));display:flex;flex-direction:column;overflow:hidden;animation:ssw-slide-up .2s ease}@keyframes ssw-slide-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.ssw-quotes-modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 20px 16px;flex-shrink:0}.ssw-quotes-header-content{display:flex;flex-direction:column;gap:4px}.ssw-quotes-modal-title{font-size:18px;font-weight:600;color:var(--ssw-text-primary, #ffffff);margin:0}.ssw-quotes-modal-subtitle{font-size:13px;color:var(--ssw-text-secondary, #a0a0b0)}.ssw-quotes-modal-close{padding:6px;border:none;background:none;border-radius:8px;color:var(--ssw-text-muted, #6b6b80);cursor:pointer;transition:all .15s ease;display:flex;align-items:center;justify-content:center;margin:-2px -6px 0 0}.ssw-quotes-modal-close:hover{color:var(--ssw-text-primary, #ffffff);background:var(--ssw-bg-hover, rgba(255, 255, 255, .05))}.ssw-quotes-modal-list{flex:1;overflow-y:auto;padding:0 12px 12px;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:var(--ssw-border) transparent}.ssw-quotes-modal-list::-webkit-scrollbar{width:6px}.ssw-quotes-modal-list::-webkit-scrollbar-track{background:transparent}.ssw-quotes-modal-list::-webkit-scrollbar-thumb{background:var(--ssw-border);border-radius:3px}.ssw-quotes-modal-list::-webkit-scrollbar-thumb:hover{background:var(--ssw-border-hover)}.ssw-quote-row{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border:1px solid transparent;border-radius:14px;background:var(--ssw-bg-tertiary, #1a1a2e);cursor:pointer;transition:all .15s ease;text-align:left;width:100%;gap:12px}.ssw-quote-row:hover{background:var(--ssw-bg-hover, rgba(255, 255, 255, .05))}.ssw-quote-row.ssw-best{border-color:var(--ssw-accent, #3861fb);background:#3861fb0f}.ssw-quote-row.ssw-best:hover{background:#3861fb1a}.ssw-quote-row.ssw-selected{border-color:var(--ssw-success, #00d395);background:#00d3950f}.ssw-quote-row-left{display:flex;align-items:center;gap:12px;min-width:0}.ssw-quote-row-icon{width:36px;height:36px;border-radius:10px;object-fit:contain;background:var(--ssw-bg-secondary, #12121c);flex-shrink:0}.ssw-quote-row-icon-placeholder{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:600;color:#fff;flex-shrink:0}.ssw-quote-row-info{display:flex;flex-direction:column;gap:2px;min-width:0}.ssw-quote-row-name-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ssw-quote-row-name{font-size:14px;font-weight:600;color:var(--ssw-text-primary, #ffffff)}.ssw-quote-row-best{padding:2px 6px;border-radius:4px;background:var(--ssw-accent, #3861fb);color:#fff;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.ssw-quote-row-diff{padding:2px 6px;border-radius:4px;background:#ef44441f;color:#ef4444;font-size:10px;font-weight:600}.ssw-quote-row-time{font-size:12px;color:var(--ssw-text-muted, #6b6b80)}.ssw-quote-row-right{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0}.ssw-quote-row-amount{font-size:15px;font-weight:600;color:var(--ssw-text-primary, #ffffff)}.ssw-quote-row-symbol{font-size:13px;font-weight:500;color:var(--ssw-text-secondary, #a0a0b0)}.ssw-quote-row-usd{font-size:12px;color:var(--ssw-text-muted, #6b6b80)}.ssw-settings-modal{background:var(--ssw-bg-secondary);border-radius:16px;width:100%;max-width:400px;overflow:hidden;box-shadow:0 24px 48px #0003}.ssw-settings-content{padding:20px 24px 24px}.ssw-settings-section{display:flex;flex-direction:column;gap:12px}.ssw-settings-label{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:500;color:var(--ssw-text-secondary)}.ssw-info-btn{background:none;border:none;padding:2px;cursor:pointer;color:var(--ssw-text-muted);border-radius:50%;transition:color .15s ease}.ssw-info-btn:hover{color:var(--ssw-text-secondary)}.ssw-slippage-options{display:flex;gap:8px}.ssw-slippage-btn{flex:1;padding:10px 12px;border:1px solid var(--ssw-border);border-radius:10px;background:var(--ssw-bg-tertiary);color:var(--ssw-text-primary);font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.ssw-slippage-btn:hover{border-color:var(--ssw-accent)}.ssw-slippage-btn.ssw-selected{background:var(--ssw-accent-light);border-color:var(--ssw-accent);color:var(--ssw-accent)}.ssw-slippage-custom{flex:1.2;position:relative;display:flex;align-items:center}.ssw-slippage-custom input{width:100%;padding:10px 28px 10px 12px;border:1px solid var(--ssw-border);border-radius:10px;background:var(--ssw-bg-tertiary);color:var(--ssw-text-primary);font-size:14px;font-weight:500;outline:none;transition:border-color .15s ease}.ssw-slippage-custom input:focus{border-color:var(--ssw-accent)}.ssw-slippage-custom input::placeholder{color:var(--ssw-text-muted);font-weight:400}.ssw-slippage-custom.ssw-selected input{background:var(--ssw-accent-light);border-color:var(--ssw-accent)}.ssw-slippage-suffix{position:absolute;right:12px;color:var(--ssw-text-secondary);font-size:14px;pointer-events:none}.ssw-slippage-warning{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:10px;background:#ffc1071a;color:#ffc107;font-size:13px;line-height:1.4}.ssw-slippage-warning svg{flex-shrink:0;margin-top:1px}.ssw-slippage-warning.ssw-error{background:#f443361a;color:#f44336}.ssw-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.ssw-modal{background:var(--ssw-bg-secondary);border-radius:16px;width:100%;max-width:680px;max-height:80vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 48px #0003}.ssw-modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--ssw-border)}.ssw-modal-title{font-size:18px;font-weight:600;color:var(--ssw-text-primary);margin:0}.ssw-modal-close{background:none;border:none;padding:8px;cursor:pointer;color:var(--ssw-text-secondary);border-radius:8px;transition:all .15s ease}.ssw-modal-close:hover{background:var(--ssw-bg-hover);color:var(--ssw-text-primary)}.ssw-modal-content{display:flex;flex:1;min-height:0}.ssw-chain-sidebar{width:200px;border-right:1px solid var(--ssw-border);display:flex;flex-direction:column;background:var(--ssw-bg-tertiary)}.ssw-search-wrapper{position:relative;padding:16px}.ssw-search-icon{position:absolute;left:28px;top:50%;transform:translateY(-50%);color:var(--ssw-text-muted);pointer-events:none}.ssw-chain-search,.ssw-token-search{width:100%;padding:10px 12px 10px 36px;border:1px solid var(--ssw-border);border-radius:10px;background:var(--ssw-bg-input);color:var(--ssw-text-primary);font-size:14px;outline:none;transition:border-color .15s ease}.ssw-chain-search:focus,.ssw-token-search:focus{border-color:var(--ssw-accent)}.ssw-chain-search::placeholder,.ssw-token-search::placeholder{color:var(--ssw-text-muted)}.ssw-chain-list{flex:1;overflow-y:auto;padding:0 8px 16px;scrollbar-width:thin;scrollbar-color:var(--ssw-border) transparent;min-height:300px}.ssw-chain-list::-webkit-scrollbar{width:6px}.ssw-chain-list::-webkit-scrollbar-track{background:transparent}.ssw-chain-list::-webkit-scrollbar-thumb{background:var(--ssw-border);border-radius:3px}.ssw-chain-list::-webkit-scrollbar-thumb:hover{background:var(--ssw-border-hover)}.ssw-chain-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:none;background:none;border-radius:10px;cursor:pointer;transition:background .15s ease;text-align:left}.ssw-chain-item:hover{background:var(--ssw-bg-hover)}.ssw-chain-item.ssw-selected{background:var(--ssw-accent-light)}.ssw-chain-icon,.ssw-chain-icon-placeholder,.ssw-chain-icon-multi{width:28px;height:28px;border-radius:8px;flex-shrink:0}.ssw-chain-icon{object-fit:contain}.ssw-chain-icon-placeholder{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#fff}.ssw-chain-icon-multi{display:flex;align-items:center;justify-content:center;background:var(--ssw-bg-hover);font-size:14px}.ssw-chain-name{font-size:14px;font-weight:500;color:var(--ssw-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ssw-token-panel{flex:1;display:flex;flex-direction:column;min-width:0}.ssw-token-list{flex:1;overflow-y:auto;padding:0 16px 16px;scrollbar-width:thin;scrollbar-color:var(--ssw-border) transparent}.ssw-token-list::-webkit-scrollbar{width:6px}.ssw-token-list::-webkit-scrollbar-track{background:transparent}.ssw-token-list::-webkit-scrollbar-thumb{background:var(--ssw-border);border-radius:3px}.ssw-token-list::-webkit-scrollbar-thumb:hover{background:var(--ssw-border-hover)}.ssw-token-item{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border:none;background:none;border-radius:12px;cursor:pointer;transition:background .15s ease;text-align:left}.ssw-token-item:hover{background:var(--ssw-bg-hover)}.ssw-token-icon-wrapper{position:relative;width:40px;height:40px;flex-shrink:0}.ssw-token-icon,.ssw-token-icon-placeholder{width:40px;height:40px;border-radius:50%}.ssw-token-icon{object-fit:contain}.ssw-token-icon-placeholder{display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;color:#fff}.ssw-token-chain-badge{position:absolute;bottom:-2px;right:-2px;width:16px;height:16px;border-radius:4px;border:2px solid var(--ssw-bg-secondary);background:var(--ssw-bg-secondary)}.ssw-token-info{display:flex;flex-direction:column;gap:2px;min-width:0}.ssw-token-symbol{font-size:15px;font-weight:600;color:var(--ssw-text-primary)}.ssw-token-name{font-size:13px;color:var(--ssw-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ssw-token-right{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0}.ssw-token-fiat-value{font-size:14px;font-weight:500;color:var(--ssw-text-primary)}.ssw-token-balance{font-size:13px;font-weight:400;color:var(--ssw-text-secondary)}.ssw-token-balance-skeleton{width:60px;height:14px;border-radius:4px;background:linear-gradient(90deg,var(--ssw-bg-hover) 25%,var(--ssw-border) 50%,var(--ssw-bg-hover) 75%);background-size:200% 100%;animation:ssw-skeleton-shimmer 1.5s infinite;flex-shrink:0}@keyframes ssw-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.ssw-loading,.ssw-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;color:var(--ssw-text-secondary);font-size:14px}.ssw-spinner{width:24px;height:24px;border:2px solid var(--ssw-border);border-top-color:var(--ssw-accent);border-radius:50%;animation:ssw-spin .8s linear infinite}@keyframes ssw-spin{to{transform:rotate(360deg)}}@media (max-width: 600px){.ssw-modal{max-height:90vh}.ssw-modal-content{flex-direction:column}.ssw-chain-sidebar{width:100%;border-right:none;border-bottom:1px solid var(--ssw-border);max-height:200px}.ssw-chain-list{display:flex;flex-wrap:wrap;gap:8px;padding:0 16px 16px}.ssw-chain-item{padding:8px 12px}.ssw-chain-name{font-size:13px}}
|