:root{
  --bg:#05070d;
  --blob-1:#6366f1;--blob-2:#ec4899;--blob-3:#06b6d4;--blob-4:#8b5cf6;
  --indigo:#6366f1;--pink:#ec4899;--cyan:#06b6d4;--violet:#8b5cf6;
  --glass:rgba(18,18,32,.55);--glass-hi:rgba(255,255,255,.06);--line:rgba(255,255,255,.12);--line-hi:rgba(255,255,255,.22);
  --tx:#F5F6FA;--mut:#9CA0B4;--ok:#22E38B;--warn:#F5A623;--bad:#FF4D6D;
  --g-primary:linear-gradient(120deg,var(--indigo),var(--violet) 60%,var(--pink));
  --g-accent:linear-gradient(120deg,var(--cyan),var(--indigo));
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --sans:Inter,system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  --radius:16px;--nav-ms:140ms;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--tx);font:14px/1.5 var(--sans);overflow-x:hidden;position:relative}

/* ===== animated mesh gradient background ===== */
.mesh-bg{position:fixed;inset:-20%;z-index:0;filter:blur(60px) saturate(1.4);pointer-events:none}
.blob{position:absolute;width:55vw;height:55vw;border-radius:50%;mix-blend-mode:screen;opacity:.6;will-change:transform}
.b1{background:radial-gradient(circle at center,var(--blob-1),transparent 60%);top:-10%;left:-5%;animation:drift1 18s ease-in-out infinite}
.b2{background:radial-gradient(circle at center,var(--blob-2),transparent 60%);top:10%;right:-10%;animation:drift2 22s ease-in-out infinite}
.b3{background:radial-gradient(circle at center,var(--blob-3),transparent 60%);bottom:-15%;left:15%;animation:drift3 20s ease-in-out infinite}
.b4{background:radial-gradient(circle at center,var(--blob-4),transparent 60%);bottom:5%;right:10%;animation:drift4 26s ease-in-out infinite}
@keyframes drift1{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(20vw,10vh) scale(1.15)}66%{transform:translate(8vw,25vh) scale(.9)}}
@keyframes drift2{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(-18vw,15vh) scale(.95)}66%{transform:translate(-8vw,-12vh) scale(1.2)}}
@keyframes drift3{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(15vw,-15vh) scale(1.1)}66%{transform:translate(-10vw,-8vh) scale(.95)}}
@keyframes drift4{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(-12vw,-18vh) scale(1.15)}66%{transform:translate(10vw,10vh) scale(.9)}}
.grain{position:fixed;inset:0;z-index:0;opacity:.05;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
@media (prefers-reduced-motion:reduce){.blob{animation:none}}

a{color:#c7cdff;text-decoration:none}
h1{margin:0;font-weight:800;font-size:24px;letter-spacing:-.01em}
h3{margin:0;font-size:15px;font-weight:700}
h4{font-size:11px;letter-spacing:.12em;color:var(--mut);text-transform:uppercase;margin:14px 0 8px;font-weight:700}
.mono{font-family:var(--mono);font-size:.9em}.muted{color:var(--mut)}.wrap{overflow-wrap:anywhere}
.stack>*+*{margin-top:12px}.row{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.grow{flex:1;min-width:0}
.loading{padding:40px;text-align:center;color:var(--mut)}

.icon{width:1em;height:1em;display:inline-block;vertical-align:-.15em;flex:none}
.ico{display:inline-flex;width:18px;height:18px;color:#b9beea}

input,select,textarea{font:inherit;color:var(--tx);background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:42px;width:100%;outline:none;transition:.15s;backdrop-filter:blur(6px)}
input:focus,select:focus,textarea:focus{border-color:var(--indigo);box-shadow:0 0 0 3px rgba(99,102,241,.25)}
.btn{font:inherit;font-weight:600;color:var(--tx);background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:12px;padding:9px 16px;min-height:42px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;transition:.15s;backdrop-filter:blur(6px)}
.btn:hover{border-color:var(--line-hi);background:rgba(255,255,255,.1)}
.btn.primary{background:var(--g-primary);border:0;color:#fff;box-shadow:0 6px 24px rgba(99,102,241,.35)}
.btn.primary:hover{filter:brightness(1.1);box-shadow:0 8px 30px rgba(99,102,241,.5)}
.btn.danger{color:#ffb3c1;border-color:rgba(255,77,109,.4)}
.btn.danger:hover{background:rgba(255,77,109,.15);border-color:var(--bad)}
.btn.sm{min-height:34px;padding:6px 12px;font-size:12.5px;border-radius:9px}
.btn.block{width:100%}.icon-btn{color:var(--tx);background:none;border:0;min-width:40px;min-height:40px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;transition:.12s}
.icon-btn:hover{background:rgba(255,255,255,.08)}
.lbl{display:block;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin-bottom:5px;font-weight:700}
.hint{display:block;color:var(--mut);font-size:12px;margin-top:4px}
.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:end}
.form-err{color:#ff8fa3;min-height:18px;font-size:13px}

/* ===== layout — no permanent sidebar; content is always full-width ===== */
.app{position:relative;z-index:1}
.main{min-width:0;position:relative;z-index:1}
.ticker{overflow:hidden;white-space:nowrap;background:rgba(0,0,0,.35);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);height:32px;display:flex;align-items:center}
.ticker-track{display:inline-flex;animation:tick 32s linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
.ticker-item{padding:0 20px;font:600 11px var(--mono);letter-spacing:.03em;color:#d7d9ea;display:inline-flex;align-items:center;gap:8px}
.ticker-dot{color:var(--cyan)}
@keyframes tick{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:11px;padding:12px 22px;background:rgba(5,7,13,.55);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}
.topbar input{flex:1;max-width:440px}
.chain-filter{width:auto;min-width:140px}
.user{color:var(--mut);font-weight:600}
.bar-title{font-weight:700;letter-spacing:.06em;flex:1}
.back{padding:0 10px;color:var(--tx);display:flex;align-items:center}
.save{font-size:12px;color:var(--mut);white-space:nowrap;display:flex;gap:8px;align-items:center;margin-left:auto;padding:6px 14px;border-radius:20px;background:rgba(255,255,255,.05);border:1px solid var(--line)}
.save[data-state=saved]{color:var(--ok);border-color:rgba(34,227,139,.4)}
.save[data-state=saving],.save[data-state=typing],.save[data-state=retrying]{color:var(--cyan)}
.save[data-state=failed],.save[data-state=offline],.save[data-state=conflict]{color:var(--bad);border-color:rgba(255,77,109,.4)}
.sv-short{display:none}.sv-action{font:inherit;font-size:11px;background:rgba(255,255,255,.08);color:var(--tx);border:1px solid var(--line);border-radius:6px;padding:3px 9px;cursor:pointer}
#view{padding:24px 28px 50px}
.page{max-width:1240px}
.page-head{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:18px}
.mob{display:none}.tabbar{display:none}

/* ===== full-screen overlay nav menu — instant, GPU-only transitions ===== */
.nav-menu{
  position:fixed;inset:0;z-index:500;
  background:rgba(6,7,14,.74);backdrop-filter:blur(30px) saturate(1.3);
  opacity:0;visibility:hidden;transform:scale(1.015);
  transition:opacity var(--nav-ms) ease,transform var(--nav-ms) ease,visibility 0s linear var(--nav-ms);
  will-change:opacity,transform;
  display:flex;flex-direction:column;
}
.nav-menu.open{
  opacity:1;visibility:visible;transform:scale(1);
  transition:opacity var(--nav-ms) ease,transform var(--nav-ms) ease,visibility 0s linear 0s;
}
.nav-menu-close{position:absolute;top:18px;right:18px;z-index:2;width:42px;height:42px;border-radius:50%;
  background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--tx);cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:.12s}
.nav-menu-close:hover{background:rgba(255,255,255,.14);border-color:var(--line-hi)}
.nav-menu-inner{max-width:460px;width:100%;margin:0 auto;padding:60px 26px 40px;display:flex;flex-direction:column;
  height:100%;overflow-y:auto}
.nav-menu .brand{display:flex;gap:12px;align-items:center;padding:0 4px 22px;border-bottom:1px solid var(--line);margin-bottom:16px}
.nav-menu .brand-ico{width:42px;height:42px;border-radius:13px;background:var(--g-primary);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;color:#fff;box-shadow:0 4px 20px rgba(99,102,241,.5)}
.nav-menu .brand-name{font-weight:800;letter-spacing:.08em;font-size:16px}
.nav-menu .brand-sub{font-size:9.5px;letter-spacing:.16em;color:var(--mut);margin-top:2px}
.nav-list{flex:1}
.nav-item{display:flex;gap:14px;align-items:center;padding:13px 14px;border-radius:12px;color:#dde0ee;cursor:pointer;margin-bottom:3px;font-weight:600;font-size:14.5px;transition:.12s}
.nav-item:hover{background:rgba(255,255,255,.07)}
.nav-item.active{background:linear-gradient(90deg,rgba(99,102,241,.3),rgba(236,72,153,.1));color:#fff;box-shadow:inset 3px 0 0 var(--indigo)}
.nav-item .ico{color:#a8adf0;width:20px;height:20px}
.nav-item.active .ico{color:#fff}
.nav-soon{opacity:.4}
.soon{margin-left:auto;font-size:8.5px;letter-spacing:.1em;color:var(--mut);text-transform:uppercase;background:rgba(255,255,255,.06);padding:2px 6px;border-radius:5px}
.nav-sep{height:1px;background:var(--line);margin:12px 4px}
.nav-foot{border-top:1px solid var(--line);padding-top:12px;display:grid;gap:6px;margin-top:10px}
.nav-foot button{font:inherit;font-weight:600;text-align:left;background:rgba(255,255,255,.04);border:1px solid var(--line);color:#c7cad9;padding:11px 14px;border-radius:12px;cursor:pointer;display:flex;align-items:center;gap:12px;font-size:13.5px}
.nav-foot button:hover{border-color:var(--pink);color:#fff}
.menu-toggle{position:relative}
.menu-toggle .ico{transition:transform var(--nav-ms) ease}

/* ===== glass panels ===== */
.panel{position:relative;background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;min-width:0;
  backdrop-filter:blur(18px) saturate(1.2);box-shadow:0 12px 40px rgba(0,0,0,.35)}
.panel::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--g-primary);border-radius:var(--radius) var(--radius) 0 0;opacity:.8}
.panel-h{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--mut);margin-bottom:10px;font-weight:700}

.stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:18px}
.stat{position:relative;background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);padding:16px 14px;
  backdrop-filter:blur(18px);box-shadow:0 10px 30px rgba(0,0,0,.3);transition:.2s}
.stat:hover{transform:translateY(-3px);border-color:var(--line-hi)}
.stat-v{font:800 27px var(--mono);background:var(--g-accent);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat-l{font-size:10px;letter-spacing:.1em;color:var(--mut);font-weight:600;margin-top:2px}

.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.li{display:flex;gap:8px;align-items:center;justify-content:space-between;padding:9px 2px;border-top:1px solid var(--line);flex-wrap:wrap}.li:first-child{border-top:0}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--mut);margin-right:7px;box-shadow:0 0 6px currentColor}
.dot.ok{background:var(--ok);color:var(--ok)}.dot.warn{background:var(--warn);color:var(--warn)}.dot.bad{background:var(--bad);color:var(--bad)}
.pill{display:inline-block;font:600 10.5px var(--mono);letter-spacing:.04em;padding:3px 9px;border-radius:8px;border:1px solid var(--line);background:rgba(255,255,255,.05);color:#c7cad9}
.st-active,.st-investigating{color:#b9c3ff;border-color:rgba(99,102,241,.5);background:rgba(99,102,241,.12)}
.st-completed{color:#8ff5c4;border-color:rgba(34,227,139,.4);background:rgba(34,227,139,.1)}
.st-archived{color:var(--mut)}
.pr-high{color:#ffcf8a;border-color:rgba(245,166,35,.45);background:rgba(245,166,35,.1)}
.pr-critical{color:#fff;background:linear-gradient(120deg,var(--bad),var(--pink));border:0}
.lab-observed{color:#a8c8ff;border-color:rgba(6,182,212,.4)}
.lab-derived,.lab-potential{color:#ffcf8a;border-color:rgba(245,166,35,.4)}
.pill-attr,.lab-attributed{color:#7ee8ee;border-color:rgba(6,182,212,.45);background:rgba(6,182,212,.1)}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{background:rgba(99,102,241,.16);border:1px solid rgba(99,102,241,.4);border-radius:14px;padding:4px 12px;font-size:12px;font-weight:500}
.banner{border:1px solid var(--line);background:rgba(255,255,255,.04);border-radius:10px;padding:10px 14px;font-size:13px}
.banner.warn{border-color:rgba(245,166,35,.5);color:#ffcf8a;background:rgba(245,166,35,.08)}
.banner.bad{border-color:rgba(255,77,109,.5);color:#ff9aab;background:rgba(255,77,109,.08)}
.note-line{color:var(--mut);font-size:12.5px}
.state{text-align:center;padding:38px 18px;border:1px dashed var(--line);border-radius:var(--radius);background:rgba(255,255,255,.03)}
.state h3{margin-bottom:6px}.state p{margin:0 0 14px;color:var(--mut)}.state.err h3{color:var(--warn)}.state .row{justify-content:center}
.tabs{display:flex;gap:3px;border-bottom:1px solid var(--line);margin:16px 0;overflow-x:auto}
.tab{font:inherit;font-weight:600;background:none;border:0;border-bottom:2px solid transparent;color:var(--mut);padding:11px 16px;cursor:pointer;white-space:nowrap}
.tab.active{color:#fff;border-color:var(--indigo)}
.tbl{width:100%;border-collapse:collapse}
.tbl th{text-align:left;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);padding:8px;border-bottom:1px solid var(--line);font-weight:700}
.tbl td{padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.kv{display:grid;grid-template-columns:minmax(120px,220px) minmax(0,1fr);gap:8px 16px;margin:0}
.kv dt{color:var(--mut);text-transform:capitalize}.kv dd{margin:0;min-width:0}
.kv-json pre{max-height:260px;overflow:auto;background:rgba(0,0,0,.4);padding:10px;border-radius:8px;font-size:12px;white-space:pre-wrap}
.kv-list{display:grid;gap:4px}

.avatar{display:inline-flex;flex:none;border-radius:8px;overflow:hidden;box-shadow:0 0 0 2px rgba(0,0,0,.4)}
.addr-wrap{display:inline-flex;align-items:center;gap:7px;flex-wrap:wrap;max-width:100%}
.addr{font:inherit;color:var(--tx);background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:12px;padding:4px 10px 4px 5px;display:inline-flex;gap:8px;align-items:center;cursor:pointer;min-height:34px}
.addr:hover{border-color:var(--cyan)}
.ent-plus{width:22px;height:22px;min-height:0;border-radius:50%;border:1px dashed var(--line);background:rgba(255,255,255,.05);color:var(--mut);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.ent-plus:hover{border-color:var(--cyan);color:var(--cyan)}
.cbadge{font:700 9.5px var(--mono);letter-spacing:.03em;padding:3px 7px;border-radius:6px}
.cbadge[data-chain=ethereum]{background:linear-gradient(120deg,#37437a,#4d5fc2);color:#dbe1ff}
.cbadge[data-chain=base]{background:linear-gradient(120deg,#0c2f66,#1e5fd6);color:#bfe0ff}
.cbadge[data-chain=arbitrum]{background:linear-gradient(120deg,#0e3350,#1791d6);color:#bdeeff}
.cbadge[data-chain=polygon]{background:linear-gradient(120deg,#3a1f66,#8b3fe0);color:#eadcff}
.cbadge[data-chain=bnb]{background:linear-gradient(120deg,#4a3b0d,#e6b800);color:#3a2c00}
.cbadge[data-chain=solana]{background:linear-gradient(120deg,#0d3d2f,#14e0a0);color:#03130c}
.cbadge[data-chain=bitcoin]{background:linear-gradient(120deg,#4a2f0c,#f7931a);color:#2a1700}
.cbadge[data-chain=tron]{background:linear-gradient(120deg,#4a1616,#ff5a4d);color:#2a0808}
.ctag{display:inline-flex;gap:7px;align-items:center;color:var(--mut);font-size:12px}

.xf{position:relative;background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);padding:13px 15px;backdrop-filter:blur(14px)}
.xf::before{content:'';position:absolute;top:0;left:0;bottom:0;width:3px;background:var(--g-accent);border-radius:var(--radius) 0 0 var(--radius)}
.xf-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:space-between;color:var(--mut);font-size:12px}
.xf-amt{font:700 20px var(--mono);margin:8px 0}
.xf-unit{color:var(--cyan);font-size:.75em}
.xf-arrow{color:var(--mut);padding:0 14px;display:inline-flex}
.xf-meta{font-size:12.5px;color:var(--mut);margin-top:5px}
.xf-foot{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-top:10px;font-size:12.5px}

.title-input{font-size:20px;font-weight:700;background:transparent;border:1px solid transparent;padding:7px 9px;border-radius:10px}
.title-input:hover,.title-input:focus{background:rgba(255,255,255,.05);border-color:var(--line)}
.fstat{display:block;font-size:11.5px;color:var(--mut);min-height:16px;margin-top:4px}
.fstat.ok{color:var(--ok)}.fstat.saving{color:var(--cyan)}.fstat.bad{color:var(--bad)}
.card{position:relative;background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);padding:14px;backdrop-filter:blur(14px)}
.tl{list-style:none;margin:0;padding:0 0 0 16px;border-left:2px solid var(--line)}
.tl li{position:relative;padding:0 0 16px 14px}
.tl li::before{content:'';position:absolute;left:-21px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--g-primary)}
.tl .t{font:11.5px var(--mono);color:var(--mut)}
.steps{display:flex;gap:7px;margin-bottom:18px;flex-wrap:wrap}
.step{flex:1;min-width:80px;text-align:center;padding:8px;border-bottom:2px solid var(--line);color:var(--mut);font-size:12px}
.step.on{color:#fff;border-color:var(--indigo)}
.step.done{color:var(--ok);border-color:var(--ok)}
.scam-list{max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:10px;margin-top:9px;padding:5px 9px;background:rgba(0,0,0,.2)}
.scam-row{display:flex;gap:10px;align-items:center;padding:9px 3px;min-height:40px;cursor:pointer}
.tag-btn{font:inherit;font-size:12px;border:1px solid var(--line);background:rgba(255,255,255,.05);color:var(--mut);border-radius:14px;padding:4px 12px;cursor:pointer}
.tag-btn.on{color:#fff;border-color:var(--indigo);background:rgba(99,102,241,.25)}

.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;position:relative;z-index:1}
.login-card{width:100%;max-width:400px;background:var(--glass);border:1px solid var(--line);border-radius:24px;padding:34px 28px;display:grid;gap:14px;text-align:center;
  backdrop-filter:blur(24px) saturate(1.3);box-shadow:0 20px 80px rgba(99,102,241,.25)}
.login-card img,.login-card .brand-ico{width:58px;height:58px;margin:0 auto;border-radius:16px}
.brand-big{font-size:24px;font-weight:800;letter-spacing:.12em;color:#E8EAF2}
.login-card .brand-sub{font-size:10.5px;letter-spacing:.2em}
.login-hi{color:#c7cad9;margin:6px 0;font-size:13px}

.modal-back{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:16px}
.modal{background:var(--glass);border:1px solid var(--line);border-radius:20px;width:100%;max-width:480px;max-height:90vh;display:flex;flex-direction:column;backdrop-filter:blur(26px) saturate(1.3);box-shadow:0 24px 80px rgba(0,0,0,.5)}
.modal.wide{max-width:660px}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:10px 10px 10px 18px;border-bottom:1px solid var(--line)}
.modal-body{padding:16px 18px;overflow:auto}
.modal.palette{max-width:640px;align-self:flex-start;margin-top:10vh}
.modal.palette .modal-head{display:none}
.pal-input{border:0;border-bottom:1px solid var(--line);border-radius:0;font-size:16px;padding:16px;background:transparent}
.pal-list{max-height:52vh;overflow:auto;padding:8px}
.pal-item{font:inherit;color:var(--tx);width:100%;text-align:left;background:none;border:0;border-radius:10px;padding:10px 12px;display:flex;gap:11px;cursor:pointer;min-height:42px;align-items:center}
.pal-item.sel,.pal-item:hover{background:rgba(99,102,241,.18)}
.pal-k{font:700 10px var(--mono);color:var(--cyan);width:86px;flex:none;text-transform:uppercase}
.am-head{display:flex;gap:14px;align-items:center;margin-bottom:14px}
.am-short{font-size:16px;font-weight:600}
.full{background:rgba(0,0,0,.4);border:1px solid var(--line);border-radius:10px;padding:9px;overflow-wrap:anywhere;user-select:all;margin:5px 0 14px;font-size:12.5px}
.menu-list{display:grid;gap:7px}.menu-list .btn{justify-content:flex-start;width:100%}
.toasts{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);z-index:200;display:grid;gap:7px;width:max-content;max-width:92vw}
.toast{background:var(--glass);border:1px solid var(--line);border-radius:12px;padding:10px 16px;backdrop-filter:blur(20px);box-shadow:0 10px 34px rgba(0,0,0,.5)}
.toast.ok{border-color:rgba(34,227,139,.5)}.toast.err{border-color:rgba(255,77,109,.55)}.toast.warn{border-color:rgba(245,166,35,.55)}

.graph-wrap{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:14px;align-items:start}
.graph-box{height:66vh;min-height:380px;background:rgba(0,0,0,.35);border:1px solid var(--line);border-radius:var(--radius)}
.graph-detail{max-height:66vh;overflow:auto}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--mut)}
.legend i{display:inline-block;width:10px;height:10px;border:2px solid var(--indigo);border-radius:50%;margin-right:6px;vertical-align:-1px}
.legend i.dash{border-style:dashed;border-color:var(--mut)}
.legend i.sq{border-radius:3px;border-color:var(--warn)}
.legend i.dm{border-radius:3px;transform:rotate(45deg);border-color:var(--cyan)}
.legend i.hx{border-color:var(--ok)}

.report-page{display:none}
@media print{
  .mesh-bg,.grain,.nav-menu,.topbar,.tabbar,.save,.toasts,.mob,.ticker{display:none!important}
  #view{padding:0!important}
  .report-page{display:block!important;color:#000;background:#fff;font:12px/1.5 Georgia,serif;max-width:none;padding:0}
  .report-page h1,.report-page h2,.report-page h3{color:#000;font-family:Inter,sans-serif}
  .report-page h1{font-size:20px;border-bottom:2px solid #000;padding-bottom:6px}
  .report-page h2{font-size:15px;margin-top:22px;border-bottom:1px solid #999;padding-bottom:3px}
  .report-page .r-meta{color:#444;font-size:11px}
  .report-page .r-pill{display:inline-block;border:1px solid #000;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:700;font-family:monospace}
  .report-page .r-item{border-bottom:1px solid #ddd;padding:8px 0;page-break-inside:avoid}
  .report-page table{page-break-inside:avoid}
  .report-page img{page-break-inside:avoid;max-width:100%}
  .report-page a{color:#000;text-decoration:underline}
}
.rv-toolbar{padding:14px 20px;background:var(--glass);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center}
.report-preview{max-width:800px;margin:24px auto;background:#fff;color:#111;padding:40px;font:13px/1.6 Georgia,serif;border-radius:10px}
.report-preview h1{color:#000;font:20px/1.3 Inter,sans-serif;border-bottom:2px solid #000;padding-bottom:8px;margin:0 0 4px}
.report-preview h2{color:#000;font:15px/1.3 Inter,sans-serif;margin:24px 0 8px;border-bottom:1px solid #999;padding-bottom:4px}
.report-preview .r-meta{color:#555;font-size:11px;font-family:Inter,sans-serif}
.report-preview .r-pill{display:inline-block;border:1px solid #000;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:700;font-family:monospace;margin-right:4px}
.report-preview .r-item{border-bottom:1px solid #ddd;padding:10px 0}
.report-preview table{width:100%;border-collapse:collapse}
.report-preview img{max-width:100%;border-radius:4px}
.report-preview p{margin:6px 0}

@media (max-width:1100px){.stats{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){
  .desk{display:none!important}
  .mob{display:inline-flex}
  .topbar{padding:6px 10px}#view{padding:16px 14px 100px}
  .ticker-item{padding:0 14px;font-size:9.5px}
  .sv-long{display:none}.sv-short{display:inline}
  .tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;bottom:0;left:0;right:0;z-index:30;
    background:var(--glass);backdrop-filter:blur(20px);border-top:1px solid var(--line)}
  .tabbar a,.tabbar button{font:inherit;font-size:10.5px;background:none;border:0;color:var(--mut);display:grid;place-items:center;gap:2px;padding:9px 0;min-height:58px;cursor:pointer}
  .tabbar .ico{width:19px;height:19px;margin:0 auto}
  .tabbar .active{color:var(--cyan)}.tabbar .active .ico{color:var(--cyan)}
  .modal-back{align-items:flex-end;padding:0}
  .modal{max-width:none;border-radius:20px 20px 0 0;max-height:88vh}
  .modal.palette{align-self:flex-start;margin-top:0;border-radius:0 0 20px 20px}
  .graph-wrap{grid-template-columns:1fr}.graph-box{height:56vh;min-height:320px}.graph-detail{max-height:none}
  .nav-menu-inner{padding:56px 20px 30px}
}
@media (max-width:700px){
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .kv{grid-template-columns:1fr;gap:0}.kv dd{margin-bottom:9px}
  .btn,.tab{min-height:46px}input,select,textarea{font-size:16px;min-height:46px}
  .tbl thead{display:none}
  .tbl tr{display:block;background:var(--glass);border:1px solid var(--line);border-radius:14px;margin-bottom:10px;padding:8px 12px}
  .tbl td{display:flex;justify-content:space-between;gap:12px;border:0;padding:6px 0;text-align:right}
  .tbl td::before{content:attr(data-label);color:var(--mut);font-size:11px;text-transform:uppercase;letter-spacing:.06em;text-align:left;flex:none}
}
/* ---- Add Entity / Add Flow anchor dots ---- */
.flow-node{position:absolute;width:216px;background:rgba(16,17,28,.94);border:1.5px solid var(--line);border-radius:14px;
  padding:9px 11px;cursor:grab;user-select:none;touch-action:none;box-shadow:0 8px 24px rgba(0,0,0,.4);transition:border-color .12s,box-shadow .12s}
.flow-node.disc{border-style:dashed;opacity:.9}
.flow-node.root{border-color:var(--cyan);border-width:2.5px}
.flow-node.exchange{border-color:var(--warn)}
.flow-node.bridge{border-color:var(--cyan)}
.flow-node.dex{border-color:var(--ok)}
.flow-node.selected{border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.15),0 10px 30px rgba(0,0,0,.5)}
.flow-node.dragging{cursor:grabbing;z-index:5;box-shadow:0 16px 40px rgba(0,0,0,.6)}
.flow-node.connect-target{border-color:var(--ok);box-shadow:0 0 0 3px rgba(34,227,139,.3)}
.flow-node .fn-head{display:flex;align-items:center;gap:7px;margin-bottom:6px}
.flow-node .fn-name{font:700 12.5px var(--sans);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.flow-node .fn-root-dot{width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 6px var(--cyan);flex:none}
.flow-node .fn-addr{font-size:11px;color:#b9beea}
.flow-node .fn-foot{display:flex;gap:6px;align-items:center;margin-top:7px;flex-wrap:wrap}
.flow-node .fn-role{font-size:9.5px;padding:2px 7px}
.flow-node .fn-role.dash{border-style:dashed;color:var(--mut)}
.flow-anchor-dot{position:absolute;width:12px;height:12px;border-radius:50%;background:var(--cyan);border:2px solid #0b0b14;
  opacity:0;transition:opacity .12s,transform .12s;cursor:crosshair;z-index:3}
.flow-node:hover .flow-anchor-dot,.flow-node.selected .flow-anchor-dot{opacity:1}
.flow-anchor-dot:hover{transform:scale(1.35);background:#fff}
.fa-top{top:-6px;left:50%;transform:translateX(-50%)}
.fa-right{right:-6px;top:50%;transform:translateY(-50%)}
.fa-bottom{bottom:-6px;left:50%;transform:translateX(-50%)}
.fa-left{left:-6px;top:50%;transform:translateY(-50%)}
.flow-temp-edge{fill:none;stroke:#fff;stroke-width:2;stroke-dasharray:5 4;opacity:.8;pointer-events:none}
.flow-canvas-wrap{position:relative;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:rgba(0,0,0,.35)}
.flow-viewport{position:relative;height:64vh;min-height:420px;overflow:hidden;cursor:grab;touch-action:none;
  background-image:radial-gradient(rgba(255,255,255,.09) 1px,transparent 1px);background-size:22px 22px}
.flow-viewport:focus{outline:none}
.flow-viewport.panning{cursor:grabbing}
.flow-world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.flow-edges{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
.flow-edge-path{fill:none;stroke:var(--cyan);stroke-width:2;pointer-events:stroke;cursor:pointer;transition:stroke .1s}
.flow-edge-path.derived{stroke:var(--warn);stroke-dasharray:6 5}
.flow-edge-path.link{stroke:var(--pink);stroke-dasharray:7 5;stroke-width:2.4}
.flow-edge-path.sel{stroke:#fff;stroke-width:3}
.flow-edge-arrow{fill:var(--cyan)}
.flow-edge-arrow.link{fill:var(--pink)}
.flow-edge-label{position:absolute;pointer-events:auto;cursor:pointer;background:rgba(10,10,18,.92);border:1px solid var(--line);
  border-radius:8px;padding:3px 9px;font:600 10.5px var(--mono);color:#d7d9ea;white-space:nowrap;backdrop-filter:blur(6px)}
.flow-edge-label.link{color:#ffb3d4;border-color:rgba(236,72,153,.4)}
.flow-edge-label.derived{color:#ffcf8a;border-color:rgba(245,166,35,.4)}
.flow-rail{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:6px;align-items:center;
  background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:6px;backdrop-filter:blur(16px);box-shadow:0 8px 24px rgba(0,0,0,.35)}
.flow-rail .icon-btn{width:34px;height:34px;min-width:0;min-height:0}
.flow-zoom-label{font:700 9.5px var(--mono);color:var(--mut);text-align:center;padding:2px 0}
.flow-detail{margin-top:0}
.flow-edge-path{fill:none;stroke:var(--indigo,#6366f1);stroke-width:2.2;pointer-events:stroke;cursor:pointer;transition:stroke .1s,stroke-width .1s}
.flow-edge-path.derived{stroke:var(--warn);stroke-dasharray:6 5}
.flow-edge-path.link{stroke:var(--pink);stroke-dasharray:7 5;stroke-width:2.4}
.flow-edge-path.sel{stroke:#fff;stroke-width:3}
.flow-temp-edge{fill:none;stroke:#fff;stroke-width:2;stroke-dasharray:5 4;opacity:.85;pointer-events:none}
.flow-edge-label{position:absolute;pointer-events:auto;cursor:pointer;background:rgba(10,10,18,.94);border:1px solid var(--line);
  border-radius:9px;padding:4px 10px 4px 6px;font:600 10.5px var(--mono);color:#d7d9ea;white-space:nowrap;backdrop-filter:blur(6px);
  display:inline-flex;align-items:center;gap:5px;box-shadow:0 4px 14px rgba(0,0,0,.35)}
.flow-edge-label.link{color:#ffb3d4;border-color:rgba(236,72,153,.4)}
.flow-edge-label.derived{color:#ffcf8a;border-color:rgba(245,166,35,.4)}
.coin-icon{flex:none;border-radius:50%}

