
: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{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;
}
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:1880px;
  margin:0 auto;
  display:grid;
  grid-template-columns:minmax(520px,.72fr) minmax(760px,1fr);
  gap:26px;
}
.command-bar{
  grid-column:1/-1;
  min-height:118px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  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)}
.side-rail{display:grid;gap:24px;align-content:start}
.main-stage{display:grid;gap:24px}
.panel{
  border:1px solid var(--line);
  border-radius:0;
  background:linear-gradient(180deg,var(--panel),var(--panel-deep));
  box-shadow:none;
  overflow:hidden;
}
.config-panel{
  position:sticky;
  top:142px;
  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-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-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{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}
.nft-config-mint{border-color:oklch(78% .17 145 / .45);background:oklch(24% .08 145 / .55);color:var(--acid)}
.nft-filter-one:hover{border-color:var(--red);color:var(--ink-strong)}
.nft-config-mint:hover{border-color:var(--acid);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}
.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;gap:6px;margin-left:auto}
.wallet-compact-actions .btn{height:26px;padding:4px 8px;font-size:10px;box-shadow:none}
.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:hidden}
.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(max-width:1180px){
  body{padding-left:18px;padding-right:18px}
  .app-shell{grid-template-columns:1fr}
  .config-panel{position:static}
  .side-rail{grid-template-columns:1fr}
  .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}

.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}

