
:root{
  color-scheme:dark;
  --bg:oklch(13% .012 164);
  --bg-2:oklch(10% .01 164);
  --panel:oklch(16% .013 164);
  --panel-deep:oklch(12% .012 164);
  --panel-soft:oklch(19% .012 164 / .62);
  --ink:oklch(89% .018 164);
  --ink-strong:oklch(95% .016 164);
  --muted:oklch(65% .018 175);
  --dim:oklch(48% .018 175);
  --line:oklch(25% .026 164);
  --line-2:oklch(32% .035 164);
  --line-blue:oklch(46% .08 255 / .55);
  --acid:oklch(74% .18 126);
  --acid-2:oklch(82% .16 122);
  --cyan:oklch(79% .13 220);
  --amber:oklch(82% .15 82);
  --orange:oklch(69% .16 52);
  --purple:oklch(75% .13 305);
  --red:oklch(72% .16 27);
  --blue:oklch(72% .12 255);
  --mono:"JetBrains Mono","IBM Plex Mono","Cascadia Mono","SF Mono",Consolas,"Courier New",monospace;
  --sans:Inter,"Microsoft YaHei UI","Segoe UI",system-ui,"PingFang SC",sans-serif;
  --shadow:0 18px 46px oklch(0% 0 0 / .52);
}
*{box-sizing:border-box}
html,body{height:100%;min-height:100%;margin:0}
body{
  color:var(--ink);
  font-family:var(--sans);
  background:
    radial-gradient(circle at 8% -6%,oklch(65% .15 126 / .10),transparent 34rem),
    linear-gradient(90deg,oklch(100% 0 0 / .035) 1px,transparent 1px),
    linear-gradient(0deg,oklch(100% 0 0 / .028) 1px,transparent 1px),
    var(--bg);
  background-size:auto,80px 80px,80px 80px,auto;
  padding:0 28px 74px;
  overflow:hidden;
}
body:after{
  content:"SYS_FEED  ●  WALLET OPS  ●  LOCAL SIGNING  ●  BATCH EXECUTION";
  position:fixed;
  left:0;right:0;bottom:0;
  z-index:20;
  height:46px;
  display:flex;
  align-items:center;
  padding:0 28px;
  border-top:1px solid var(--line);
  background:oklch(8% .01 164 / .96);
  color:var(--acid);
  font-family:var(--mono);
  font-size:14px;
  font-weight:900;
  letter-spacing:.28em;
  box-shadow:0 -18px 40px oklch(0% 0 0 / .45);
}
.app-shell{
  max-width:2200px;
  margin:0 auto;
  height:calc(100dvh - 74px);
  min-height:0;
  display:grid;
  grid-template-columns:1fr;
  grid-template-rows:auto auto minmax(0,1fr);
  gap:26px;
  overflow:hidden;
}
.command-bar{
  grid-column:1/-1;
  min-height:118px;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:22px;
  padding:24px 12px 22px 12px;
  border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,oklch(11% .012 164 / .98),oklch(10% .012 164 / .86));
  position:sticky;
  top:0;
  z-index:10;
  backdrop-filter:blur(10px);
}
.command-bar:after{
  content:"";
  position:absolute;
  left:0;right:0;bottom:-1px;
  height:1px;
  background:linear-gradient(90deg,transparent,var(--acid),transparent);
  opacity:.28;
}
.brand-block{display:flex;align-items:center;gap:22px;min-width:0}
.brand-mark{
  width:auto;
  height:auto;
  padding:0 4px;
  background:none;
  border:0;
  color:var(--acid);
  font-family:var(--mono);
  font-size:64px;
  line-height:.82;
  font-weight:950;
  letter-spacing:-.18em;
  text-transform:lowercase;
  text-shadow:0 0 18px oklch(74% .18 126 / .28);
}
.brand-mark:before{content:"985";letter-spacing:-.14em}
.brand-mark{font-size:0}
.brand-mark::before{
  font-size:64px;
  letter-spacing:-.14em;
}
.brand-mark::after{
  content:"monitor";
  margin-left:10px;
  font-size:52px;
  letter-spacing:-.12em;
}
.eyebrow{
  font-family:var(--mono);
  font-size:13px;
  letter-spacing:.25em;
  color:var(--acid);
  font-weight:900;
  text-transform:uppercase;
}
h1{
  margin:8px 0 7px;
  font-size:34px;
  line-height:1;
  color:var(--ink-strong);
  letter-spacing:-.055em;
}
p{margin:0;color:var(--muted);line-height:1.55}
.risk-card{
  width:min(470px,38vw);
  border:1px solid oklch(62% .13 52 / .62);
  border-radius:0;
  background:linear-gradient(90deg,oklch(45% .13 52 / .34),oklch(24% .07 52 / .30));
  color:oklch(89% .08 70);
  padding:16px 18px;
  box-shadow:var(--shadow);
}
.risk-card strong{
  display:block;
  font-family:var(--mono);
  font-size:16px;
  letter-spacing:.12em;
  color:var(--orange);
  margin-bottom:6px;
}
.risk-card span{font-size:13px;line-height:1.55;color:oklch(82% .055 70)}
.layout-panel-controls{
  grid-column:1;
  grid-row:2;
  display:flex;
  align-items:center;
  gap:8px;
  overflow:auto;
  min-height:0;
  padding:0 2px 2px;
}
.layout-toggle,.layout-reset,.layout-altfun-trade{
  flex:0 0 auto;
  border:1px solid var(--line);
  background:oklch(9% .014 164 / .88);
  color:var(--muted);
  padding:7px 10px;
  font-family:var(--mono);
  font-size:11px;
  font-weight:900;
  cursor:pointer;
}
.layout-toggle.active{
  color:var(--acid);
  border-color:oklch(76% .18 126 / .6);
  background:oklch(20% .055 126 / .42);
}
.layout-reset{color:var(--amber)}
.layout-altfun-trade{
  display:inline-flex;
  align-items:center;
  gap:7px;
  color:var(--ink-strong);
  border-color:oklch(76% .18 126 / .85);
  background:linear-gradient(135deg, oklch(74% .20 126), oklch(64% .21 156));
  box-shadow:0 0 0 1px oklch(82% .20 126 / .28) inset,0 0 18px oklch(76% .18 126 / .18);
}
.layout-altfun-trade:hover{
  border-color:oklch(86% .20 126);
  filter:brightness(1.08);
}
.layout-new-pill{
  display:inline-grid;
  place-items:center;
  padding:2px 5px;
  border-radius:999px;
  background:var(--danger);
  color:#fff;
  font-size:9px;
  line-height:1;
  letter-spacing:.08em;
  box-shadow:0 0 12px rgba(255,57,57,.45);
}
.workspace-columns{
  grid-column:1;
  grid-row:3;
  display:flex;
  gap:26px;
  min-height:0;
  overflow-x:auto;
  overflow-y:hidden;
  padding-bottom:24px;
  scrollbar-gutter:stable both-edges;
}
.layout-column{position:relative;flex:0 0 auto;min-height:0;min-width:220px}
.layout-resize-handle{
  position:absolute;
  top:0;
  right:0;
  width:10px;
  height:100%;
  z-index:40;
  cursor:col-resize;
  touch-action:none;
  border-right:2px solid oklch(70% .13 126 / .28);
  background:linear-gradient(90deg,transparent,oklch(70% .13 126 / .06));
}
.layout-resize-handle:hover{border-right-color:var(--acid);background:oklch(70% .13 126 / .14)}
body.layout-resizing{cursor:col-resize;user-select:none}
.wallet-track-rail,.nft-rank-rail,.side-rail,.main-stage{display:grid;gap:24px;align-content:start;min-height:0;overflow-y:scroll;overscroll-behavior:contain;scrollbar-gutter:stable both-edges;padding-bottom:24px}
.panel{
  border:1px solid var(--line);
  border-radius:0;
  background:linear-gradient(180deg,var(--panel),var(--panel-deep));
  box-shadow:none;
  overflow:visible;
}
.config-panel{
  position:static;
  box-shadow:inset 8px 0 0 oklch(30% .045 164 / .8);
}
.nft-monitor-panel{
  min-height:680px;
  background:linear-gradient(180deg,oklch(13% .014 250),oklch(10% .012 250));
  border-color:oklch(42% .028 250);
}
.nft-rank-panel{
  min-height:680px;
  background:linear-gradient(180deg,oklch(12% .014 250),oklch(9% .012 250));
  border-color:oklch(42% .028 250);
}
.wallet-track-panel{
  min-height:680px;
  background:#020403;
  border-color:oklch(24% .025 150);
}
.wallet-track-head{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  padding:10px 8px 8px;
  border-bottom:0;
  background:#020403;
}
.wallet-track-head span{
  display:none;
  color:var(--muted);
  font-family:var(--mono);
  font-size:10px;
  font-weight:950;
  letter-spacing:.16em;
}
.wallet-track-head h2{
  margin:0;
  font-size:15px;
  color:var(--ink-strong);
  letter-spacing:-.02em;
}
.wallet-track-actions{display:flex;align-items:center;gap:6px}
.wallet-track-tabs{
  display:flex;
  gap:6px;
  padding:10px 10px 7px;
  background:oklch(6.5% .012 150);
}
.wallet-track-tabs button,.wallet-track-chain-tabs button{
  border:1px solid oklch(36% .025 150 / .6);
  background:oklch(12% .012 150);
  color:var(--muted);
  padding:7px 9px;
  font-family:var(--mono);
  font-size:11px;
  font-weight:900;
  cursor:pointer;
}
.wallet-track-tabs button.active,.wallet-track-chain-tabs button.active{
  color:oklch(84% .22 126);
  border-color:oklch(76% .18 126 / .75);
  background:oklch(24% .07 126 / .42);
}
.wallet-track-actions .btn.active{
  color:oklch(84% .22 126);
  border-color:oklch(76% .18 126 / .75);
}
.wallet-track-chain-tabs{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:5px;
  padding:0 10px 9px;
  background:oklch(6.5% .012 150);
  border-bottom:1px solid oklch(45% .04 150 / .25);
}
.wallet-track-chain-tabs button{padding:6px 4px;font-size:10px}
.wallet-track-event-filter{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:5px;
  padding:0 10px 9px;
  background:oklch(6.5% .012 150);
  border-bottom:1px solid oklch(45% .04 150 / .25);
}
.wallet-track-event-filter.hidden{display:none}
.wallet-track-event-filter button{
  border:1px solid oklch(36% .025 150 / .6);
  background:oklch(12% .012 150);
  color:var(--muted);
  padding:6px 4px;
  font-family:var(--mono);
  font-size:10px;
  font-weight:900;
  cursor:pointer;
}
.wallet-track-event-filter button.active{
  color:oklch(84% .22 126);
  border-color:oklch(76% .18 126 / .75);
  background:oklch(24% .07 126 / .42);
}
.wallet-track-filter{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  padding:9px 10px;
  background:oklch(6.5% .012 150);
}
.wallet-track-filter select{
  min-width:0;
  border:1px solid oklch(36% .025 150 / .6);
  background:oklch(5% .01 150);
  color:var(--ink-strong);
  padding:8px 9px;
  font-family:var(--mono);
  font-size:12px;
}
.wallet-track-stats{
  display:flex;
  align-items:center;
  gap:12px;
  padding:7px 10px 10px;
  border-bottom:1px solid oklch(45% .04 150 / .22);
  color:var(--muted);
  font-family:var(--mono);
  font-size:11px;
  background:oklch(6% .012 150);
}
.wallet-track-stats b{color:var(--acid)}
.wallet-track-list{
  min-height:460px;
  padding:6px 6px 16px;
  background:#020403;
}
.wallet-track-empty{
  padding:24px 10px;
  color:var(--muted);
  font-family:var(--mono);
  line-height:1.55;
}
.track-table-head{
  display:grid;
  grid-template-columns:54px minmax(82px,1fr) minmax(96px,1.05fr) 86px 78px;
  gap:6px;
  padding:8px 4px 12px;
  color:var(--muted);
  font-family:var(--mono);
  font-size:11px;
}
.track-row{
  display:grid;
  grid-template-columns:54px minmax(82px,1fr) minmax(96px,1.05fr) 86px 78px;
  gap:6px;
  align-items:center;
  min-width:0;
  padding:7px 4px;
  color:inherit;
  text-decoration:none;
  border-bottom:0;
}
.track-row:hover{background:oklch(14% .025 150 / .48)}
.track-row > *{min-width:0}
.track-time{
  display:flex;
  align-items:center;
  gap:6px;
  color:var(--muted);
  font-family:var(--mono);
  font-size:11px;
  text-decoration:none;
  min-width:0;
}
.track-time span{text-decoration:underline;text-decoration-style:dotted;white-space:nowrap}
.track-time b{
  display:inline-grid;
  place-items:center;
  width:14px;
  height:14px;
  border-radius:3px;
  font-size:9px;
  line-height:1;
  color:var(--acid);
  background:oklch(24% .08 126 / .7);
}
.track-time b.sell{color:var(--pink);background:oklch(24% .09 350 / .7)}
.track-time b.transfer{color:var(--cyan);background:oklch(22% .065 220 / .7)}
.track-wallet,.track-token,.track-address-row span,.track-token-row span,.track-address-copy{
  display:flex;
  align-items:center;
  min-width:0;
  gap:5px;
}
.track-wallet,.track-address-copy,.track-token{
  width:100%;
  border:0;
  background:transparent;
  color:inherit;
  text-align:left;
  padding:0;
  cursor:pointer;
  font-family:inherit;
}
.track-wallet:hover b,.track-address-copy:hover b,.track-token:hover i,.track-token:hover b{color:var(--acid)}
.track-avatar{
  --h:120;
  width:18px;
  height:18px;
  flex:0 0 auto;
  display:grid;
  place-items:center;
  border-radius:4px;
  background:hsl(var(--h) 82% 48%);
  color:#06110d;
  font-size:11px;
  font-weight:950;
  font-family:var(--mono);
}
.track-token-icon{
  position:relative;
  overflow:hidden;
}
.track-token-fallback{
  background:#020403;
  color:#fff;
}
.track-token-icon img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  border-radius:inherit;
  background:#06110d;
}
.track-wallet b,.track-token i,.track-address-row b,.track-token-row b,.track-address-copy b{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:var(--ink-strong);
  font-style:normal;
  font-weight:950;
  font-size:12px;
}
.track-wallet.buy b{color:var(--acid)}
.track-wallet.sell b{color:var(--pink)}
.track-wallet.transfer b{color:var(--cyan)}
.track-wallet em,.track-token small,.track-address-row em,.track-token-row em,.track-address-copy em{
  color:var(--muted);
  font-style:normal;
  font-size:10px;
  white-space:nowrap;
}
.track-token small{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
}
.track-amount{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:5px;
  font-family:var(--mono);
  font-size:12px;
  font-weight:950;
  white-space:nowrap;
}
.track-amount em{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  font-style:normal;
}
.track-chain-icon{
  display:inline-grid;
  place-items:center;
  width:16px;
  height:16px;
  flex:0 0 16px;
  border-radius:999px;
  color:#fff;
  font-size:10px;
  font-weight:950;
  box-shadow:0 0 0 1px oklch(100% .02 260 / .2) inset;
}
.track-chain-icon.ethereum{background:linear-gradient(135deg,#4b7dff,#8aa8ff)}
.track-chain-icon.ethereum::before{content:"◆"}
.track-chain-icon.base{background:#2458ff;border-radius:4px}
.track-chain-icon.base::before{content:"■";font-size:8px}
.track-chain-icon.bsc{background:linear-gradient(135deg,#f0b90b,#ffd95d);color:#111}
.track-chain-icon.bsc::before{content:"◎"}
.track-chain-icon.hyperevm{background:linear-gradient(135deg,#04e1a7,#10201b);color:#04110d}
.track-chain-icon.hyperevm::before{content:"H"}
.track-amount.sell{color:var(--pink)}
.track-amount.buy{color:var(--acid)}
.track-amount.transfer{color:var(--cyan)}
.track-value{
  color:var(--ink-strong);
  font-family:var(--mono);
  font-size:12px;
  font-weight:900;
  text-align:right;
  white-space:nowrap;
}
.track-token-row,.track-address-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto auto;
  gap:10px;
  align-items:center;
  padding:9px 0;
  border-bottom:1px solid oklch(40% .025 150 / .14);
  color:var(--muted);
  font-family:var(--mono);
  font-size:12px;
}
.track-token-row strong{color:var(--cyan);white-space:nowrap}
.track-address-row small{color:var(--acid);white-space:nowrap}
.nft-rank-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding:16px 14px 12px;
  border-bottom:1px solid oklch(48% .018 250 / .38);
  background:oklch(12% .014 250);
}
.nft-rank-head span{
  display:block;
  color:var(--acid);
  font-family:var(--mono);
  font-size:10px;
  font-weight:900;
  letter-spacing:.16em;
}
.nft-rank-head h2{
  margin:5px 0 0;
  color:var(--ink-strong);
  font-size:20px;
  letter-spacing:-.04em;
}
.nft-rank-head b{
  color:var(--cyan);
  font-family:var(--mono);
  font-size:13px;
  white-space:nowrap;
}
.nft-rank-tabs{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:6px;
  padding:12px 12px 8px;
  background:oklch(10% .012 250);
}
.nft-rank-tabs button{
  border:1px solid oklch(52% .02 250 / .55);
  background:oklch(12% .014 250);
  color:var(--muted);
  padding:9px 6px;
  cursor:pointer;
  font-family:var(--mono);
  font-weight:900;
}
.nft-rank-tabs button.active{
  border-color:var(--amber);
  color:var(--amber);
  box-shadow:inset 0 0 0 1px oklch(77% .16 86 / .45);
}
.nft-rank-controls{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:9px 12px 12px;
  border-bottom:1px solid oklch(48% .018 250 / .28);
  background:oklch(10% .012 250);
  color:var(--muted);
  font-family:var(--mono);
  font-size:11px;
}
.nft-rank-controls label{display:flex;align-items:center;gap:6px;white-space:nowrap}
.nft-rank-controls input{
  width:58px;
  border:1px solid oklch(52% .02 250 / .55);
  background:oklch(8% .012 250);
  color:var(--ink-strong);
  padding:5px 7px;
  font-family:var(--mono);
}
.nft-rank-list{
  display:grid;
  gap:0;
  padding:8px 10px 14px;
  background:oklch(10% .012 250);
}
.nft-rank-empty{
  padding:24px 10px;
  color:var(--muted);
  font-family:var(--mono);
  line-height:1.55;
}
.nft-rank-item{
  display:grid;
  grid-template-columns:22px 42px minmax(0,1fr) auto;
  gap:9px;
  align-items:center;
  width:100%;
  padding:9px 0;
  border:0;
  border-bottom:1px solid oklch(52% .02 250 / .16);
  background:transparent;
  color:inherit;
  text-align:left;
  cursor:pointer;
}
.nft-rank-item:hover{background:oklch(17% .018 250 / .52)}
.nft-rank-no{
  color:var(--muted);
  font-family:var(--mono);
  font-size:11px;
  text-align:right;
}
.nft-rank-thumb{
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  border:1px solid oklch(68% .05 220 / .38);
  background:oklch(8% .012 250);
  color:var(--cyan);
  overflow:hidden;
  font-family:var(--mono);
  font-size:11px;
  font-weight:900;
}
.nft-rank-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.nft-rank-main{min-width:0}
.nft-rank-main b{
  display:block;
  color:var(--ink-strong);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  font-size:13px;
}
.nft-rank-main small{
  display:block;
  margin-top:2px;
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  font-size:11px;
}
.nft-rank-count{
  text-align:right;
  font-family:var(--mono);
  white-space:nowrap;
}
.nft-rank-count b{display:block;color:var(--red);font-size:14px}
.nft-rank-count small{display:block;color:var(--cyan);font-size:10px;margin-top:2px}
.nft-monitor-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:14px 16px;
  border-bottom:1px solid oklch(48% .018 250 / .38);
  background:oklch(12% .014 250);
}
.nft-live-line{display:flex;align-items:center;gap:10px;min-width:0;font-family:var(--mono)}
.live-dot{
  width:10px;
  height:10px;
  border-radius:999px;
  background:var(--acid);
  box-shadow:0 0 18px var(--acid);
}
.live-dot.paused{background:var(--orange);box-shadow:0 0 18px var(--orange)}
.nft-live-line strong{color:var(--ink-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nft-live-line span:last-child{color:var(--cyan);font-size:12px}
.nft-actions{display:flex;gap:8px}
.nft-chain-tabs{
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:6px;
  padding:10px 14px;
  border-bottom:1px solid oklch(48% .018 250 / .28);
  background:oklch(10.5% .012 250);
}
.nft-chain-tabs button{
  border:1px solid oklch(52% .02 250 / .55);
  background:oklch(12% .014 250);
  color:var(--muted);
  padding:7px 8px;
  cursor:pointer;
  font-family:var(--mono);
  font-size:12px;
  font-weight:900;
}
.nft-chain-tabs button.active{
  border-color:var(--acid);
  color:var(--acid);
  background:oklch(22% .06 145 / .42);
}
.nft-filter-details{
  border-bottom:1px solid oklch(48% .018 250 / .22);
  background:oklch(10.5% .012 250);
}
.nft-filter-details summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 16px;
  cursor:pointer;
  user-select:none;
  color:var(--ink-strong);
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.nft-filter-details summary::-webkit-details-marker{display:none}
.nft-filter-details summary::after{
  content:"展开";
  color:var(--acid);
  font-size:11px;
  letter-spacing:.1em;
}
.nft-filter-details[open] summary::after{content:"收起"}
.nft-filter-details summary em{
  color:var(--muted);
  font-style:normal;
  font-size:11px;
  letter-spacing:0;
  text-transform:none;
}
.nft-search-row{display:grid;gap:8px;padding:0 16px 12px}
.nft-search-row input,.nft-ca-filter{
  width:100%;
  background:oklch(9% .012 250);
  border:1px solid oklch(48% .018 250 / .42);
  color:var(--ink-strong);
  padding:12px 14px;
  font-family:var(--mono);
}
.nft-ca-filter{min-height:58px;resize:vertical;font-size:12px;line-height:1.45}
.nft-stat-row{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  background:oklch(48% .018 250 / .18);
  border-bottom:1px solid oklch(48% .018 250 / .28);
}
.nft-stat-row div{background:oklch(10% .012 250);padding:12px 14px}
.nft-stat-row span{display:block;color:var(--muted);font-size:11px;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase}
.nft-stat-row b{display:block;margin-top:5px;color:var(--ink-strong);font-size:16px}
.nft-feed{
  max-height:calc(100vh - 340px);
  min-height:430px;
  overflow:auto;
  padding:12px 14px 16px;
  background:oklch(10% .012 250);
}
.nft-empty{padding:26px 14px;color:var(--muted);font-family:var(--mono);line-height:1.55}
.nft-block{margin-bottom:14px;border:1px solid oklch(52% .02 250 / .18);background:oklch(14% .014 250 / .78)}
.nft-block-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  padding:10px 12px;
  background:oklch(20% .014 250);
  color:var(--ink-strong);
  font-weight:900;
}
.nft-block-head small{color:var(--muted);font-family:var(--mono);font-weight:700}
.nft-entry{
  display:grid;
  grid-template-columns:46px minmax(0,1fr) 112px;
  gap:10px;
  padding:12px;
  border-top:1px solid oklch(52% .02 250 / .14);
}
.nft-thumb{
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  border:1px solid oklch(68% .05 220 / .4);
  color:var(--cyan);
  font-size:13px;
  margin-top:2px;
  background:oklch(8% .012 250);
  overflow:hidden;
}
.nft-thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.nft-title{display:flex;align-items:center;gap:7px;min-width:0}
.nft-title b{color:var(--ink-strong);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nft-title code{color:var(--muted);font-size:11px}
.nft-badge{display:inline-flex;align-items:center;border-radius:3px;background:oklch(8% .01 250);color:var(--ink-strong);padding:2px 6px;font-size:11px;font-family:var(--mono)}
.nft-meta{margin-top:5px;color:var(--muted);font-size:12px;line-height:1.45}
.nft-free{color:oklch(66% .22 29);font-weight:950}
.nft-paid{color:var(--orange);font-weight:950}
.nft-method{font-style:italic;color:oklch(69% .018 250)}
.nft-right{text-align:right;font-family:var(--mono);font-size:12px;color:var(--muted)}
.nft-right b{display:block;color:var(--ink-strong);font-size:13px;margin-bottom:4px}
.nft-chain-tag{display:inline-block;color:var(--acid);border:1px solid oklch(78% .19 126 / .28);padding:2px 5px;margin-top:5px}
.nft-icon-links{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}
.nft-icon-btn{
  width:22px;
  height:22px;
  display:inline-grid;
  place-items:center;
  border:1px solid oklch(72% .12 220 / .28);
  background:oklch(8% .012 250 / .72);
  color:var(--cyan);
  text-decoration:none;
  font-family:var(--mono);
  font-size:13px;
  font-weight:950;
  line-height:1;
}
.nft-icon-btn:hover{border-color:var(--cyan);color:var(--ink-strong);background:oklch(16% .025 250 / .86)}
.nft-icon-btn.os{color:oklch(78% .13 220)}
.nft-icon-btn.web{color:var(--acid)}
.nft-icon-btn.x{color:var(--ink-strong)}
.nft-card-actions{display:flex;justify-content:flex-end;gap:5px;flex-wrap:wrap;margin-top:7px}
.nft-filter-one,.nft-config-mint,.nft-tx-link{border:1px solid oklch(72% .16 27 / .45);background:oklch(20% .05 27 / .55);color:var(--red);font-family:var(--mono);font-weight:900;font-size:11px;padding:3px 7px;cursor:pointer;text-decoration:none;line-height:1.2}
.nft-config-mint{border-color:oklch(78% .17 145 / .45);background:oklch(24% .08 145 / .55);color:var(--acid)}
.nft-tx-link{border-color:oklch(78% .13 220 / .45);background:oklch(18% .05 230 / .55);color:var(--cyan)}
.nft-filter-one:hover{border-color:var(--red);color:var(--ink-strong)}
.nft-config-mint:hover{border-color:var(--acid);color:var(--ink-strong)}
.nft-tx-link:hover{border-color:var(--cyan);color:var(--ink-strong)}

.panel-head{
  padding:18px 20px 16px;
  border-bottom:1px solid var(--line);
  display:grid;
  gap:5px;
  background:oklch(9% .01 164 / .28);
}
.panel-head span{
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--acid);
}
.panel-head h2{margin:0;color:var(--ink-strong);font-size:22px;letter-spacing:-.045em}
.panel-head.large{grid-template-columns:auto 1fr;align-items:end;gap:4px 12px}
.panel-head.large span{grid-column:1/-1}
.panel-head.large h2{font-size:28px}
.panel-head.large p{grid-column:1/-1;font-size:13px}
.field{display:flex;flex-direction:column;gap:7px;margin:14px 20px}
.field.full{grid-column:1/-1}
.compact-config{
  padding-bottom:8px;
}
.compact-config summary{
  cursor:pointer;
  list-style:none;
  user-select:none;
}
.compact-config summary::-webkit-details-marker{display:none}
.compact-config-summary{
  grid-template-columns:auto 1fr auto;
  align-items:center;
  padding:12px 16px;
}
.compact-config-summary h2{font-size:19px}
.compact-config-summary em{
  color:var(--muted);
  font-style:normal;
  font-family:var(--mono);
  font-size:11px;
}
.compact-config .field{
  margin:8px 14px;
  gap:5px;
}
.compact-config .field label{font-size:11px}
.compact-config input,
.compact-config select{
  padding:8px 10px;
  font-size:12px;
}
.compact-config .button-row{
  padding:8px 14px;
}
.compact-config .net-pill{
  margin:0 14px 10px;
}
.label,.field label{
  color:var(--muted);
  font-family:var(--mono);
  font-size:12px;
  font-weight:850;
  letter-spacing:.06em;
}
.two{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
input,select,textarea,button{font:inherit}
input,select,textarea{
  width:100%;
  border:1px solid var(--line);
  border-radius:0;
  background:oklch(8% .01 164 / .58);
  color:var(--ink);
  padding:11px 12px;
  outline:none;
  font-family:var(--mono);
}
textarea{
  min-height:150px;
  resize:vertical;
  font-size:12px;
  line-height:1.55;
}
.small-textarea{min-height:84px}
input::placeholder,textarea::placeholder{color:oklch(55% .015 175 / .62)}
input:focus,select:focus,textarea:focus{
  border-color:var(--blue);
  box-shadow:0 0 0 1px oklch(72% .12 255 / .32),0 0 18px oklch(72% .12 255 / .10);
}
.button-row{display:flex;gap:10px;flex-wrap:wrap;padding:14px 20px}
.button-row.compact{padding-top:8px}
.btn{
  border:1px solid var(--line-blue);
  border-radius:0;
  background:oklch(18% .035 255 / .44);
  color:oklch(88% .04 255);
  padding:10px 16px;
  font-family:var(--mono);
  font-weight:900;
  letter-spacing:.04em;
  cursor:pointer;
  box-shadow:inset 0 1px 0 oklch(100% 0 0 / .055),0 6px 16px oklch(0% 0 0 / .24);
  transition:transform .16s ease-out,border-color .16s ease-out,background .16s ease-out,color .16s ease-out;
}
.btn:hover{transform:translateY(-1px);border-color:var(--cyan);color:var(--ink-strong)}
.btn.primary{
  border-color:oklch(72% .16 126 / .62);
  background:oklch(37% .13 126 / .86);
  color:oklch(10% .01 164);
  text-shadow:none;
}
.btn.danger{border-color:oklch(72% .16 27 / .58);background:oklch(31% .09 27 / .72);color:var(--red)}
.btn.giant{width:100%;padding:15px 16px;margin:12px 0 8px}
.full-btn{width:calc(100% - 40px);margin:8px 20px 18px}
.net-pill,.status-line{
  margin:6px 20px 18px;
  border:1px solid var(--line);
  border-radius:0;
  padding:9px 11px;
  color:var(--muted);
  font-family:var(--mono);
  font-size:12px;
  background:oklch(8% .01 164 / .45);
}
.net-pill.ok,.status-line.ok,.ok{color:var(--acid)}
.net-pill.warn,.status-line.warn,.warn{color:var(--amber)}
.net-pill.bad,.status-line.bad,.bad{color:var(--red)}
.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:16px 20px 6px}
.metric{
  border:1px solid var(--line);
  border-radius:0;
  padding:14px;
  background:oklch(8% .01 164 / .36);
}
.metric.wide{grid-column:1/-1}
.metric span{display:block;color:var(--muted);font-family:var(--mono);font-size:12px;letter-spacing:.06em}
.metric b{display:block;margin-top:7px;font-size:22px;letter-spacing:-.035em;color:var(--ink-strong)}
.wallet-compact-line{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:8px 14px;
  margin:0 16px 10px;
  padding:8px 10px;
  border:1px solid oklch(65% .018 175 / .14);
  background:oklch(8% .01 164 / .28);
  color:var(--muted);
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.03em;
}
.wallet-compact-line b{color:var(--ink-strong);font-size:12px;margin-left:3px}
.wallet-compact-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-left:auto}
.wallet-compact-actions .btn{height:26px;padding:4px 8px;font-size:10px;box-shadow:none}
.wallet-token-ca{
  display:flex;
  align-items:center;
  gap:6px;
  height:26px;
  color:var(--muted);
  font-family:var(--mono);
  font-size:10px;
  font-weight:900;
  letter-spacing:.04em;
  white-space:nowrap;
}
.wallet-token-ca input{
  width:230px;
  height:26px;
  padding:4px 8px;
  font-size:10px;
  color:var(--cyan);
}
.group-tools{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:7px;
  padding:8px 10px;
  border-top:1px dashed oklch(65% .018 175 / .16);
  margin:0 16px 12px;
  overflow:hidden;
  background:oklch(7% .01 164 / .18);
}
.group-tools .field{margin:0;display:grid;grid-template-columns:auto 180px;align-items:center;gap:6px;flex:0 0 auto}
.group-tools .field label{font-size:11px;white-space:nowrap}
.group-tools .field input{height:28px;padding:4px 8px;font-size:12px}
.group-tools .btn{height:28px;padding:5px 8px;font-size:10px;white-space:nowrap;box-shadow:none;letter-spacing:.02em}
.group-quick-box{min-width:0;display:flex;align-items:center;gap:8px;flex:1 1 260px}
.group-chip-label{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.04em;margin:0;white-space:nowrap}
.group-chip-list{display:flex;flex-wrap:wrap;gap:5px;min-height:28px;align-items:center}
.group-chip{
  display:inline-flex;
  align-items:center;
  gap:5px;
  min-height:26px;
  max-width:140px;
  padding:0 7px;
  border:1px solid var(--line);
  background:oklch(8% .012 164 / .58);
  color:var(--ink);
  font-family:var(--mono);
  font-size:10px;
  line-height:1.1;
  cursor:pointer;
  user-select:none;
}
.group-chip input{accent-color:oklch(78% .17 145);margin:0}
.group-chip b{color:var(--acid);font-size:10px;font-weight:800}
.group-chip:has(input:checked){border-color:oklch(78% .17 145 / .68);background:oklch(27% .12 142 / .42);color:var(--ink-strong)}
.group-chip.muted{opacity:.62}
.group-action-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;flex:0 0 auto}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.group-cell-input{
  width:118px;
  min-width:0;
  padding:6px 7px;
  font-size:12px;
}
.btn.mini{
  padding:6px 9px;
  font-size:12px;
  box-shadow:none;
}
.wallet-action-row{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  padding:0 16px 12px;
  border-bottom:1px solid oklch(65% .018 175 / .12);
}
.wallet-action-row .btn{height:30px;padding:6px 10px;font-size:11px;letter-spacing:.04em}
.modal-backdrop{
  position:fixed;
  inset:0;
  z-index:80;
  display:grid;
  place-items:center;
  padding:18px;
  background:oklch(3% .012 164 / .74);
  backdrop-filter:blur(12px);
}
.modal-backdrop[hidden]{display:none}
.wallet-modal{
  width:min(760px, calc(100vw - 32px));
  max-height:calc(100vh - 44px);
  overflow:auto;
  border:1px solid var(--line-strong);
  background:linear-gradient(180deg, oklch(11% .018 164 / .98), oklch(6% .012 164 / .98));
  box-shadow:0 24px 80px oklch(0% 0 0 / .5), 0 0 0 1px oklch(80% .16 180 / .04) inset;
  padding:18px;
}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}
.modal-head span{font-family:var(--mono);color:var(--acid);font-size:11px;letter-spacing:.16em;text-transform:uppercase}
.modal-head h3{margin:4px 0 0;color:var(--ink-strong);font-size:24px;letter-spacing:-.05em}
.modal-close{
  width:34px;
  height:34px;
  border:1px solid var(--line);
  background:oklch(8% .012 164 / .78);
  color:var(--ink-strong);
  font-size:24px;
  line-height:1;
  cursor:pointer;
}
.modal-actions{padding-left:0;padding-right:0;padding-bottom:0}
.export-group-box{margin:12px 0 6px;padding:12px;border:1px solid var(--line);background:oklch(8% .01 164 / .34)}
.danger-text{color:oklch(76% .16 28)}
body.modal-open{overflow:hidden}
.import-box,.create-box{
  border:1px solid var(--line);
  border-radius:0;
  background:oklch(8% .01 164 / .32);
  padding:16px;
}
.collapse-box summary{
  cursor:pointer;
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  color:var(--ink-strong);
  font-family:var(--mono);
  font-weight:900;
  letter-spacing:-.02em;
}
.collapse-box summary::-webkit-details-marker{display:none}
.collapse-box summary:before{content:"+";color:var(--acid);margin-right:4px}
.collapse-box[open] summary{margin-bottom:12px;padding-bottom:12px;border-bottom:1px dashed oklch(65% .018 175 / .16)}
.collapse-box[open] summary:before{content:"−"}
.collapse-box summary span{margin-left:auto;color:var(--muted);font-size:11px;font-weight:700}
.import-box .button-row{padding-left:0;padding-right:0;padding-bottom:0}
.create-box .field{margin-left:0;margin-right:0}
.hint{color:var(--dim);font-family:var(--mono);font-size:12px;line-height:1.5}
.table-shell{overflow:auto;max-height:560px;border-top:1px solid var(--line)}
table{width:100%;border-collapse:collapse;min-width:760px;font-size:13px}
th,td{padding:10px 11px;border-bottom:1px solid oklch(65% .018 175 / .14);vertical-align:middle}
th{
  position:sticky;
  top:0;
  z-index:1;
  background:oklch(10% .012 164);
  color:var(--muted);
  text-align:left;
  font-family:var(--mono);
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.1em;
}
tbody tr{transition:background .12s ease-out}
tbody tr.is-selected{background:oklch(60% .18 150 / .075)}
tbody tr.drag-hover{background:oklch(80% .16 180 / .13)}
.wallet-dragging tbody{cursor:crosshair;user-select:none}
.addr{font-family:var(--mono);white-space:nowrap}
.addr-link{color:var(--cyan);text-decoration:underline dotted oklch(79% .13 220 / .45)}
.addr-link:hover{color:var(--ink-strong)}
.num{font-family:var(--mono)}
.muted{color:var(--muted)}
.operations-panel{overflow:visible}
.tab-strip{
  display:flex;
  gap:12px;
  padding:16px 20px;
  border-bottom:1px solid var(--line);
  background:oklch(8% .01 164 / .36);
  overflow:auto;
}
.tab-btn{
  flex:0 0 auto;
  border:1px solid var(--line-blue);
  border-radius:0;
  background:oklch(17% .032 255 / .36);
  color:oklch(84% .04 255);
  padding:11px 16px;
  font-family:var(--mono);
  font-size:13px;
  font-weight:900;
  letter-spacing:.06em;
  box-shadow:inset 0 1px 0 oklch(100% 0 0 / .055),0 6px 16px oklch(0% 0 0 / .24);
}
.tab-btn:hover{border-color:var(--cyan);color:var(--ink-strong);transform:none}
.tab-btn.active{border-color:oklch(72% .16 126 / .68);background:oklch(36% .12 126 / .86);color:oklch(10% .01 164)}
.tab-page{display:none;position:relative;min-height:330px}
.tab-page.active{display:block}
.tab-layout{display:grid;grid-template-columns:minmax(240px,.42fr) minmax(0,1fr);gap:18px;padding:20px}
.contract-tab-layout{grid-template-columns:minmax(260px,.38fr) minmax(0,1fr)}
.tab-copy{
  border:1px solid var(--line);
  border-radius:0;
  background:oklch(8% .01 164 / .30);
  padding:18px;
  align-self:stretch;
}
.tab-copy span{font-family:var(--mono);color:var(--acid);font-size:12px;letter-spacing:.16em;text-transform:uppercase}
.tab-copy h3{margin:10px 0 10px;color:var(--ink-strong);font-size:28px;letter-spacing:-.05em;line-height:1.08}
.tab-copy p{font-size:13px}
.tab-form{
  border:1px solid var(--line);
  border-radius:0;
  background:oklch(9% .01 164 / .38);
  padding:2px 0 8px;
}
.tx-import-box{
  margin:16px 20px 8px;
  border:1px dashed oklch(79% .13 220 / .36);
  background:oklch(10% .02 220 / .24);
  padding:0 0 10px;
}
.tx-import-box .field{margin:14px 14px 8px}
.tx-import-box .button-row{padding:6px 14px 8px}
.import-tx-hint{margin:0 14px;color:var(--dim)}
.tx-import-policy{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  padding:0 14px;
}
.tx-import-policy .field{margin:0 0 8px}
.op-card{position:relative}
.accent-cyan .tab-copy span,.accent-cyan code{color:var(--cyan)}
.accent-red .tab-copy span{color:var(--red)}
.accent-red .tab-form,.accent-red .tab-copy{border-color:oklch(72% .16 27 / .28)}
.contract-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.contract-grid-common{grid-template-columns:minmax(0,1fr) 220px}
.contract-grid-abi{grid-template-columns:260px minmax(0,1fr)}
.mode-switch{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
  padding:16px 20px 4px;
}
.mode-btn{
  border:1px solid var(--line-blue);
  border-radius:0;
  background:oklch(15% .025 255 / .42);
  color:oklch(84% .04 255);
  padding:12px 14px;
  font-family:var(--mono);
  font-weight:950;
  letter-spacing:.06em;
  cursor:pointer;
  box-shadow:inset 0 1px 0 oklch(100% 0 0 / .055),0 6px 16px oklch(0% 0 0 / .24);
}
.mode-btn.active{
  border-color:oklch(72% .16 126 / .68);
  background:oklch(36% .12 126 / .86);
  color:oklch(10% .01 164);
}
.call-mode-panel{display:none}
.call-mode-panel.active{display:block}
.call-hint{margin:0 20px 10px}
.calldata-editor{
  margin:0 20px 12px;
  border:1px solid oklch(42% .025 250 / .55);
  background:oklch(7.5% .009 250);
  font-family:var(--mono);
}
.calldata-hex-preview{
  margin-top:8px;
  border:1px solid oklch(42% .025 250 / .55);
  background:oklch(6.5% .008 250);
  font-family:var(--mono);
}
.hex-preview-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:8px 10px;
  border-bottom:1px solid oklch(42% .025 250 / .42);
  color:var(--ink-strong);
  font-size:12px;
}
.hex-preview-head span{color:var(--acid);font-size:11px}
.hex-preview-body{
  max-height:180px;
  overflow:auto;
  padding:10px;
  color:oklch(78% .04 250);
  font-size:11px;
  line-height:1.85;
  word-break:break-all;
}
.hex-selector,.hex-word,.hex-tail{
  display:inline;
  padding:2px 3px;
  margin:0 2px 4px 0;
  border-radius:2px;
}
.hex-selector{
  color:var(--cyan);
  background:oklch(16% .05 220 / .36);
}
.hex-word em{
  color:var(--muted);
  font-style:normal;
  margin-right:4px;
  user-select:none;
}
.hex-word.is-matched{
  color:oklch(94% .16 126);
  background:oklch(24% .12 126 / .58);
  box-shadow:0 0 0 1px oklch(80% .18 126 / .55),0 0 18px oklch(80% .18 126 / .16);
}
.hex-word.is-self{
  color:oklch(92% .1 220);
  background:linear-gradient(90deg,oklch(24% .12 126 / .68),oklch(20% .08 220 / .58));
}
.hex-tail{
  color:var(--orange);
  background:oklch(24% .11 60 / .28);
}
.hex-preview-note{padding:10px;color:var(--muted);font-family:var(--mono);font-size:12px}
.hex-preview-note.bad{color:var(--red)}
.abi-decode-panel{
  margin:0 20px 12px;
  border:1px solid oklch(70% .11 220 / .42);
  background:oklch(8% .014 220 / .68);
  font-family:var(--mono);
}
.abi-decode-head{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:flex-start;
  padding:10px 12px;
  border-bottom:1px solid oklch(70% .11 220 / .26);
  color:var(--ink-strong);
}
.abi-decode-head b{display:block;font-size:13px}
.abi-decode-head code{font-size:11px;word-break:break-all}
.abi-source-pill{
  border:1px solid oklch(80% .18 126 / .5);
  color:var(--acid);
  padding:4px 7px;
  font-size:11px;
  white-space:nowrap;
}
.abi-param-row{
  display:block;
  padding:10px 12px;
  border-bottom:1px solid oklch(70% .11 220 / .18);
}
.abi-param-row:last-child{border-bottom:0}
.abi-param-title{
  display:flex;
  align-items:center;
  gap:6px;
  margin-bottom:6px;
  color:var(--ink-strong);
  font-size:12px;
  font-weight:950;
}
.abi-param-title span{
  border:1px solid oklch(70% .11 220 / .36);
  color:var(--muted);
  padding:2px 5px;
  font-size:10px;
  font-weight:700;
}
.abi-param-row input,.abi-param-row textarea{
  width:100%;
  background:oklch(9% .008 250);
  border:1px solid oklch(45% .025 250 / .72);
  color:var(--cyan);
  padding:9px 10px;
  font-family:var(--mono);
  font-size:12px;
}
.abi-param-row textarea{min-height:80px;resize:vertical}
.abi-param-row input.invalid,.abi-param-row textarea.invalid{border-color:var(--red);color:var(--red)}
.abi-tuple-group{
  margin:10px 0 0;
  border-left:3px solid oklch(70% .11 220 / .48);
  padding-left:10px;
}
.abi-decode-note{padding:10px 12px;color:var(--muted);font-size:12px}
.abi-decode-note.bad{color:var(--red)}
.calldata-editor-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 12px;
  border-bottom:1px solid oklch(42% .025 250 / .5);
  color:var(--ink-strong);
}
.calldata-editor-head b{font-size:13px;margin-right:8px}
.calldata-editor-head span{
  padding:4px 7px;
  background:oklch(3% 0 0);
  color:var(--acid);
  font-size:11px;
  white-space:nowrap;
}
.calldata-row{
  display:block;
  padding:10px 12px;
  border-bottom:1px solid oklch(42% .025 250 / .35);
}
.calldata-row.is-matched{
  background:linear-gradient(90deg,oklch(34% .12 126 / .26),oklch(10% .012 250));
  box-shadow:inset 4px 0 0 var(--acid);
}
.calldata-row.is-self{
  background:linear-gradient(90deg,oklch(38% .12 126 / .34),oklch(10% .012 250));
}
.calldata-row:last-child{border-bottom:0}
.calldata-row-title{
  display:flex;
  align-items:center;
  gap:6px;
  margin-bottom:6px;
  color:var(--ink-strong);
  font-size:12px;
  font-weight:900;
}
.calldata-row-title span{
  border:1px solid oklch(42% .025 250 / .65);
  padding:2px 5px;
  color:var(--muted);
  font-size:10px;
  font-weight:700;
}
.calldata-row-title .match-badge{
  border-color:oklch(80% .18 126 / .8);
  color:var(--acid);
  background:oklch(18% .07 126 / .5);
}
.calldata-row-title .self-badge{
  border-color:oklch(82% .12 220 / .78);
  color:var(--cyan);
  background:oklch(18% .06 220 / .45);
}
.calldata-input-line{
  display:flex;
  align-items:center;
  gap:6px;
}
.calldata-input-line input{
  flex:1;
  min-width:0;
  background:oklch(9% .008 250);
  border:1px solid oklch(45% .025 250 / .72);
  color:var(--cyan);
  padding:9px 10px;
  font-family:var(--mono);
  font-size:12px;
}
.calldata-input-line input:disabled{color:var(--acid);opacity:.9}
.calldata-input-line input.invalid{border-color:var(--red);color:var(--red)}
.mini-chip{
  border:1px solid oklch(52% .05 126 / .75);
  background:oklch(11% .018 126 / .45);
  color:var(--ink-strong);
  padding:8px 10px;
  font-family:var(--mono);
  font-weight:900;
  cursor:pointer;
  white-space:nowrap;
}
.mini-chip.ghost{
  border-color:oklch(42% .025 250 / .65);
  background:oklch(8% .008 250);
  color:var(--muted);
}
.calldata-editor-note{
  padding:10px 12px;
  color:var(--muted);
  font-family:var(--mono);
  font-size:12px;
}
.calldata-editor-note.bad{color:var(--red)}
code{font-family:var(--mono);color:var(--cyan)}
.logs{
  height:390px;
  overflow:auto;
  background:oklch(7% .008 164);
  padding:14px 18px;
  font-family:var(--mono);
  font-size:12px;
  line-height:1.62;
}
.log{border-bottom:1px dashed oklch(65% .018 175 / .16);padding:4px 0;white-space:pre-wrap;word-break:break-word;color:var(--muted)}
.log.tx{color:var(--cyan)}
.log.ok{color:var(--acid)}
.log.warn{color:var(--amber)}
.log.bad{color:var(--red)}
::-webkit-scrollbar{width:12px;height:12px}
::-webkit-scrollbar-track{background:oklch(8% .01 164)}
::-webkit-scrollbar-thumb{background:oklch(28% .035 164);border:2px solid oklch(8% .01 164)}
::-webkit-scrollbar-thumb:hover{background:oklch(38% .055 164)}

@media(min-width:1181px){
  .wallet-track-rail .wallet-track-list{max-height:none;overflow:visible}
  .nft-rank-rail .nft-rank-list{max-height:none;overflow:visible}
  .side-rail .nft-feed{max-height:none;overflow:visible}
  .side-rail .config-panel{position:static}
}
@media(max-width:1180px){
  html,body{height:auto;min-height:100%;overflow:auto}
  body{padding-left:18px;padding-right:18px;overflow-x:hidden}
  .app-shell{height:auto;min-height:100vh;grid-template-columns:1fr;grid-template-rows:auto;overflow:visible}
  .layout-panel-controls{grid-row:auto;flex-wrap:wrap;overflow:visible}
  .workspace-columns{grid-row:auto;display:grid;grid-template-columns:1fr;gap:24px;overflow:visible;padding-bottom:0}
  .layout-resize-handle{display:none}
  .config-panel{position:static}
  .wallet-track-rail{grid-column:auto;grid-row:auto;grid-template-columns:1fr;overflow:visible;padding-bottom:0}
  .nft-rank-rail{grid-column:auto;grid-row:auto;grid-template-columns:1fr;overflow:visible;padding-bottom:0}
  .side-rail{grid-column:auto;grid-row:auto;grid-template-columns:1fr;overflow:visible;padding-bottom:0}
  .main-stage{grid-column:auto;grid-row:auto;overflow:visible;padding-bottom:0}
  .risk-card{width:auto}
  .command-bar{position:relative;top:auto;align-items:flex-start;flex-direction:column}
}
@media(max-width:860px){
  body{padding-left:10px;padding-right:10px}
  body:after{height:38px;font-size:11px;letter-spacing:.16em;padding:0 14px;white-space:nowrap;overflow:hidden}
  .brand-block{align-items:flex-start;flex-direction:column;gap:12px}
  .brand-mark::after{font-size:38px;margin-left:0}
  h1{font-size:28px}
  .wallet-tools,.tab-layout,.contract-tab-layout,.contract-grid,.two,.group-tools,.tx-import-policy{grid-template-columns:1fr}
  .button-row .btn,.full-btn{width:100%;margin-left:0;margin-right:0}
  .metric.wide{grid-column:auto}
  .asset-metrics{grid-template-columns:1fr 1fr}
  .tab-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .tab-btn{width:100%}
}
@media(max-width:560px){
  .asset-metrics{grid-template-columns:1fr}
  .panel-head.large h2{font-size:24px}
  .tab-copy h3{font-size:24px}
}

.status-cell{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.native-cell,.token-cell{white-space:nowrap}

.author-x-btn {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: auto;
  border-color: rgba(90, 215, 255, 0.58);
  color: var(--cyan);
  text-decoration: none;
}
.author-x-btn:hover {
  border-color: var(--lime);
  color: var(--ink-strong);
}
.author-x-mark {
  display: inline-grid;
  place-items: center;
  width: 18px;
  height: 18px;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 16px;
  font-weight: 900;
  line-height: 1;
}
.author-x-text {
  font-size: 11px;
  letter-spacing: 0.08em;
}

.language-toggle {
  align-self: flex-start;
  min-width: 92px;
  border-color: rgba(140, 255, 0, 0.55);
  color: var(--lime);
  letter-spacing: 0.08em;
}

.vanity-status {
  margin-top: 12px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  background: oklch(8% .012 175 / .55);
}
.vanity-status.ok { color: var(--ok); border-color: oklch(76% .16 145 / .45); }
.vanity-status.warn { color: var(--lime); border-color: oklch(78% .18 125 / .45); }
.vanity-status.bad { color: var(--danger); border-color: oklch(65% .18 28 / .50); }

.nft-supply-line {
  margin-top: 5px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  color: var(--muted);
  font-size: 11px;
  font-family: var(--mono);
}
.nft-supply-line b { color: var(--text); font-weight: 900; }

.addr-inline{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.icon-btn.row-qr{height:24px;min-width:24px;padding:2px 6px;border-color:oklch(78% .18 150 / .32);color:var(--acid);line-height:1}
.icon-btn.row-qr:hover{background:oklch(74% .18 150 / .16)}
.qr-wallet-modal{width:min(420px, calc(100vw - 32px))}
.qr-card{display:grid;justify-items:center;gap:14px;padding:18px;border:1px solid var(--line);background:oklch(7% .01 164 / .72)}
.qr-card canvas{width:260px;height:260px;border:1px solid oklch(78% .18 150 / .28);background:#f4fff8;padding:8px;image-rendering:pixelated}
.qr-address{max-width:100%;word-break:break-all;font-family:var(--mono);font-size:13px;line-height:1.55;color:var(--cyan);text-align:center}

.nft-query-layout{grid-template-columns:minmax(260px,.34fr) minmax(0,1fr)}
.nft-query-form{grid-template-columns:minmax(220px,1fr) 160px 130px minmax(210px,.75fr)}
.nft-query-summary{margin:12px 0 10px}
.nft-query-results{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;max-height:520px;overflow:auto;padding:2px}
.nft-query-empty{grid-column:1/-1;border:1px dashed var(--line);padding:18px;color:var(--muted);font-size:13px}
.nft-query-card{display:grid;grid-template-columns:18px 72px minmax(0,1fr);gap:10px;align-items:center;border:1px solid var(--line);background:oklch(7% .01 164 / .62);padding:9px;cursor:pointer;min-width:0}
.nft-query-card.is-selected{border-color:oklch(78% .18 150 / .64);background:oklch(18% .08 150 / .32)}
.nft-query-thumb{width:72px;height:72px;border:1px solid var(--line);background:oklch(4% .01 164 / .92);display:grid;place-items:center;overflow:hidden;color:var(--muted);font-family:var(--mono);font-size:12px}
.nft-query-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.nft-query-main{min-width:0;display:grid;gap:3px}
.nft-query-main strong{font-family:var(--mono);font-size:16px;color:var(--ink-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nft-query-main em{font-style:normal;color:var(--cyan);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nft-query-main small{font-family:var(--mono);font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:1100px){.nft-query-form{grid-template-columns:1fr 1fr}.nft-query-layout{grid-template-columns:1fr}}

.theme-toggle {
  align-self: flex-start;
  min-width: 92px;
  border-color: rgba(255, 188, 74, 0.58);
  color: var(--amber);
  letter-spacing: 0.08em;
}

body.theme-light {
  color-scheme: light;
  --bg: oklch(97% .01 164);
  --bg-2: oklch(94% .012 164);
  --panel: oklch(99% .006 164);
  --panel-deep: oklch(95% .01 164);
  --panel-soft: oklch(96% .012 164 / .78);
  --ink: oklch(22% .024 164);
  --ink-strong: oklch(14% .025 164);
  --muted: oklch(42% .025 175);
  --dim: oklch(54% .02 175);
  --line: oklch(82% .018 164);
  --line-2: oklch(73% .028 164);
  --line-blue: oklch(62% .075 240 / .55);
  --acid: oklch(44% .16 132);
  --acid-2: oklch(50% .16 132);
  --cyan: oklch(46% .13 220);
  --amber: oklch(58% .15 78);
  --orange: oklch(54% .16 52);
  --purple: oklch(52% .14 305);
  --red: oklch(52% .18 27);
  --blue: oklch(48% .14 255);
  --shadow:0 18px 42px oklch(40% .025 164 / .14);
  background:
    radial-gradient(circle at 8% -6%,oklch(74% .15 126 / .13),transparent 34rem),
    linear-gradient(90deg,oklch(20% .02 164 / .055) 1px,transparent 1px),
    linear-gradient(0deg,oklch(20% .02 164 / .045) 1px,transparent 1px),
    var(--bg);
  background-size:auto,80px 80px,80px 80px,auto;
}
body.theme-light:after {
  background:oklch(98% .006 164 / .96);
  color:var(--acid);
  box-shadow:0 -12px 34px oklch(45% .025 164 / .16);
}
body.theme-light .command-bar {
  background:linear-gradient(180deg,oklch(99% .006 164 / .96),oklch(95% .01 164 / .88));
}
body.theme-light .risk-card {
  background:linear-gradient(90deg,oklch(98% .04 75 / .92),oklch(96% .035 75 / .78));
  color:oklch(31% .05 75);
}
body.theme-light .risk-card span{color:oklch(42% .035 75)}
body.theme-light .panel,
body.theme-light .op-card,
body.theme-light .tab-copy,
body.theme-light .tab-form,
body.theme-light .metric,
body.theme-light .wallet-compact-line,
body.theme-light .group-tools,
body.theme-light .collapse-box,
body.theme-light .status-line,
body.theme-light .net-pill,
body.theme-light .export-group-box,
body.theme-light .tx-import-box {
  background:linear-gradient(180deg,var(--panel),var(--panel-deep));
}
body.theme-light input,
body.theme-light select,
body.theme-light textarea {
  background:oklch(100% 0 0 / .94);
  color:var(--ink-strong);
  border-color:var(--line-2);
}
body.theme-light .btn,
body.theme-light .tab-btn,
body.theme-light .mode-btn,
body.theme-light .mini-chip,
body.theme-light .nft-icon-btn,
body.theme-light .nft-filter-one,
body.theme-light .nft-config-mint,
body.theme-light .nft-tx-link {
  background:oklch(99% .008 240 / .92);
  color:oklch(22% .03 240);
  box-shadow:none;
}
body.theme-light .btn.primary,
body.theme-light .tab-btn.active,
body.theme-light .mode-btn.active {
  background:oklch(80% .16 126 / .9);
  color:oklch(18% .025 164);
}
body.theme-light .btn.danger{background:oklch(95% .04 27 / .92);color:var(--red)}
body.theme-light th{background:oklch(94% .012 164);color:var(--muted)}
body.theme-light td, body.theme-light th{border-bottom-color:oklch(78% .018 164 / .7)}
body.theme-light tbody tr.is-selected{background:oklch(82% .16 150 / .18)}
body.theme-light .modal-backdrop{background:oklch(20% .015 164 / .42)}
body.theme-light .wallet-modal{background:linear-gradient(180deg,oklch(99% .006 164),oklch(94% .01 164));box-shadow:0 24px 80px oklch(40% .025 164 / .22)}
body.theme-light .nft-monitor-panel,
body.theme-light .nft-rank-panel,
body.theme-light .nft-rank-head,
body.theme-light .nft-rank-tabs,
body.theme-light .nft-rank-controls,
body.theme-light .nft-rank-list,
body.theme-light .nft-rank-thumb,
body.theme-light .nft-search-row,
body.theme-light .nft-stat-row div,
body.theme-light .nft-feed,
body.theme-light .nft-block,
body.theme-light .nft-block-head,
body.theme-light .nft-row,
body.theme-light .nft-thumb,
body.theme-light .nft-badge,
body.theme-light .group-chip,
body.theme-light .calldata-preview,
body.theme-light .calldata-input-line input,
body.theme-light .abi-param-row input,
body.theme-light .abi-param-row textarea {
  background:oklch(98% .008 250 / .9);
}
body.theme-light .logs,
body.theme-light .log-line,
body.theme-light .table-shell {
  background:oklch(99% .006 164 / .88);
}



.nft-listing-panel{
  margin:12px 0;
  border:1px solid rgba(153, 255, 0, .18);
  background:linear-gradient(135deg, rgba(153,255,0,.055), rgba(0,180,255,.035));
  padding:12px;
}
.nft-listing-head{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:flex-start;
  margin-bottom:10px;
}
.nft-listing-head span{
  color:var(--accent);
  letter-spacing:.18em;
  text-transform:uppercase;
  font-size:11px;
}
.nft-listing-head h4{margin:3px 0 4px;font-size:22px;color:var(--fg)}
.nft-listing-head p{margin:0;color:var(--muted);font-size:13px;line-height:1.55}
.listing-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;min-width:180px}
.listing-badges span{
  border:1px solid rgba(126,231,255,.35);
  color:var(--cyan);
  padding:5px 7px;
  background:rgba(0,0,0,.2);
  letter-spacing:.08em;
}
.nft-listing-form{grid-template-columns:minmax(120px,.7fr) 120px minmax(190px,1fr) minmax(170px,.9fr)}
.nft-listing-summary{margin-top:8px}
.nft-query-list-status{
  margin-top:6px;
  border-left:3px solid rgba(160,160,160,.55);
  padding:4px 6px;
  background:rgba(255,255,255,.035);
  color:var(--muted);
  font-size:12px;
  line-height:1.35;
}
.nft-query-list-status.ok{border-left-color:var(--accent);color:var(--accent)}
.nft-query-list-status.bad{border-left-color:var(--danger);color:var(--danger)}
.nft-query-list-status.warn{border-left-color:var(--amber);color:var(--amber)}
.nft-query-market-link{
  display:inline-flex;
  margin-top:6px;
  width:max-content;
  border:1px solid rgba(126,231,255,.35);
  color:var(--cyan);
  padding:3px 6px;
  text-decoration:none;
  font-size:12px;
}
.nft-query-market-link:hover{background:rgba(126,231,255,.12)}
@media (max-width: 980px){
  .nft-listing-head{display:block}
  .listing-badges{justify-content:flex-start;margin-top:8px}
  .nft-listing-form{grid-template-columns:1fr 1fr}
}
@media (max-width: 640px){.nft-listing-form{grid-template-columns:1fr}}


.opensea-mint-layout{grid-template-columns:minmax(260px,.36fr) minmax(0,1fr)}
.os-mint-form{grid-template-columns:minmax(240px,1fr) 120px 170px minmax(240px,1fr)}
.os-mint-form .field.full{grid-column:1 / -1}
.os-mint-info{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  padding:12px 20px 4px;
}
.os-mint-info div{
  border:1px solid var(--line);
  background:rgba(0,0,0,.18);
  padding:10px 12px;
  min-height:58px;
}
.os-mint-info span{display:block;color:var(--dim);font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:6px}
.os-mint-info strong{display:block;color:var(--ink-strong);font-size:16px;line-height:1.25;word-break:break-all}
.os-mint-info div.ok strong{color:var(--accent)}
.os-mint-info div.warn strong{color:var(--amber)}
.os-mint-info div.bad strong{color:var(--danger)}
.os-mint-summary{margin:6px 20px 10px;border-left:3px solid var(--line-blue);padding:8px 10px;background:rgba(255,255,255,.03)}
.os-mint-summary.ok{border-left-color:var(--accent);color:var(--accent)}
.os-mint-summary.warn{border-left-color:var(--amber);color:var(--amber)}
.os-mint-summary.bad{border-left-color:var(--danger);color:var(--danger)}
@media (max-width: 980px){.os-mint-form,.os-mint-info{grid-template-columns:1fr 1fr}.opensea-mint-layout{grid-template-columns:1fr}}
@media (max-width: 640px){.os-mint-form,.os-mint-info{grid-template-columns:1fr}}


/* Alt.fun trade modal */
.track-alt-token { border-color: rgba(156, 255, 0, .28); }
.track-alt-token:hover { color: var(--neon); border-color: rgba(156, 255, 0, .55); box-shadow: 0 0 0 1px rgba(156,255,0,.16) inset; }
.altfun-top-btn { white-space: nowrap; }
.altfun-modal { position: fixed; top: 108px; right: 24px; z-index: 9999; display: none; width: min(1080px, calc(100vw - 32px)); padding: 0; pointer-events: none; }
.altfun-modal.open { display: block; }
.altfun-modal.dragging { user-select: none; }
.altfun-panel { position: relative; width: 100%; max-height: min(760px, calc(100vh - 132px)); overflow: hidden; display: flex; flex-direction: column; border: 1px solid rgba(156, 255, 0, .35); background: linear-gradient(145deg, rgba(1, 13, 8, .98), rgba(3, 20, 18, .96)); box-shadow: 0 24px 80px rgba(0, 0, 0, .58), 0 0 0 1px rgba(0, 255, 204, .08) inset; color: var(--text); pointer-events: auto; }
.altfun-drag-handle { flex: 0 0 auto; min-height: 38px; display: flex; align-items: center; gap: 12px; padding: 10px 58px 9px 16px; border-bottom: 1px solid rgba(156,255,0,.22); background: rgba(0,0,0,.32); cursor: move; font: 900 12px/1 var(--mono); letter-spacing: .18em; color: var(--neon); }
.altfun-drag-handle small { color: var(--muted); letter-spacing: .08em; font-weight: 700; }
#altFunTradeBody { overflow: auto; padding: 22px; }
.altfun-close { position: absolute; right: 10px; top: 6px; width: 30px; height: 30px; border: 1px solid rgba(255,255,255,.12); background: rgba(0,0,0,.35); color: var(--muted); font-size: 22px; line-height: 1; cursor: pointer; z-index: 2; }
.altfun-close:hover { color: var(--neon); border-color: rgba(156,255,0,.45); }
.altfun-head { display: flex; gap: 16px; align-items: flex-start; justify-content: space-between; padding-right: 34px; }
.altfun-token-title { display: flex; gap: 14px; align-items: center; min-width: 0; }
.altfun-token-title img, .altfun-token-fallback { width: 54px; height: 54px; flex: 0 0 54px; border: 1px solid rgba(156,255,0,.25); background: #020403; object-fit: cover; display: grid; place-items: center; color: #fff; font-weight: 900; }
.altfun-head span { display: block; color: var(--neon); font: 700 12px/1 var(--mono); letter-spacing: .22em; margin-bottom: 8px; }
.altfun-head h3 { margin: 0; font-size: 28px; line-height: 1.1; }
.altfun-head h3 small { display: inline-block; color: var(--muted); font-size: 16px; font-weight: 600; margin-left: 8px; }
.altfun-head code { display: block; margin-top: 8px; color: var(--cyan); word-break: break-all; font-size: 13px; }
.altfun-layout { display: grid; grid-template-columns: minmax(0, 1fr) 290px; gap: 16px; align-items: start; }
.altfun-main { min-width: 0; }
.altfun-title-line { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.altfun-fav { display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-height: 28px; padding: 4px 8px; border: 1px solid rgba(156,255,0,.28); background: rgba(0,0,0,.25); color: var(--muted); font: 900 12px/1 var(--mono); cursor: pointer; }
.altfun-fav:hover, .altfun-fav.active { color: var(--neon); border-color: rgba(156,255,0,.62); background: rgba(156,255,0,.12); }
.altfun-fav span { display: inline; color: inherit; font: inherit; letter-spacing: 0; margin: 0; }
.altfun-chart-wrap { position: relative; margin: 18px 0 14px; border: 1px solid rgba(255,255,255,.09); background: rgba(0,0,0,.28); min-height: 148px; display: grid; place-items: center; padding: 12px; }
.altfun-chart { width: 100%; height: 140px; display: block; }
.altfun-chart-crosshair { position: absolute; top: 12px; bottom: 12px; width: 1px; background: rgba(0,255,204,.72); box-shadow: 0 0 12px rgba(0,255,204,.35); pointer-events: none; }
.altfun-chart-tip { position: absolute; top: 12px; transform: translateX(-50%); min-width: 132px; padding: 8px 10px; border: 1px solid rgba(0,255,204,.38); background: rgba(0,8,10,.92); color: var(--text); box-shadow: 0 10px 28px rgba(0,0,0,.38); pointer-events: none; font: 700 12px/1.45 var(--mono); z-index: 2; }
.altfun-chart-tip b, .altfun-chart-tip span { display: block; white-space: nowrap; }
.altfun-chart-tip span { color: var(--muted); }
.altfun-chart-empty, .altfun-loading, .altfun-error { width: 100%; padding: 34px 18px; text-align: center; color: var(--muted); border: 1px dashed rgba(255,255,255,.12); background: rgba(255,255,255,.025); }
.altfun-error { color: var(--red); border-color: rgba(255,77,166,.28); }
.altfun-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid rgba(255,255,255,.09); margin-bottom: 14px; }
.altfun-stats span { padding: 12px; color: var(--muted); border-right: 1px solid rgba(255,255,255,.08); font-size: 12px; }
.altfun-stats span:last-child { border-right: 0; }
.altfun-stats b { display: block; margin-top: 5px; color: var(--text); font-size: 16px; }
.altfun-stats b.buy { color: var(--neon); }
.altfun-stats b.sell { color: #ff4da6; }
.altfun-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.altfun-actions .btn { min-height: 34px; padding: 8px 12px; }
.altfun-note { margin: 12px 0 0; color: var(--muted); font-size: 13px; line-height: 1.65; }
.light .altfun-panel { background: linear-gradient(145deg, rgba(250,255,248,.98), rgba(234,255,245,.97)); box-shadow: 0 24px 80px rgba(20, 40, 28, .18); }
.light .altfun-drag-handle { background: rgba(255,255,255,.68); }
.light .altfun-chart-wrap { background: rgba(255,255,255,.65); }
.light .altfun-chart-tip { background: rgba(255,255,255,.95); color: var(--text); box-shadow: 0 10px 28px rgba(20,40,28,.18); }

.altfun-trade-card { margin-top: 14px; border: 1px solid rgba(156,255,0,.18); background: rgba(0,0,0,.22); padding: 14px; }
.altfun-ca-row, .altfun-wallet-row, .altfun-order-row { display: grid; grid-template-columns: 92px minmax(0, 1fr) auto; gap: 10px; align-items: center; margin-bottom: 12px; }
.altfun-ca-row label, .altfun-wallet-row label, .altfun-order-row label { color: var(--muted); font-size: 13px; }
.altfun-ca-row input, .altfun-wallet-row select, .altfun-order-row input { width: 100%; min-height: 38px; border: 1px solid rgba(255,255,255,.12); background: rgba(0,0,0,.28); color: var(--text); padding: 8px 10px; font: 700 13px/1.2 var(--mono); }
.altfun-balance-box { margin: 10px 0 12px; }
.altfun-balance-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid rgba(255,255,255,.09); }
.altfun-balance-grid span { padding: 10px 12px; min-width: 0; color: var(--muted); border-right: 1px solid rgba(255,255,255,.08); border-bottom: 1px solid rgba(255,255,255,.08); font-size: 12px; }
.altfun-balance-grid span:nth-child(3n) { border-right: 0; }
.altfun-balance-grid span:nth-last-child(-n+3) { border-bottom: 0; }
.altfun-balance-grid b { display: block; margin-top: 5px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 15px; }
.altfun-status { min-height: 22px; margin-top: 10px; color: var(--muted); font: 700 12px/1.5 var(--mono); word-break: break-word; }
.altfun-status.ok { color: var(--neon); }
.altfun-status.warn { color: var(--yellow); }
.altfun-status.bad { color: var(--red); }

.altfun-quote { margin: -4px 0 10px 102px; min-height: 22px; color: var(--muted); font: 700 12px/1.55 var(--mono); word-break: break-word; }
.altfun-quote.ok { color: var(--neon); }
.altfun-quote.warn { color: var(--yellow); }
.altfun-quote.bad { color: var(--red); }
.altfun-loading.compact, .altfun-error.compact { padding: 12px; text-align: left; }
.altfun-sell-presets .btn { border-color: rgba(255,77,166,.45); color: #ff9acb; }
.light .altfun-trade-card { background: rgba(255,255,255,.62); }
.light .altfun-ca-row input, .light .altfun-wallet-row select, .light .altfun-order-row input { background: rgba(255,255,255,.75); }
.altfun-side-slot { min-width: 0; }
.altfun-side { position: sticky; top: 0; max-height: calc(100vh - 210px); overflow: auto; border: 1px solid rgba(0,255,204,.16); background: rgba(0,0,0,.24); }
.altfun-side-head { padding: 12px; border-bottom: 1px solid rgba(255,255,255,.08); }
.altfun-side-head span { display: block; color: var(--neon); font: 900 11px/1 var(--mono); letter-spacing: .16em; margin-bottom: 7px; }
.altfun-side-head b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.altfun-side-section { padding: 10px; border-bottom: 1px solid rgba(255,255,255,.07); }
.altfun-side-section:last-child { border-bottom: 0; }
.altfun-side-title { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; color: var(--muted); font: 800 12px/1 var(--mono); }
.altfun-side-title em { color: var(--neon); font-style: normal; }
.altfun-side-empty { padding: 12px; color: var(--muted); border: 1px dashed rgba(255,255,255,.11); font-size: 12px; line-height: 1.55; }
.altfun-side-token { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto 30px; gap: 8px; align-items: center; padding: 8px 0; border-bottom: 1px solid rgba(255,255,255,.06); }
.altfun-side-token:last-child { border-bottom: 0; }
.altfun-side-avatar { position: relative; width: 34px; height: 34px; display: grid; place-items: center; overflow: hidden; border: 1px solid rgba(255,255,255,.12); background: #000; color: #fff; font: 900 11px/1 var(--mono); }
.altfun-side-avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; }
.altfun-side-avatar i { position: relative; z-index: 0; font-style: normal; }
.altfun-side-name { min-width: 0; padding: 0; border: 0; background: transparent; color: var(--text); text-align: left; cursor: pointer; }
.altfun-side-name:hover b { color: var(--neon); }
.altfun-side-name b, .altfun-side-name small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.altfun-side-name b { font: 900 13px/1.2 var(--mono); }
.altfun-side-name small { margin-top: 3px; color: var(--muted); font-size: 11px; }
.altfun-side-bal { max-width: 88px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--cyan); font: 800 11px/1 var(--mono); }
.altfun-side-token .altfun-fav { width: 28px; min-height: 28px; padding: 0; }
.light .altfun-side { background: rgba(255,255,255,.58); }
@media (max-width: 980px) {
  .altfun-modal { width: calc(100vw - 24px); }
  .altfun-layout { grid-template-columns: 1fr; }
  .altfun-side { position: static; max-height: 280px; }
}
@media (max-width: 720px) {
  .altfun-modal { top: 82px; right: 12px; width: calc(100vw - 24px); }
  #altFunTradeBody { padding: 18px; }
  .altfun-head { flex-direction: column; padding-right: 30px; }
  .altfun-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .altfun-stats span:nth-child(2n) { border-right: 0; }
  .altfun-ca-row, .altfun-wallet-row, .altfun-order-row { grid-template-columns: 1fr; }
  .altfun-quote { margin-left: 0; }
  .altfun-balance-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .altfun-balance-grid span:nth-child(3n) { border-right: 1px solid rgba(255,255,255,.08); }
  .altfun-balance-grid span:nth-child(2n) { border-right: 0; }
}

