@charset "UTF-8";
/*
 * The swap tab (community.stonkbuilder.com/jupiterexchange/trade), loaded after
 * jupiter.css.  The server renders the whole card; /jupiter-swap.js fills it
 * in, so the layout does not move when the script starts.
 */
.swap-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,460px);grid-template-areas:"title app" "copy app";column-gap:64px;row-gap:26px;align-items:start;padding:64px 0 84px}
.swap-title{grid-area:title;align-self:end;min-width:0}
.swap-title .kicker{margin-bottom:22px}
.swap-title h1{font-size:clamp(40px,5vw,68px)}
.swap-copy{grid-area:copy;min-width:0}
.swap-copy .lede{margin-top:0}
.swap-app{grid-area:app;position:relative;isolation:isolate;min-width:0}
.swap-app::before{content:"";position:absolute;inset:8% -3% -4%;z-index:-1;border-radius:50%;background:radial-gradient(circle,rgba(199,242,132,.16),rgba(60,198,216,.07) 48%,transparent 72%);filter:blur(18px)}
.swap-points{display:grid;gap:12px;margin-top:26px}
.swap-points li{display:flex;align-items:center;gap:12px;font-size:15px;font-weight:560}
.swap-points .ic{width:34px;height:34px;padding:8px;border:1px solid var(--line-2);border-radius:11px;background:var(--panel);color:var(--lime)}
.text-link,.swap-paused a{color:var(--lime);text-decoration:underline;text-underline-offset:3px}

/* The card */
.swap-card{display:grid;gap:4px;padding:16px;border:1px solid var(--line-2);border-radius:24px;background:linear-gradient(180deg,rgba(17,26,37,.96),rgba(11,17,24,.98));box-shadow:0 30px 80px -30px rgba(0,0,0,.75),inset 0 1px 0 rgba(255,255,255,.04)}
.swap-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 4px 10px}
.swap-card-head h2{font-size:20px;font-weight:720;letter-spacing:-.03em}
.wallet-btn{display:inline-flex;align-items:center;gap:8px;min-height:40px;max-width:62%;padding:0 14px;border:1px solid rgba(199,242,132,.45);border-radius:999px;background:rgba(199,242,132,.08);color:var(--lime-hi);font-size:14px;font-weight:650;cursor:pointer;transition:background .15s}
.wallet-btn:hover{background:rgba(199,242,132,.16)}
.wallet-btn .ic,.wallet-btn img{width:18px;height:18px;flex:none;border-radius:5px}
.wallet-btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wallet-btn.is-connected{border-color:var(--line-2);background:var(--panel-3);color:var(--text);font-family:var(--mono);font-size:13px}
.leg{display:grid;gap:8px;padding:16px;border:1px solid var(--line);border-radius:18px;background:var(--panel);transition:border-color .15s}
.leg:focus-within{border-color:rgba(199,242,132,.4)}
.leg-top{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:28px;color:var(--muted);font-size:13.5px;font-weight:600}
.leg-balance{display:inline-flex;align-items:center;gap:6px;min-width:0;color:var(--faint);font-size:12.5px;font-weight:560}
.leg-balance[hidden]{display:none}
.balance-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fill{flex:none;min-height:26px;padding:0 9px;border:1px solid var(--line-2);border-radius:999px;background:transparent;color:var(--lime);font-size:12px;font-weight:650;cursor:pointer}
.fill:hover{border-color:rgba(199,242,132,.5)}
.leg-row{display:flex;align-items:center;gap:12px;min-width:0}
.amount{flex:1;min-width:0;width:100%;padding:0;border:0;outline:0;background:transparent;color:var(--text);font:inherit;font-size:clamp(26px,3.2vw,34px);font-weight:650;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.amount::placeholder{color:#34465a}
.amount-out{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.amount-out.is-empty{color:#34465a}
.amount-out.is-loading{color:var(--faint)}
.leg-usd{min-height:18px;color:var(--faint);font-size:12.5px;font-variant-numeric:tabular-nums}
.token-btn{display:inline-flex;flex:none;align-items:center;gap:8px;min-height:44px;max-width:52%;padding:0 12px 0 6px;border:1px solid var(--line-2);border-radius:999px;background:var(--panel-3);color:var(--text);font-size:16px;font-weight:700;cursor:pointer;transition:border-color .15s}
.token-btn:hover{border-color:rgba(199,242,132,.5)}
.token-icon{position:relative;display:grid;flex:none;place-items:center;width:30px;height:30px;overflow:hidden;border-radius:50%;background:var(--line-2);color:var(--text);font-size:13px;font-weight:750}
.token-icon img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0}
.token-icon img.is-loaded{opacity:1}
.token-symbol{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chev{flex:none;width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;color:var(--muted)}
.flip-row{position:relative;z-index:2;display:grid;place-items:center;height:0}
.flip{display:grid;place-items:center;width:42px;height:42px;border:4px solid #0d141d;border-radius:14px;background:var(--panel-3);color:var(--lime);cursor:pointer;transition:transform .2s,background .15s}
.flip:hover{background:#223040;transform:rotate(180deg)}
.flip .ic{width:18px;height:18px}
.quote{display:grid;gap:8px;margin-top:10px;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.015);font-size:13.5px}
.quote[hidden]{display:none}
.quote>div{display:flex;align-items:baseline;justify-content:space-between;gap:14px}
.quote>div[hidden]{display:none}
.quote dt{flex:none;color:var(--muted)}
.quote dd{min-width:0;text-align:right;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.quote .rate{padding:0;border:0;background:none;color:var(--text);font:inherit;text-align:right;cursor:pointer}
.quote .rate:hover{color:var(--lime-hi)}
.quote .is-warn{color:var(--gold)}
.quote .is-bad{color:var(--warn)}
.quote small{display:block;color:var(--faint);font-size:12px}
.swap-alert{margin-top:10px;padding:12px 14px;border:1px solid rgba(240,193,107,.4);border-radius:14px;background:rgba(240,193,107,.08);color:#f7d9a2;font-size:13.5px;line-height:1.55;overflow-wrap:anywhere}
.swap-alert[hidden]{display:none}
.swap-alert.is-danger{border-color:rgba(255,138,106,.45);background:rgba(255,138,106,.08);color:#ffc2b0}
.ack{display:flex;align-items:flex-start;gap:10px;margin-top:10px;padding:0 4px;font-size:13.5px;line-height:1.5;cursor:pointer}
.ack[hidden]{display:none}
.ack input{flex:none;width:18px;height:18px;margin:1px 0 0;accent-color:var(--lime)}
.swap-submit{width:100%;min-height:56px;margin-top:12px;font-size:16px}
.swap-submit:disabled{cursor:not-allowed;filter:grayscale(.65) brightness(.72);transform:none;box-shadow:none}
.swap-submit.is-busy{cursor:progress}
.swap-status{min-height:20px;margin-top:8px;color:var(--muted);font-size:13.5px;line-height:1.55;text-align:center;overflow-wrap:anywhere}
.swap-status.is-good{color:var(--lime-hi)}
.swap-status.is-bad{color:var(--warn)}
.swap-status a{color:var(--lime);text-decoration:underline;text-underline-offset:3px}
.swap-fine{margin-top:6px;padding:0 6px;color:var(--faint);font-size:12px;line-height:1.55;text-align:center}
.swap-card-paused{gap:12px;padding:28px}
.swap-card-paused h2{font-size:24px}
.swap-paused{color:var(--muted);font-size:15px;line-height:1.6}

/* Pickers */
.sheet{width:min(440px,calc(100% - 32px));max-height:min(640px,calc(100vh - 48px));max-height:min(640px,calc(100dvh - 48px));padding:0;border:1px solid var(--line-2);border-radius:22px;background:var(--bg-2);color:var(--text);box-shadow:0 40px 120px -20px rgba(0,0,0,.8)}
.sheet[open]{display:flex;flex-direction:column}
.sheet::backdrop{background:rgba(3,6,10,.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 18px 12px}
.sheet-head h2{font-size:18px;font-weight:720;letter-spacing:-.02em}
.sheet-close{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line-2);border-radius:50%;background:transparent;color:var(--muted);font-size:20px;line-height:1;cursor:pointer}
.sheet-close:hover{color:var(--text)}
.sheet-search{display:flex;align-items:center;gap:10px;margin:0 18px;padding:0 14px;border:1px solid var(--line-2);border-radius:14px;background:var(--panel)}
.sheet-search:focus-within{border-color:rgba(199,242,132,.5)}
.sheet-search .ic{width:17px;height:17px;color:var(--faint)}
.sheet-search input{flex:1;min-width:0;min-height:46px;border:0;outline:0;background:transparent;color:var(--text);font:inherit;font-size:16px}
.sheet-note{min-height:18px;margin:10px 18px 4px;color:var(--faint);font-size:12.5px}
.token-list,.wallet-list{flex:1;min-height:0;overflow-y:auto;padding:0 10px 12px;overscroll-behavior:contain}
.token-row,.wallet-row{display:flex;align-items:center;gap:12px;width:100%;padding:10px;border:0;border-radius:14px;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer}
.token-row:hover,.token-row:focus-visible,.wallet-row:hover,.wallet-row:focus-visible{background:var(--panel-2)}
.token-row[aria-current="true"]{background:rgba(199,242,132,.07)}
.token-row .token-icon{width:36px;height:36px}
.token-main{display:grid;flex:1;gap:2px;min-width:0}
.token-main strong{display:flex;align-items:center;gap:6px;min-width:0;font-size:15px;font-weight:700}
.token-main span{overflow:hidden;color:var(--muted);font-size:12.5px;text-overflow:ellipsis;white-space:nowrap}
.token-mint{flex:none;color:var(--faint);font-family:var(--mono);font-size:11.5px}
.badge-verified{display:inline-grid;flex:none;place-items:center;width:15px;height:15px;border-radius:50%;background:var(--cyan);color:#04141a;font-size:10px;font-weight:900}
.badge-unverified{flex:none;padding:1px 6px;border:1px solid rgba(240,193,107,.5);border-radius:999px;color:var(--gold);font-size:10.5px;font-weight:700}
.wallet-row img{width:32px;height:32px;flex:none;border-radius:9px}
.wallet-row strong{font-size:15px;font-weight:680}
.wallet-empty,.wallet-connected{display:grid;gap:12px;padding:4px 18px 20px;color:var(--muted);font-size:14px;line-height:1.6}
.wallet-empty[hidden],.wallet-connected[hidden]{display:none}
.wallet-empty a{color:var(--lime);text-decoration:underline;text-underline-offset:3px}
.wallet-address{padding:12px 14px;border:1px solid var(--line-2);border-radius:12px;background:var(--panel);color:var(--text);font-family:var(--mono);font-size:13px;overflow-wrap:anywhere}
.wallet-actions{display:flex;flex-wrap:wrap;gap:10px}
.wallet-actions .btn{flex:1;min-height:44px}

/* How it works and checks */
.swap-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;counter-reset:step}
.swap-steps li{padding:24px 22px 22px;border:1px solid var(--line);border-radius:20px;background:var(--panel);counter-increment:step}
.swap-steps li::before{content:counter(step);display:grid;place-items:center;width:34px;height:34px;margin-bottom:16px;border-radius:11px;background:rgba(199,242,132,.12);color:var(--lime);font-weight:760}
.swap-steps h3{font-size:18px;font-weight:700;letter-spacing:-.02em}
.swap-steps p{margin-top:8px;color:var(--muted);font-size:15px;line-height:1.65}
.swap-checks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:18px}
.swap-checks li{padding:20px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.015)}
.swap-checks .ic{width:22px;height:22px;color:var(--lime)}
.swap-checks h3{margin-top:12px;font-size:15px;font-weight:700}
.swap-checks p{margin-top:6px;color:var(--muted);font-size:14px;line-height:1.6}

@media (max-width:1100px){
  .swap-checks{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:960px){
  .swap-hero{grid-template-columns:minmax(0,1fr);grid-template-areas:"title" "app" "copy";padding:40px 0 64px}
  .swap-app{justify-self:center;width:100%;max-width:520px}
  .swap-steps{grid-template-columns:1fr}
}
@media (max-width:640px){
  .swap-card{padding:12px;border-radius:20px}
  .leg{padding:14px}
  .token-btn{font-size:15px}
  .token-mint{display:none}
  .swap-checks{grid-template-columns:1fr}
}
