:root {
  --bg: #1d1e1c; --bg2: #252623; --bg3: #2d2e2a; --ln: #3b3c37; --ln2: #4c4d46;
  --tx: #cfcec5; --dim: #96958a; --hi: #eceadf;
  --link: #dcbd55; --red: #a8352b; --up: #85c464; --down: #e5604c; --warn: #dfa647;
  --mono: Consolas, "Lucida Console", "Courier New", monospace;
  --base: 12px;
}
html[data-size="l"] { --base: 14px; }
html[data-size="xl"] { --base: 16px; }
html.contrast { --bg: #000; --bg2: #0d0d0d; --bg3: #1a1a1a; --ln: #6a6a6a; --ln2: #8a8a8a; --tx: #f2f2f2; --dim: #c8c8c8;
  --hi: #fff; --link: #ffd84d; --up: #8cff6a; --down: #ff7a66; --warn: #ffc14d; }
html.calm *, html.calm *::before, html.calm *::after { animation: none !important; transition: none !important; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }

* { box-sizing: border-box; }
html, body { margin: 0; background: var(--bg); color: var(--tx); font: var(--base)/1.5 Tahoma, Verdana, sans-serif; }
a { color: var(--link); text-decoration: none; }
a:hover { text-decoration: underline; }
:focus-visible { outline: 2px solid var(--link); outline-offset: 1px; }
[hidden] { display: none !important; }
.dim { color: var(--dim); }
.small { font-size: .92em; }
.pad { padding: 8px; }
.up { color: var(--up); } .down { color: var(--down); } .warn { color: var(--warn); } .hi { color: var(--hi); }
.sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: absolute; left: -999px; top: 0; z-index: 50; background: var(--link); color: #000; padding: 6px 10px; }
.skip:focus { left: 8px; top: 8px; }
h1, h2, h3 { font-family: Tahoma, Verdana, sans-serif; }
h2 { font-size: 1em; font-weight: bold; text-transform: uppercase; color: var(--hi); margin: 16px 0 4px;
  padding: 3px 6px; background: var(--bg3); border-left: 3px solid var(--red); display: flex; gap: 8px; align-items: baseline; }
h2 .dim { font-weight: normal; text-transform: none; }
h2 .more { margin-left: auto; font-weight: normal; text-transform: none; }
p { margin: 2px 0 8px; }

/* ---------- shell: sidebar + top bar ---------- */
.side { position: fixed; left: 0; top: 0; bottom: 0; width: 200px; overflow-y: auto; background: #121311;
  border-right: 1px solid var(--ln); display: flex; flex-direction: column; z-index: 15; }
.side::before { content: ""; display: block; height: 3px; background: var(--red); }
.logo { display: block; padding: 12px 12px 10px; border-bottom: 1px solid var(--ln); }
.logo img { width: 100%; display: block; }
.side nav { padding: 6px 0; flex: 1; }
.nav-h { font: bold .78em var(--mono); color: var(--red); text-transform: uppercase; letter-spacing: 2px; padding: 10px 14px 3px; }
.nav-i { display: flex; gap: 10px; align-items: center; padding: 5px 14px; color: var(--tx); font-family: var(--mono); border-left: 3px solid transparent; }
.nav-i:hover { background: #1d1e1b; text-decoration: none; color: var(--hi); }
.nav-i.on { background: #241917; border-left-color: var(--red); color: var(--hi); }
.nav-i .g { width: 14px; text-align: center; color: var(--dim); }
.nav-i.on .g { color: var(--red); }
.side-status { border-top: 1px solid var(--ln); padding: 8px 14px 12px; font: .88em var(--mono); }
.side-status div { display: flex; justify-content: space-between; gap: 6px; }
.side-status b { font-weight: normal; color: var(--hi); }
.shell { margin-left: 200px; min-height: 100vh; display: flex; flex-direction: column; }
.content { flex: 1; min-width: 0; }
.topbar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 6px 12px; background: #121311; border-bottom: 1px solid var(--ln);
  position: sticky; top: 0; z-index: 10; }
.crumb { font: .95em var(--mono); color: var(--dim); text-transform: uppercase; letter-spacing: 1px; }
.utc { font: .92em var(--mono); color: var(--dim); }
.menu-btn, .mlogo { display: none; }
.menu-btn { background: var(--bg3); color: var(--hi); border: 1px solid var(--ln2); font: 1em var(--mono); padding: 2px 8px; cursor: pointer; }
.mlogo img { height: 24px; display: block; }
.mlogo.show { display: block; }
.mlogo.show img { height: 30px; }
.topbar.bare { position: static; }
.sp { flex: 1; }

/* clearance levels */
.lv { font: bold .85em var(--mono); text-transform: uppercase; letter-spacing: 1px; }
span.lv { padding: 0 5px; border: 1px solid; }
.lv-cleared { color: var(--up); border-color: #4e6e3a; }
.lv-vetting { color: var(--warn); border-color: #6e5426; }
.lv-recon { color: #8fb4d6; border-color: #3d5266; }
.levels { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin: 10px 0; }
.lvbtn { background: var(--bg2); border: 1px solid var(--ln); color: var(--tx); text-align: left; padding: 6px 10px; cursor: pointer;
  font-family: var(--mono); display: flex; flex-direction: column; gap: 2px; }
.lvbtn b { font-size: 1.6em; color: var(--hi); }
.lvbtn span.lv { align-self: flex-start; }
.lvbtn small { color: var(--dim); }
.lvbtn.on { border-color: var(--red); background: #241917; }
.t td.why-s { color: var(--dim); max-width: 260px; overflow: hidden; text-overflow: ellipsis; }
.t tr.fresh td { animation: newev 2.5s; }

/* home */
.hero-logo { width: min(460px, 100%); display: block; margin: 6px 0 10px; }
.now { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 8px; }
.card { display: block; background: var(--bg2); border: 1px solid var(--ln); border-left: 3px solid var(--ln2); padding: 7px 10px; color: var(--tx); transition: transform .12s ease, border-color .12s ease, box-shadow .12s ease; }
.card:hover { border-color: var(--red); text-decoration: none; transform: translateY(-2px); box-shadow: 0 4px 14px rgba(0,0,0,.35); }
.card.wide { max-width: 720px; }
.lv-edge-cleared { border-left-color: var(--up); } .lv-edge-vetting { border-left-color: var(--warn); } .lv-edge-recon { border-left-color: #8fb4d6; }
.card-h { display: flex; gap: 7px; align-items: center; }
.card-h img { width: 20px; height: 20px; object-fit: cover; background: var(--bg3); }
.card-h b { color: var(--hi); font-family: var(--mono); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.card-r { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; margin-top: 4px; font: .95em var(--mono); }
.card-r .btn { margin-left: auto; }
.home-foot { margin-top: 18px; }
.sol { font: .92em var(--mono); color: var(--dim); }
.sol b { color: var(--hi); font-weight: normal; }
.acct { display: flex; gap: 6px; align-items: center; font-family: var(--mono); }
.acct .hl { color: var(--hi); background: var(--red); padding: 0 4px; }
.acct .me { color: var(--hi); display: flex; gap: 5px; align-items: center; }
.av { width: 18px; height: 18px; object-fit: cover; background: var(--bg3); border: 1px solid var(--ln); vertical-align: middle; }
.av.big { width: 72px; height: 72px; }
.av.huge { width: 96px; height: 96px; border: 2px solid var(--bg); }

.foot { color: var(--dim); font-size: .85em; padding: 8px 10px 18px; border-top: 1px solid var(--ln); margin-top: 20px; }
.foot-links { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: 4px; font-family: var(--mono); }

/* ---------- shared bits ---------- */
.page { padding: 10px 12px 20px; max-width: 1400px; }
.page.narrow { max-width: 560px; margin: 0 auto; }
.page.doc { max-width: 860px; }
.page.doc ul { padding-left: 18px; }
.page.doc li { margin: 4px 0; }
.ph { font: bold 1.5em var(--mono); color: var(--hi); margin: 4px 0 8px; text-transform: lowercase; }
.notice { background: #2b2417; border: 1px solid #6a5426; padding: 6px 9px; margin: 6px 0; }
.box { background: var(--bg2); border: 1px solid var(--ln2); margin: 10px 0; }
.box .d-bar h1, .box .d-bar h2 { margin: 0; padding: 0; background: none; border: 0; font: bold 1em var(--mono); text-transform: none; }
.f-body { padding: 10px 12px; display: flex; flex-direction: column; gap: 4px; }
.f-body > label { margin-top: 6px; color: var(--hi); }
input, textarea, select { background: var(--bg); color: var(--tx); border: 1px solid var(--ln2); font: 1em var(--mono); padding: 4px 6px; }
textarea { resize: vertical; }
.f-body input:not([type=checkbox]), .f-body textarea { width: 100%; }
.check { display: flex; gap: 6px; align-items: flex-start; margin-top: 8px; cursor: pointer; }
.check input { margin-top: 2px; }
.err { color: var(--down); min-height: 1em; margin: 4px 0; }
.tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 6px; margin: 10px 0; }
.tile { background: var(--bg2); border: 1px solid var(--ln); padding: 6px 9px; transition: transform .12s ease, border-color .12s ease; }
.tile:hover { transform: translateY(-2px); border-color: var(--ln2); }
.tile small { display: block; color: var(--dim); font-size: .85em; text-transform: uppercase; }
.tile b { font: 1.35em var(--mono); color: var(--hi); }
.live-num.up { position: relative; }
.live-num.up::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--up); margin-right: 6px; vertical-align: baseline; animation: pulseDot 1.8s ease-in-out infinite; }
@keyframes pulseDot { 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(133,196,100,.5); } 50% { opacity: .5; box-shadow: 0 0 0 4px rgba(133,196,100,0); } }
html.calm .live-num.up::before, html.calm .card, html.calm .tile { animation: none; transition: none; }
.tiles.small .tile b { font-size: 1.1em; }
.cols2 { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 16px; }
.toasts { position: fixed; right: 10px; bottom: 10px; z-index: 60; display: flex; flex-direction: column; gap: 6px; }
.toast { background: #111210; border: 1px solid var(--ln2); border-left: 3px solid var(--up); padding: 6px 10px; font: .95em var(--mono); max-width: 360px; }
.toast.bad { border-left-color: var(--down); }
.star { background: none; border: 0; color: var(--dim); font-size: 1.2em; cursor: pointer; padding: 0 2px; line-height: 1; }
.star.on { color: var(--link); }
.star:hover { color: var(--link); }

.how { display: flex; gap: 10px; align-items: flex-start; padding: 6px 10px; background: #191a18; border-bottom: 1px solid var(--ln); }
.how-steps { flex: 1; display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 4px 14px; font-size: .92em; color: var(--dim); }
.how-steps b { display: inline-block; width: 16px; text-align: center; background: var(--red); color: #fff; font: bold 10px var(--mono); margin-right: 4px; }
.how-hide { font: .92em var(--mono); color: var(--dim); }

.subtabs { display: flex; gap: 4px 12px; align-items: center; flex-wrap: wrap; padding: 6px 0 4px; border-bottom: 1px solid var(--ln); font-family: var(--mono); }
.subtabs a { color: var(--dim); padding: 1px 6px; }
.subtabs a.on { color: var(--hi); background: var(--bg3); border-bottom: 2px solid var(--red); }
.small-tabs { border: 0; padding-top: 0; }
#filter { width: 250px; max-width: 100%; }
.live { font: .92em var(--mono); color: var(--up); min-width: 92px; }
.live.pulse { animation: blink .5s; }
.live.stale { color: var(--warn); }
.live.down { color: var(--down); }
@keyframes blink { 0% { opacity: .35; } 100% { opacity: 1; } }

/* ---------- screener ---------- */
.layout { display: grid; grid-template-columns: minmax(0, 1fr) 330px; }
.col-main { min-width: 0; padding: 0 10px 20px; }
.col-side { border-left: 1px solid var(--ln); padding: 6px 10px 20px; background: #1a1b19; }
.panel { margin-bottom: 10px; }
.p-h { font: bold .92em Tahoma, Verdana, sans-serif; text-transform: uppercase; color: var(--hi); background: var(--bg3);
  border-left: 3px solid var(--red); padding: 3px 6px; display: flex; justify-content: space-between; gap: 6px; margin-top: 6px; }
.p-h .dim { font-weight: normal; text-transform: none; }
.bot { font: .92em var(--mono); text-transform: none; }
.bot.on { color: var(--up); } .bot.off { color: var(--down); }
.stats-line { font: .92em var(--mono); color: var(--dim); padding: 4px 0; border-bottom: 1px dashed var(--ln); }
.stats-line b { font-weight: normal; }
.tools { display: flex; justify-content: space-between; align-items: center; padding: 5px 0; font-size: .92em; color: var(--dim); }
select { padding: 1px 2px; margin-left: 4px; }
.hist { font: .92em/1.35 var(--mono); margin: 4px 0 0; padding: 6px; background: #141513; border: 1px solid var(--ln); color: var(--dim); }
.hist .pass { color: var(--up); }
.feed { font: .92em var(--mono); max-height: 520px; overflow-y: auto; border: 1px solid var(--ln); background: #141513; margin: 4px 0; }
.feed.short { max-height: 260px; }
.ev { display: block; padding: 3px 6px; border-bottom: 1px dashed var(--ln); color: var(--tx); }
a.ev:hover { background: #22231f; text-decoration: none; }
.ev:last-child { border-bottom: 0; }
.ev .row1 { display: flex; gap: 6px; align-items: center; }
.ev .tm { color: var(--dim); }
.ev .sy { color: var(--hi); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev .bar { display: inline-block; width: 50px; height: 6px; background: #2a2b27; position: relative; padding: 0; border: 0; }
.ev .bar i { position: absolute; left: 0; top: 0; bottom: 0; background: var(--down); }
.ev .bar i.mid { background: var(--warn); } .ev .bar i.ok { background: var(--up); }
.ev .sc { width: 22px; text-align: right; }
.ev .wy { color: var(--dim); padding-left: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev.new { animation: newev 1.6s; }
@keyframes newev { 0% { background: #3a3320; } 100% { background: transparent; } }
td.fl-up { animation: flup .9s; } td.fl-down { animation: fldown .9s; }
@keyframes flup { 0% { background: #2c4422; } 100% { background: inherit; } }
@keyframes fldown { 0% { background: #4a221d; } 100% { background: inherit; } }
td.spark svg { display: block; }

.tw { overflow-x: auto; }
.t { width: 100%; border-collapse: collapse; font: 1em var(--mono); }
.t th { text-align: left; font: bold .92em Tahoma, Verdana, sans-serif; color: var(--dim); background: var(--bg3);
  border: 1px solid var(--ln); padding: 3px 6px; white-space: nowrap; user-select: none; }
.t th[data-k] { cursor: pointer; }
.t th[data-k]:hover { color: var(--hi); }
.t th.sorted::after { content: " ▾"; }
.t th.sorted.asc::after { content: " ▴"; }
.t td { border: 1px solid var(--ln); padding: 2px 6px; white-space: nowrap; vertical-align: middle; }
.t tbody tr:nth-child(even) td { background: var(--bg2); }
.t tbody tr { cursor: pointer; }
.t tbody tr:hover td, .t tbody tr:focus td { background: #34352f; }
.t tbody tr:focus { outline: 2px solid var(--link); outline-offset: -2px; }
.t .r { text-align: right; }
.t .n { color: var(--dim); }
.t td.tok { max-width: 260px; overflow: hidden; text-overflow: ellipsis; }
.t td.tok img { width: 16px; height: 16px; vertical-align: -3px; margin-right: 5px; object-fit: cover; background: var(--bg3); }
.t td.tok .sym { color: var(--hi); }
.t td.why { white-space: normal; color: #e8a89b; min-width: 200px; }
.t.mini td { padding: 1px 5px; }
.t.doc-t td { white-space: normal; cursor: default; }
.st-live { color: var(--up); } .st-falling { color: var(--warn); }
.st-wrecked, .st-revoked, .st-unlisted { color: var(--down); }
.empty { color: var(--dim); font: 1em var(--mono); padding: 14px 4px; }

.btn { display: inline-block; background: var(--bg3); color: var(--tx); border: 1px solid var(--ln2); font: .92em var(--mono); padding: 2px 8px; cursor: pointer; }
.btn:hover { border-color: var(--link); color: var(--hi); text-decoration: none; }
.btn.go { background: #3b221e; border-color: var(--red); color: #f4d3cb; }
.btn.go:hover { background: var(--red); color: #fff; }
.btn.big { font-size: 1.05em; padding: 6px 14px; }
.btn.small-btn { padding: 0 6px; }
.btn:disabled { opacity: .45; cursor: not-allowed; }

.drawer { position: fixed; inset: 0; background: rgba(0,0,0,.55); display: flex; justify-content: flex-end; z-index: 20; }
.drawer-panel { width: min(620px, 100%); height: 100%; overflow-y: auto; background: var(--bg); border-left: 1px solid var(--ln2); }
.d-bar { display: flex; justify-content: space-between; align-items: center; gap: 8px; background: #111210; border-bottom: 1px solid var(--ln);
  padding: 4px 8px; font: bold 1em var(--mono); color: var(--hi); }
.d-bar button { background: none; border: 0; color: var(--dim); font: 1em var(--mono); cursor: pointer; }
.d-bar button:hover { color: var(--down); }
.d-body { padding: 8px 10px 16px; }
.d-head { display: flex; gap: 10px; align-items: center; margin: 8px 0; }
.d-head > div:nth-child(2) { flex: 1; min-width: 0; }
.d-head h2 { margin: 0; padding: 0; background: none; border: 0; font: bold 1.2em var(--mono); text-transform: none; display: block; }
.d-head img { width: 40px; height: 40px; object-fit: cover; background: var(--bg3); border: 1px solid var(--ln); flex: none; }
.mint { font: .92em var(--mono); color: var(--dim); overflow-wrap: anywhere; }
.score-box { font: bold 1.5em var(--mono); color: var(--hi); border: 1px solid var(--ln2); padding: 2px 8px; background: var(--bg3); }
.score-box small { font-size: .6em; color: var(--dim); font-weight: normal; }
.revoked { margin-top: 8px; border: 1px solid var(--red); background: #2a1916; padding: 5px 8px; font: 1em var(--mono); color: #f4bcb1; }
.revoked b { color: var(--down); }
.kv { width: 100%; border-collapse: collapse; margin: 8px 0; font: 1em var(--mono); }
.kv td { border: 1px solid var(--ln); padding: 2px 6px; }
.kv td:nth-child(odd) { color: var(--dim); background: var(--bg2); width: 22%; }
.col-side .kv { margin: 4px 0 0; }
.col-side .kv td:nth-child(odd) { width: auto; }
.col-side .kv td:nth-child(even) { text-align: right; color: var(--hi); }
.actions { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; margin: 6px 0; }
.links { display: flex; gap: 8px; font: .92em var(--mono); align-items: center; }
.chart { margin: 8px 0; border: 1px solid var(--ln); height: 380px; background: var(--bg2); }
.chart.tall { height: 520px; }
.chart iframe { width: 100%; height: 100%; border: 0; }
.sec { font: bold .92em Tahoma, Verdana, sans-serif; text-transform: uppercase; color: var(--dim); margin-top: 10px; }
.lines { font: 1em var(--mono); background: #141513; border: 1px solid var(--ln); padding: 6px 8px; margin: 4px 0; white-space: pre-wrap; }

.gate { position: fixed; inset: 0; background: rgba(0,0,0,.8); display: grid; place-items: center; z-index: 30; padding: 10px; }
.gate-box { max-width: 520px; width: 100%; background: var(--bg); border: 1px solid var(--ln2); }
.gate-box pre { font: 1em var(--mono); margin: 0; padding: 10px 12px; white-space: pre-wrap; color: var(--tx); }
.gate-box > .btn { margin: 0 12px 12px; }

/* ---------- home ---------- */
.hero { padding: 10px 0 4px; }
.lead { font-size: 1.15em; color: var(--hi); max-width: 760px; }
.cta { display: flex; gap: 8px; flex-wrap: wrap; margin: 12px 0; }
.steps { padding-left: 20px; margin: 6px 0; }
.steps li { margin: 5px 0; }
.sections { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 6px; }
.sections a { display: block; background: var(--bg2); border: 1px solid var(--ln); padding: 6px 9px; color: var(--tx); }
.sections a:hover { border-color: var(--link); text-decoration: none; }
.sections b { display: block; color: var(--hi); font-family: var(--mono); }
.sections span { color: var(--dim); font-size: .92em; }

/* ---------- trade ---------- */
.trade { display: grid; grid-template-columns: 230px minmax(0, 1fr) 400px; min-height: 70vh; }
.t-list { border-right: 1px solid var(--ln); padding: 4px 8px 12px; background: #1a1b19; }
.pick { max-height: 420px; overflow-y: auto; border: 1px solid var(--ln); margin: 4px 0; }
.pk { display: grid; grid-template-columns: 16px 1fr auto auto; gap: 6px; align-items: center; padding: 3px 6px; font: .92em var(--mono);
  color: var(--tx); border-bottom: 1px dashed var(--ln); }
.pk img { width: 16px; height: 16px; object-fit: cover; }
.pk.on { background: var(--bg3); border-left: 3px solid var(--red); }
.pk:hover { background: #2a2b27; text-decoration: none; }
.pk .sy { color: var(--hi); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.any { display: flex; gap: 4px; margin: 4px 0; }
.any input { flex: 1; min-width: 0; }
.t-main { padding: 6px 12px; min-width: 0; }
.t-head { display: flex; gap: 10px; align-items: center; }
.t-head img { width: 40px; height: 40px; object-fit: cover; background: var(--bg3); border: 1px solid var(--ln); }
.t-name { flex: 1; min-width: 0; }
.t-name b { font: bold 1.3em var(--mono); color: var(--hi); }
.badge { font: bold .92em var(--mono); padding: 2px 8px; border: 1px solid var(--ln2); }
.badge.ok { color: var(--up); border-color: #4e6e3a; }
.badge.bad { color: var(--down); border-color: #6e2e27; }
.t-stats { display: grid; grid-template-columns: repeat(7, 1fr); border: 1px solid var(--ln); margin: 8px 0; }
.t-stats div { padding: 4px 8px; border-right: 1px solid var(--ln); }
.t-stats div:last-child { border-right: 0; }
.t-stats small { display: block; color: var(--dim); font-size: .85em; }
.t-stats b { font: 1.05em var(--mono); }
.t-side { border-left: 1px solid var(--ln); padding: 4px 10px 12px; background: #1a1b19; }
.jup-hold { border: 1px solid var(--ln); margin: 4px 0; background: #141513; }
/* swap panel */
.sw { padding: 10px; display: grid; gap: 8px; --side: var(--up); --side-bg: #1c2618; }
.sw[data-side="sell"] { --side: var(--down); --side-bg: #2a1613; }
.sw-side { display: grid; grid-template-columns: 1fr 1fr; background: var(--bg); border: 1px solid var(--ln); padding: 3px; gap: 3px; }
.sw-side button { background: none; color: var(--dim); border: 0; padding: 8px; font: 700 1.05em var(--mono); text-transform: uppercase; letter-spacing: .08em; cursor: pointer; }
.sw-side button:hover { color: var(--hi); }
.sw-side button.on { background: var(--side-bg); color: var(--side); box-shadow: inset 0 -2px 0 var(--side); }
.sw-card { background: var(--bg); border: 1px solid var(--ln); padding: 8px 10px; display: grid; gap: 4px; transition: border-color .15s; }
.sw-card:focus-within { border-color: var(--side); }
.sw-card.out { background: #191a17; }
.sw-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 1em; }
.sw-lbl { color: var(--dim); font-size: .9em; text-transform: uppercase; letter-spacing: .06em; }
.sw-bal { background: none; border: 0; color: var(--dim); font: .9em var(--mono); cursor: pointer; padding: 0; }
.sw-bal:hover { color: var(--link); }
.sw-card input { flex: 1; min-width: 0; background: none; border: 0; color: var(--hi); font: 1.9em var(--mono); padding: 2px 0; outline: none; }
.sw-out { flex: 1; min-width: 0; font: 1.9em var(--mono); color: var(--hi); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sw-tok span { display: inline-flex; align-items: center; gap: 6px; background: var(--bg3); border: 1px solid var(--ln2); padding: 4px 9px 4px 5px;
  border-radius: 999px; font: bold 1em var(--mono); color: var(--hi); white-space: nowrap; }
.sw-tok img, .sw-tok svg { width: 20px; height: 20px; border-radius: 50%; object-fit: cover; background: var(--bg2); }
.sw-quick { display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; margin-top: 2px; }
.sw-quick button { background: var(--bg2); border: 1px solid var(--ln); color: var(--tx); font: .9em var(--mono); padding: 4px 0; cursor: pointer; }
.sw-quick button:hover { border-color: var(--side); color: var(--side); }
.sw-arrow { text-align: center; color: var(--side); margin: -6px 0; line-height: 1; font-size: 1.2em; }
.sw-slip { display: flex; justify-content: space-between; align-items: center; }
.seg { display: inline-flex; border: 1px solid var(--ln); background: var(--bg); }
.seg button { background: none; border: 0; border-right: 1px solid var(--ln); color: var(--dim); font: .9em var(--mono); padding: 3px 8px; cursor: pointer; }
.seg button:last-child { border-right: 0; }
.seg button:hover { color: var(--hi); }
.seg button.on { background: var(--bg3); color: var(--link); }
.sw-q { margin: 0; font-size: .92em; }
.sw-q td:first-child { color: var(--dim); }
.sw-q td:last-child { text-align: right; }
.sw-q:empty { display: none; }
.sw-go { padding: 12px; font: bold 1.2em var(--mono); text-transform: uppercase; letter-spacing: .06em; cursor: pointer;
  border: 1px solid var(--red); background: #3b221e; color: #f4d3cb; }
.sw-go.buy:not(:disabled) { background: #2d4a22; border-color: var(--up); color: #eaffdc; }
.sw-go.sell:not(:disabled) { background: #5a221b; border-color: var(--down); color: #ffe4de; }
.sw-go:not(:disabled):hover { filter: brightness(1.2); }
.sw-go:disabled { opacity: .55; cursor: default; background: var(--bg3); border-color: var(--ln2); color: var(--dim); }
.sw-msg { color: var(--dim); min-height: 1.2em; }
.sw-msg.warn { color: var(--warn); }
/* candle chart */
.ch { margin: 8px 0; border: 1px solid var(--ln); background: #141513; height: 520px; display: grid; grid-template-rows: auto 1fr; position: relative; }
.ch-bar { display: flex; gap: 6px; align-items: center; padding: 4px; border-bottom: 1px solid var(--ln); flex-wrap: wrap; }
.ch-bar .sp { flex: 1; }
.ch-area { min-height: 0; }
.ch-legend { position: absolute; top: 38px; left: 8px; z-index: 2; font: .92em var(--mono); display: flex; gap: 10px; pointer-events: none;
  background: rgba(20,21,19,.75); padding: 1px 4px; }
.ch-legend i { color: var(--dim); font-style: normal; margin-right: 3px; }
.ch-legend .up { color: var(--up); } .ch-legend .down { color: var(--down); }
/* wallet in the top bar */
.wal { position: relative; }
.wal-btn { background: #3b221e; border: 1px solid var(--red); color: #f4d3cb; font: .95em var(--mono); padding: 3px 9px; cursor: pointer; display: inline-flex; gap: 6px; align-items: center; }
.wal-btn:hover { background: var(--red); color: #fff; }
.wal-btn.on { background: var(--bg2); border-color: var(--ln2); color: var(--hi); }
.wal-btn.on b { color: var(--link); font-weight: normal; }
.wal-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--up); box-shadow: 0 0 6px var(--up); }
.wal-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 50; background: var(--bg2); border: 1px solid var(--ln2); min-width: 180px; display: grid; }
.wal-menu button { background: none; border: 0; border-bottom: 1px solid var(--ln); color: var(--tx); text-align: left; padding: 7px 10px; font: .95em var(--mono); cursor: pointer; }
.wal-menu button:hover { background: var(--bg3); color: var(--hi); }
.wal-help .wal-list { display: flex; gap: 12px; margin: 8px 0; font: bold 1.05em var(--mono); }
.jup-gate { padding: 12px; }
.bal { margin: 4px 0; }

/* ---------- lookup ---------- */
.lk-form { display: flex; gap: 6px; margin: 8px 0; }
.lk-form input { flex: 1; min-width: 0; padding: 6px 8px; }
.recent { display: flex; gap: 10px; flex-wrap: wrap; font: .92em var(--mono); margin-bottom: 8px; }
.verdict { padding: 8px 10px; border: 1px solid; margin: 8px 0; font-family: var(--mono); }
.verdict b { display: block; font-size: 1.1em; }
.verdict.ok { border-color: #4e6e3a; background: #1c2617; color: #cfe8bf; }
.verdict.ok b { color: var(--up); }
.verdict.bad { border-color: var(--red); background: #2a1916; color: #f4bcb1; }
.verdict.bad b { color: var(--down); }

/* ---------- profile / settings ---------- */
.p-banner, .banner-edit { height: 180px; background: linear-gradient(90deg, #2a1916, #252623) center / cover no-repeat; border: 1px solid var(--ln); }
.p-top { display: flex; gap: 14px; align-items: flex-end; margin-top: -64px; padding: 0 12px; flex-wrap: wrap; }
.p-top .av.huge { width: 132px; height: 132px; border: 3px solid var(--bg2); box-shadow: 0 8px 22px rgba(0, 0, 0, .55); background: var(--bg3); }
@media (max-width: 560px) { .p-top .av.huge { width: 104px; height: 104px; } .p-top { margin-top: -52px; } }
.p-id { flex: 1; min-width: 160px; padding-bottom: 4px; }
.p-id h1 { margin: 0; font: bold 1.6em var(--mono); color: var(--hi); }
.p-actions { display: flex; gap: 6px; flex-wrap: wrap; padding-bottom: 6px; }
.p-bio { white-space: pre-wrap; margin: 10px 12px; max-width: 700px; }
.av-row { display: flex; gap: 12px; align-items: center; margin: 8px 0; flex-wrap: wrap; }
.p-banner[data-banner]::after { content: attr(data-banner); position: relative; top: 150px; left: 10px; font: bold 10px var(--mono);
  color: rgba(236,234,223,.7); text-transform: uppercase; letter-spacing: 2px; background: rgba(0,0,0,.45); padding: 2px 6px; }
.p-socials { display: flex; gap: 12px; flex-wrap: wrap; margin: 0 12px 6px; font: .95em var(--mono); }
.bn-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 8px; }
.bn { background: var(--bg); border: 1px solid var(--ln); padding: 0; text-align: left; cursor: pointer; color: var(--tx); font: inherit;
  display: flex; flex-direction: column; position: relative; }
.bn:hover:not(:disabled) { border-color: var(--red); }
.bn.on { border-color: var(--up); box-shadow: 0 0 0 1px var(--up); }
.bn.locked { cursor: not-allowed; }
.bn.locked .bn-sw { filter: grayscale(.85) brightness(.55); }
.bn-sw { height: 54px; background-size: cover; background-position: center; }
.bn-meta { padding: 5px 7px 6px; display: flex; flex-direction: column; gap: 1px; font-size: .9em; }
.bn-meta b { color: var(--hi); font-family: var(--mono); }
.bn-meta span { color: var(--dim); }
.bn-prog { color: var(--warn) !important; }
.bn-tag { position: absolute; top: 4px; right: 4px; font: bold 9px var(--mono); text-transform: uppercase; padding: 1px 5px;
  background: rgba(0,0,0,.6); color: var(--hi); letter-spacing: 1px; }
.bn.on .bn-tag { background: var(--up); color: #10180c; }
.bn.locked .bn-tag { background: rgba(0,0,0,.7); color: var(--dim); }
/* banner rarity + animation layers (banners.js renderBanner) */
.bn-sw, .p-banner { position: relative; overflow: hidden; }
.bn-art { position: absolute; right: 4%; top: 50%; transform: translateY(-50%); height: 86%; width: auto; max-width: 46%;
  filter: drop-shadow(0 0 6px var(--hl)); z-index: 2; }
.bn-fx { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.rar-rare { box-shadow: inset 0 0 0 1px var(--hl); }
.rar-epic { box-shadow: inset 0 0 0 2px var(--hl), inset 0 0 24px color-mix(in srgb, var(--hl) 35%, transparent); }
.rar-legendary { box-shadow: inset 0 0 0 2px var(--hl), inset 0 0 40px color-mix(in srgb, var(--hl) 50%, transparent); }
.rar-legendary .bn-art { animation: artglow 2.4s ease-in-out infinite alternate; }
@keyframes artglow { from { filter: drop-shadow(0 0 4px var(--hl)); } to { filter: drop-shadow(0 0 16px var(--hl)) brightness(1.15); } }
.fx-shimmer .bn-fx { background: linear-gradient(110deg, transparent 30%, color-mix(in srgb, var(--hl) 45%, transparent) 50%, transparent 70%);
  background-size: 250% 100%; animation: shimmer 3.2s linear infinite; }
@keyframes shimmer { from { background-position: 150% 0; } to { background-position: -100% 0; } }
.fx-sweep .bn-fx { background: conic-gradient(from 0deg at 78% 50%, transparent 0 300deg, color-mix(in srgb, var(--hl) 55%, transparent) 355deg, transparent 360deg);
  animation: spin 3s linear infinite; transform-origin: 78% 50%; }
@keyframes spin { to { transform: rotate(360deg); } }
.fx-embers .bn-fx { background: radial-gradient(var(--hl) 1.4px, transparent 2px) 0 0/22px 26px, radial-gradient(var(--ac) 1.2px, transparent 2px) 11px 13px/22px 26px;
  animation: embers 2.6s linear infinite; opacity: .8; }
@keyframes embers { from { background-position: 0 0, 11px 13px; } to { background-position: 6px -52px, 3px -39px; } }
.fx-scan .bn-fx { background: linear-gradient(transparent 0, color-mix(in srgb, var(--hl) 50%, transparent) 50%, transparent 100%);
  background-size: 100% 30%; background-repeat: no-repeat; animation: scanline 2.2s linear infinite; }
@keyframes scanline { from { background-position: 0 -40%; } to { background-position: 0 140%; } }
.fx-waves .bn-fx { background: repeating-linear-gradient(170deg, transparent 0 14px, color-mix(in srgb, var(--hl) 30%, transparent) 14px 16px);
  background-size: 200% 200%; animation: waves 4s linear infinite; }
@keyframes waves { to { background-position: 120px 40px; } }
.fx-march .bn-fx { background: repeating-linear-gradient(90deg, transparent 0 22px, color-mix(in srgb, var(--hl) 30%, transparent) 22px 26px);
  animation: march 1.6s linear infinite; }
@keyframes march { to { background-position: 48px 0; } }
.fx-pulse .bn-fx { background: radial-gradient(circle at 50% 50%, color-mix(in srgb, var(--hl) 50%, transparent), transparent 55%);
  animation: pulse 2s ease-in-out infinite; }
@keyframes pulse { 0%, 100% { opacity: .2; transform: scale(.8); } 50% { opacity: .9; transform: scale(1.15); } }
.fx-rise .bn-fx { background: repeating-linear-gradient(0deg, transparent 0 10px, color-mix(in srgb, var(--hl) 25%, transparent) 10px 12px);
  animation: rise 1.4s linear infinite; }
@keyframes rise { to { background-position: 0 -24px; } }
.fx-aurora .bn-fx { background: linear-gradient(120deg, color-mix(in srgb, var(--hl) 40%, transparent), transparent 30%, color-mix(in srgb, var(--ac) 60%, transparent) 55%, transparent 75%, color-mix(in srgb, var(--hl) 40%, transparent));
  background-size: 300% 300%; animation: aurora 6s ease-in-out infinite; mix-blend-mode: screen; }
@keyframes aurora { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
.bn-rar { font: bold 9px var(--mono); text-transform: uppercase; letter-spacing: 1px; }
.bn-rar.rare { color: #8fb4d6; } .bn-rar.epic { color: #c38bff; } .bn-rar.legendary { color: var(--warn); }
.bn-sw { height: 64px; }
.crop-box { max-width: 380px; }
#cropCanvas { width: 320px; height: 320px; max-width: 100%; cursor: grab; touch-action: none; border: 1px solid var(--ln2); align-self: center; }
#cropCanvas:active { cursor: grabbing; }
.av-row label.btn { margin: 2px 4px 2px 0; }
.faq dt { color: var(--hi); font-weight: bold; margin-top: 10px; }
.faq dd { margin: 2px 0 0 0; }

/* ---------- chat ---------- */
.chat { display: grid; grid-template-columns: 250px minmax(0, 1fr); height: calc(100vh - 120px); min-height: 460px; }
.c-side { border-right: 1px solid var(--ln); padding: 4px 8px; overflow-y: auto; background: #1a1b19; }
.rooms { display: flex; flex-direction: column; margin: 4px 0; }
.room { display: flex; gap: 6px; align-items: center; padding: 3px 6px; color: var(--tx); font-family: var(--mono); border-bottom: 1px dashed var(--ln); }
.room.on { background: var(--bg3); border-left: 3px solid var(--red); color: var(--hi); }
.room:hover { background: #2a2b27; text-decoration: none; }
.r-sub { margin-left: auto; font-size: .85em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 90px; }
.req { padding: 4px 6px; font-size: .92em; display: flex; gap: 4px; flex-wrap: wrap; align-items: center; }
.c-main { display: flex; flex-direction: column; min-width: 0; padding: 4px 10px 6px; }
.c-head { padding: 4px 0; border-bottom: 1px solid var(--ln); font-family: var(--mono); display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.c-head b { color: var(--hi); }
.msgs { flex: 1; overflow-y: auto; padding: 6px 0; font-family: var(--mono); }
.msg { padding: 3px 4px; border-bottom: 1px dashed #2a2b27; display: flex; gap: 6px; align-items: baseline; flex-wrap: wrap; }
.msg:hover { background: #22231f; }
.m-who { color: var(--link); display: inline-flex; gap: 4px; align-items: center; font-weight: bold; }
.m-time { color: var(--dim); font-size: .85em; }
.m-body { white-space: pre-wrap; overflow-wrap: anywhere; flex-basis: 100%; padding-left: 22px; color: var(--tx); }
.m-del { background: none; border: 0; color: var(--dim); font: .85em var(--mono); cursor: pointer; margin-left: auto; }
.m-del:hover { color: var(--down); }
.msg.gone .m-body { display: none; }
.mint-link { color: var(--link); border-bottom: 1px dotted var(--link); }
.vol { font: bold .82em var(--mono); text-transform: uppercase; letter-spacing: 1px; padding: 0 4px; border: 1px solid; cursor: help; }
.vol-calm { color: #8fb4d6; border-color: #3d5266; }
.vol-volatile { color: var(--warn); border-color: #6e5426; }
.vol-extreme { color: var(--down); border-color: #6e2e27; }
.op-badge { font: bold 9px var(--mono); background: var(--red); color: #fff; padding: 1px 4px; margin-left: 5px; letter-spacing: 1px;
  text-transform: uppercase; vertical-align: middle; }
h1 .op-badge { font-size: 11px; }
.c-input { display: flex; gap: 6px; border-top: 1px solid var(--ln); padding-top: 6px; }
.c-input textarea { flex: 1; min-width: 0; }
.c-rules { margin: 4px 0 0; }

.popular { margin-top: 14px; }
.callview { flex: 1; overflow-y: auto; padding: 6px 0; }
.call-form { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 4px; }
.call-form input { flex: 1; min-width: 180px; }

/* ---------- landing (logged-out home) ---------- */
body.landing { background: #0f100e; overflow-x: hidden; }
#field { position: fixed; inset: 0; z-index: 0; display: block; cursor: crosshair; }
.l-top, .l-main, .l-foot, .l-risk, .l-consent { position: relative; z-index: 2; }
.l-top { display: flex; align-items: center; gap: 10px; padding: 12px 20px; border-bottom: 1px solid rgba(168,53,43,.35);
  background: linear-gradient(rgba(15,16,14,.9), rgba(15,16,14,.4)); }
.l-logo { height: 38px; }
.l-sol { font: .95em var(--mono); color: var(--dim); }
.l-sol b { color: var(--hi); font-weight: normal; }
.l-main { pointer-events: none; }
.l-main a, .l-main button { pointer-events: auto; }
.l-hero { min-height: calc(100vh - 140px); display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; padding: 40px 16px; }
.l-badge { font: .95em var(--mono); color: var(--tx); border: 1px solid rgba(168,53,43,.6); background: rgba(15,16,14,.75);
  padding: 4px 12px; display: inline-flex; gap: 8px; align-items: center; }
.dot { width: 8px; height: 8px; border-radius: 50%; background: var(--dim); display: inline-block; }
.dot.on { background: var(--up); box-shadow: 0 0 8px var(--up); animation: blink 1.6s infinite alternate; }
.dot.off { background: var(--down); }
.l-hero h1 { font: 900 clamp(2.2em, 6vw, 4.6em)/1.05 "Arial Black", "Segoe UI Black", Impact, sans-serif; color: var(--hi);
  letter-spacing: .02em; margin: 18px 0 12px; text-transform: uppercase; text-shadow: 0 2px 24px rgba(0,0,0,.8); }
.l-hero h1 .red { color: #d0453b; }
.l-sub { max-width: 760px; font-size: 1.15em; color: #d6d4c9; background: rgba(15,16,14,.55); padding: 6px 10px; }
.l-cta { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin: 18px 0; }
.l-cta .btn.big { font-size: 1.15em; padding: 10px 22px; }
.l-stats { display: grid; grid-template-columns: repeat(4, minmax(120px, 1fr)); gap: 1px; background: rgba(168,53,43,.4);
  border: 1px solid rgba(168,53,43,.5); margin-top: 10px; }
.l-stats div { background: rgba(15,16,14,.85); padding: 8px 16px; display: flex; flex-direction: column; }
.l-stats b { font: bold 1.7em var(--mono); color: var(--hi); }
.l-stats span { font: .85em var(--mono); color: var(--dim); text-transform: uppercase; }
.l-hint { margin-top: 12px; font-family: var(--mono); }
.l-features { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: rgba(168,53,43,.35);
  border-top: 1px solid rgba(168,53,43,.35); border-bottom: 1px solid rgba(168,53,43,.35); }
.l-features div { background: rgba(15,16,14,.88); padding: 16px 18px; }
.l-features b { display: block; font: bold 1.1em var(--mono); color: #d0453b; text-transform: uppercase; letter-spacing: 2px; margin-bottom: 4px; }
.l-features span { color: var(--tx); }
.l-risk { position: fixed; left: 14px; bottom: 14px; width: 270px; background: rgba(15,16,14,.92); border: 1px solid var(--red);
  border-left: 4px solid var(--red); font: .95em var(--mono); z-index: 5; }
.l-risk-h { display: flex; justify-content: space-between; align-items: center; padding: 3px 8px; background: #241917;
  color: #e5604c; text-transform: uppercase; letter-spacing: 2px; font-weight: bold; }
.l-risk-h button { background: none; border: 0; color: var(--tx); font: bold 1.1em var(--mono); cursor: pointer; padding: 0 4px; }
.l-risk p { margin: 0; padding: 7px 9px; color: var(--hi); min-height: 3em; }
.l-risk p.fade { animation: rfade .6s; }
@keyframes rfade { from { opacity: 0; } to { opacity: 1; } }
.l-risk.min p { display: none; }
.l-risk.min { width: auto; }
.l-consent { position: fixed; right: 14px; bottom: 14px; max-width: 460px; background: rgba(15,16,14,.95); border: 1px solid var(--ln2);
  padding: 10px 12px; z-index: 6; display: flex; gap: 10px; align-items: flex-end; }
.l-consent p { margin: 0; font-size: .95em; }
.l-foot { padding: 14px 20px 70px; color: var(--tx); font: .92em var(--mono); background: rgba(15,16,14,.85); }
.op-link { color: #6a6960; font: .9em var(--mono); padding: 0 4px; }
.op-link:hover { color: var(--red); text-decoration: none; }
@media (max-width: 900px) {
  .l-stats { grid-template-columns: repeat(2, 1fr); }
  .l-features { grid-template-columns: 1fr 1fr; }
  .l-consent { left: 14px; right: 14px; max-width: none; bottom: 90px; flex-direction: column; align-items: stretch; }
  .l-risk { width: auto; right: 14px; }
}
@media (max-width: 560px) { .l-features { grid-template-columns: 1fr; } .l-top .l-sol { display: none; } }

/* ---------- log in / sign up ---------- */
body.authpage { background: #0f100e; }
body.authpage .content { position: relative; z-index: 2; }
body.authpage .topbar { background: rgba(15,16,14,.85); z-index: 3; position: relative; }
body.authpage .foot { position: relative; z-index: 2; background: rgba(15,16,14,.85); margin-top: 0; }
.auth { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(320px, 440px); gap: 40px; align-items: center;
  max-width: 1100px; margin: 0 auto; padding: 40px 20px; min-height: calc(100vh - 110px); pointer-events: none; }
.auth a, .auth button, .auth input, .auth label, .auth-card { pointer-events: auto; }
.auth-pitch h1 { font: 900 clamp(2.4em, 5.4vw, 4.2em)/1.02 "Arial Black", "Segoe UI Black", Impact, sans-serif; color: var(--hi);
  text-transform: uppercase; margin: 16px 0 10px; text-shadow: 0 2px 24px rgba(0,0,0,.8); }
.auth-pitch h1 .red { color: #d0453b; }
.auth-pitch .l-sub { max-width: 520px; }
.perks { list-style: none; padding: 0; margin: 14px 0; display: grid; gap: 5px; max-width: 560px; }
.perks li { background: rgba(15,16,14,.78); border-left: 3px solid var(--red); padding: 5px 10px; color: var(--tx); }
.perks b { color: var(--hi); font-family: var(--mono); text-transform: uppercase; letter-spacing: 1px; margin-right: 6px; }
.small-stats { grid-template-columns: repeat(3, minmax(100px, 1fr)); display: inline-grid; }
.small-stats b { font-size: 1.35em; }
.auth-card { background: rgba(18,19,17,.94); border: 1px solid var(--ln2); border-top: 4px solid var(--red); padding: 20px 22px;
  display: flex; flex-direction: column; gap: 4px; box-shadow: 0 20px 60px rgba(0,0,0,.6); }
.auth-card label { color: var(--hi); margin-top: 8px; }
.auth-card input:not([type=checkbox]) { width: 100%; padding: 8px 10px; font-size: 1.05em; background: #0f100e; }
.auth-card input:focus { outline: 1px solid var(--red); border-color: var(--red); }
.auth-h { background: none; border: 0; padding: 0; margin: 4px 0 6px; font: bold 1.5em var(--mono); text-transform: lowercase; color: var(--hi); display: block; }
.auth-steps { display: flex; gap: 4px; font: .85em var(--mono); }
.auth-steps span { flex: 1; text-align: center; padding: 3px 0; background: var(--bg3); color: var(--dim); }
.auth-steps span.on { background: var(--red); color: #fff; }
.field-row { display: flex; gap: 6px; align-items: center; }
.field-row input { flex: 1; }
.eye { background: var(--bg3); border: 1px solid var(--ln2); color: var(--tx); font: .9em var(--mono); padding: 8px 10px; cursor: pointer; }
.field-ok { width: 18px; font: bold 1.1em var(--mono); text-align: center; }
.hint { margin: 2px 0 0; font-size: .9em; color: var(--dim); }
.meter { height: 4px; background: var(--bg3); margin-top: 5px; }
.meter i { display: block; height: 100%; width: 0; transition: width .2s; background: var(--down); }
.meter i.mid { background: var(--warn); } .meter i.good { background: var(--up); }
.btn.wide { width: 100%; margin-top: 10px; text-align: center; }
.center { text-align: center; }
@media (max-width: 860px) { .auth { grid-template-columns: 1fr; gap: 20px; } .auth-pitch .perks { display: none; } }

/* ---------- dev portal ---------- */
.narrow-box { max-width: 420px; margin: 40px auto; }
.dev-head { display: flex; gap: 10px; align-items: baseline; }
.chart-bars { display: flex; gap: 2px; align-items: flex-end; height: 160px; border: 1px solid var(--ln); background: #141513; padding: 6px 6px 0; }
.bar-col { flex: 1; display: flex; flex-direction: column; align-items: stretch; height: 100%; min-width: 0; }
.stack { flex: 1; display: flex; flex-direction: column-reverse; }
.stack i { display: block; }
.bl { font: 9px var(--mono); color: var(--dim); text-align: center; padding: 2px 0; }
.sw.cleared { background: var(--up); } .sw.vetting { background: var(--warn); } .sw.recon { background: #8fb4d6; } .sw.low { background: #3e3f39; }
.legend { font: .9em var(--mono); color: var(--dim); display: flex; gap: 6px; align-items: center; margin: 4px 0; }
.legend .sw { display: inline-block; width: 10px; height: 10px; }
.logbox { max-height: 65vh; overflow-y: auto; font-size: .92em; }

@media (max-width: 900px) {
  .side { transform: translateX(-100%); transition: transform .15s; box-shadow: 4px 0 18px rgba(0,0,0,.6); }
  body.nav-open .side { transform: none; }
  .shell { margin-left: 0; }
  .menu-btn, .mlogo { display: block; }
  .crumb, .utc { display: none; }
  .levels { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 1100px) {
  .trade { grid-template-columns: 200px minmax(0, 1fr); }
  .t-side { grid-column: 1 / -1; border-left: 0; border-top: 1px solid var(--ln); }
}
@media (max-width: 900px) {
  .layout, .cols2 { grid-template-columns: 1fr; }
  .col-side { border-left: 0; border-top: 1px solid var(--ln); }
  .trade { grid-template-columns: 1fr; }
  .t-list { border-right: 0; }
  .t-stats { grid-template-columns: repeat(3, 1fr); }
  .chat { grid-template-columns: 1fr; height: auto; }
  .c-side { border-right: 0; max-height: 260px; }
  .msgs { min-height: 50vh; }
}
@media (max-width: 640px) {
  #filter { width: 100%; order: 9; }
  .live { min-width: 0; }
}

/* ---------- trade terminal ---------- */
.term { --pn: #131412; --pn2: #0e0f0d; --edge: #262723; --r: 6px; --sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --up: #3fb950; --down: #f0524a; display: grid; gap: 6px; padding: 6px; background: #090a08; font-family: var(--sans);
  grid-template-columns: 216px minmax(0, 1fr) 332px; grid-template-rows: minmax(0, 1fr) 210px;
  grid-template-areas: "list main side" "list tape side"; height: calc(100vh - var(--tb, 38px)); min-height: 680px; }
.term > * { background: var(--pn); border: 1px solid var(--edge); border-radius: var(--r); min-width: 0; min-height: 0; }
.term .up { color: var(--up); } .term .down { color: var(--down); }
.term input { font-family: var(--mono); }
/* coin list */
.tm-list { grid-area: list; display: flex; flex-direction: column; overflow: hidden; }
.tm-tabs { display: grid; grid-template-columns: repeat(4, 1fr); border-bottom: 1px solid var(--edge); }
.tm-tabs button { background: var(--pn2); color: var(--dim); border: 0; border-right: 1px solid var(--edge); padding: 8px 2px; font: 700 .76em var(--mono); text-transform: uppercase; letter-spacing: .01em; cursor: pointer; }
.tm-tabs button:last-child { border-right: 0; }
.tm-tabs button:hover { color: var(--hi); }
.tm-tabs button.on { background: var(--pn); color: var(--hi); box-shadow: inset 0 -2px 0 var(--red); }
.tm-search { display: flex; align-items: center; gap: 6px; padding: 8px; border-bottom: 1px solid var(--edge); }
.tm-search input { flex: 1; min-width: 0; background: var(--pn2); border: 1px solid var(--edge); border-radius: 4px; padding: 6px 8px; color: var(--hi); }
.tm-coins { flex: 1; overflow-y: auto; min-height: 0; }
.term .pk { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; gap: 8px; align-items: center; padding: 6px 8px; border: 0; border-left: 2px solid transparent; color: var(--tx); }
.term .pk img { width: 28px; height: 28px; border-radius: 50%; background: var(--bg3); }
.term .pk:hover { background: #1b1c19; text-decoration: none; }
.term .pk.on { background: #1f1512; border-left-color: var(--red); }
.pk-name { display: grid; min-width: 0; line-height: 1.25; }
.pk-name b { color: var(--hi); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.pk-name small { color: var(--dim); font: .88em var(--mono); }
.pk-ch { font: 600 .95em var(--mono); }
.tm-any { display: flex; gap: 4px; padding: 8px; border-top: 1px solid var(--edge); }
.tm-any input { flex: 1; min-width: 0; background: var(--pn2); border: 1px solid var(--edge); border-radius: 4px; padding: 5px 7px; color: var(--hi); }
/* header + chart */
.tm-main { grid-area: main; display: flex; flex-direction: column; overflow: hidden; }
.tm-head { display: flex; align-items: center; gap: 12px; padding: 8px 12px; border-bottom: 1px solid var(--edge); flex-wrap: wrap; }
.tm-head > img { width: 42px; height: 42px; border-radius: 50%; object-fit: cover; background: var(--bg3); flex: none; }
.tm-id { min-width: 120px; }
.tm-title { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.tm-title b { font-size: 1.35em; color: var(--hi); font-weight: 700; }
.tm-title .badge { border-radius: 4px; font-size: .8em; }
.tm-mint { background: none; border: 0; padding: 0; color: var(--dim); font: .9em var(--mono); cursor: pointer; }
.tm-mint:hover { color: var(--link); }
.tm-price { display: grid; line-height: 1.15; margin-left: 6px; }
.tm-price b { font: 700 1.7em var(--mono); color: var(--hi); border-radius: 3px; }
.tm-price small { color: var(--dim); font: .95em var(--mono); }
.fl-up { animation: flUp .7s ease-out; } .fl-down { animation: flDown .7s ease-out; }
@keyframes flUp { 0% { color: var(--up); background: rgba(63,185,80,.22); } }
@keyframes flDown { 0% { color: var(--down); background: rgba(240,82,74,.22); } }
.tm-stats { display: flex; gap: 16px; margin-left: auto; flex-wrap: wrap; }
.tm-stats small { display: block; color: var(--dim); font-size: .85em; }
.tm-stats b { font: 600 1.05em var(--mono); color: var(--hi); }
.tm-stats b.up { color: var(--up); } .tm-stats b.down { color: var(--down); }
.term .revoked { margin: 6px 10px 0; border-radius: 4px; }
.term .ch { flex: 1; margin: 0; border: 0; height: auto; min-height: 300px; background: var(--pn2); display: flex; flex-direction: column; }
.ch-bar { background: var(--pn); border-bottom: 1px solid var(--edge); padding: 5px 8px; }
.term .seg { border-color: var(--edge); border-radius: 4px; overflow: hidden; background: var(--pn2); }
.term .seg button { border-right-color: var(--edge); font-family: var(--mono); padding: 4px 9px; }
.term .seg button.on { background: #2a1a16; color: #ffb4a6; }
.ch-area { flex: 1; position: relative; }
.ch-legend { top: 6px; left: 8px; background: rgba(14,15,13,.8); border-radius: 3px; padding: 2px 6px; font-size: .92em; }
.ch-legend b { font-weight: 500; }
.ch-empty { position: absolute; inset: 0; z-index: 3; display: flex; align-items: center; justify-content: center; color: var(--dim); font-family: var(--mono); pointer-events: none; }
.ch-empty[hidden] { display: none; }
.ch-live { font: .9em var(--mono); color: var(--dim); display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.ch-live::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #55564e; }
.ch-live.on { color: var(--tx); }
.ch-live.on::before { background: var(--up); box-shadow: 0 0 6px var(--up); animation: blink 1s infinite alternate; }
.ch-ext { color: var(--dim); font: .9em var(--mono); }
/* tape */
.tm-tape { grid-area: tape; display: flex; flex-direction: column; overflow: hidden; }
.tm-tape-h { display: flex; align-items: center; gap: 12px; padding: 6px 10px; border-bottom: 1px solid var(--edge); }
.tm-tape-h b { color: var(--hi); font-weight: 600; }
.tm-tape-h .sp { flex: 1; }
.tm-press { display: inline-flex; align-items: center; gap: 6px; color: var(--dim); font: .9em var(--mono); }
.tm-press-bar { width: 90px; height: 5px; border-radius: 3px; background: var(--down); overflow: hidden; }
.tm-press-bar i { display: block; height: 100%; width: 50%; background: var(--up); transition: width .4s; }
.tm-rows { flex: 1; overflow-y: auto; min-height: 0; }
.tp { position: relative; display: grid; grid-template-columns: 40px 42px 1fr 1fr 1fr 90px; gap: 8px; padding: 3px 10px; font: .92em var(--mono); color: var(--tx); }
.tp > span { position: relative; }
.tp-head { color: var(--dim); border-bottom: 1px solid var(--edge); font-size: .85em; }
a.tp:hover { background: #1b1c19; text-decoration: none; }
.tp-bar { position: absolute; left: 0; top: 1px; bottom: 1px; opacity: .13; }
.tp.buy .tp-bar { background: var(--up); } .tp.sell .tp-bar { background: var(--down); }
.tp.buy .tp-side, .tp.buy .tp-usd { color: var(--up); } .tp.sell .tp-side, .tp.sell .tp-usd { color: var(--down); }
.tp-age, .tp-who { color: var(--dim); }
.tp.new.buy { animation: tpUp .9s ease-out; } .tp.new.sell { animation: tpDown .9s ease-out; }
@keyframes tpUp { 0% { background: rgba(63,185,80,.3); } } @keyframes tpDown { 0% { background: rgba(240,82,74,.3); } }
/* swap column */
.tm-side { grid-area: side; overflow-y: auto; padding: 0; }
.tm-swap { border-bottom: 1px solid var(--edge); }
.tm-fee { padding: 6px 12px; }
.tm-h { display: flex; justify-content: space-between; padding: 6px 12px; color: var(--hi); font-weight: 600; border-top: 1px solid var(--edge); }
.tm-side .bal { padding: 0 12px 10px; }
.term .sw { padding: 12px; grid-template-columns: minmax(0, 1fr); }
.term .sw-card input { width: 100%; }
.term .sw-tok { flex: none; }
.term .sw-quick button { min-width: 0; }
.term .sw-side { border-radius: var(--r); border-color: var(--edge); background: var(--pn2); }
.term .sw-side button { border-radius: 4px; font-family: var(--sans); text-transform: capitalize; letter-spacing: 0; font-weight: 600; font-size: 1.1em; box-shadow: none !important; }
.term .sw-side button.on { background: var(--side); color: #06130a; }
.term .sw[data-side="sell"] .sw-side button.on { color: #1d0705; }
.term .sw-card { border-radius: var(--r); background: var(--pn2); border-color: var(--edge); padding: 10px 12px; }
.term .sw-card.out { background: var(--pn2); }
.term .sw-lbl { text-transform: none; letter-spacing: 0; font-size: .95em; }
.term .sw-quick button { border-radius: 4px; background: #1b1c19; border-color: var(--edge); }
.term .sw-arrow { width: 26px; height: 26px; line-height: 24px; border-radius: 50%; background: var(--pn); border: 1px solid var(--edge); margin: -13px auto; position: relative; z-index: 1; font-size: 1em; }
.term .sw-go { border-radius: var(--r); font-family: var(--sans); text-transform: none; letter-spacing: 0; font-size: 1.25em; padding: 13px; }
.term .sw-go.buy:not(:disabled) { background: var(--up); border-color: var(--up); color: #06130a; }
.term .sw-go.sell:not(:disabled) { background: var(--down); border-color: var(--down); color: #1d0705; }
.term .sw-q { border: 0; }
.term .sw-q td { border: 0; padding: 2px 0; background: none; }
@media (max-width: 1180px) {
  .term { height: auto; min-height: 0; grid-template-columns: minmax(0, 1fr) 320px; grid-template-rows: auto auto auto;
    grid-template-areas: "list list" "main side" "tape side"; }
  .tm-list { flex-direction: row; }
  .tm-search, .tm-any { display: none; }
  .tm-coins { display: flex; overflow-x: auto; overflow-y: hidden; }
  .term .pk { flex: none; grid-template-columns: 22px auto auto; border-left: 0; border-bottom: 2px solid transparent; }
  .term .pk.on { border-bottom-color: var(--red); }
  .term .pk img { width: 22px; height: 22px; }
  .pk-name small { display: none; }
  .term .ch { flex: none; height: 460px; }
  .tm-rows { max-height: 240px; }
}
@media (max-width: 800px) {
  .term { grid-template-columns: minmax(0, 1fr); grid-template-areas: "list" "main" "side" "tape"; padding: 4px; gap: 4px; }
  .term .ch { height: 380px; }
  .tm-stats { margin-left: 0; gap: 12px; width: 100%; }
  .tp { grid-template-columns: 34px 36px 1fr 1fr 1fr; gap: 6px; }
  .tp-who { display: none; }
  .ch-live { order: 9; width: 100%; }
}

/* ---------- dev portal: members ---------- */
.dv-tools { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin: 6px 0; }
.dv-tools input { width: 280px; max-width: 100%; padding: 4px 8px; }
.dv-row { cursor: pointer; }
.dv-copy { background: none; border: 0; padding: 0; color: var(--tx); font: 1em var(--mono); cursor: copy; text-align: left; overflow-wrap: anywhere; }
.dv-copy:hover { color: var(--link); }
.dv-detail td { background: #141513; }
.dv-det { display: flex; gap: 12px; align-items: flex-start; padding: 4px; }
.dv-det .kv { margin: 0; }
.dv-av { width: 72px; height: 72px; object-fit: cover; border: 1px solid var(--ln); flex: none; }

/* ---------- trade page: market data panel ---------- */
.m-info { border-top: 1px solid var(--edge); }
.mi-note { padding: 10px 12px; }
.mi-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: var(--edge); border-bottom: 1px solid var(--edge); }
.mi-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--edge); border-radius: 4px; overflow: hidden; }
.mi-st { background: var(--pn); padding: 7px 12px; min-width: 0; }
.mi-grid.three .mi-st { padding: 6px 8px; text-align: center; }
.mi-st small, .mi-split small, .mi-win small { display: block; color: var(--dim); font-size: .85em; }
.mi-st b { font: 600 1.1em var(--mono); color: var(--hi); overflow-wrap: anywhere; }
.mi-st b.up { color: var(--up); } .mi-st b.down { color: var(--down); }
.mi-win { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-bottom: 1px solid var(--edge); }
.mi-win button { background: none; border: 0; border-right: 1px solid var(--edge); padding: 6px 2px; cursor: pointer; color: var(--tx); font-family: var(--sans); }
.mi-win button:last-child { border-right: 0; }
.mi-win button:hover { background: var(--pn2); }
.mi-win button.on { background: var(--pn2); box-shadow: inset 0 -2px 0 #ffb4a6; }
.mi-win b { font: 600 .95em var(--mono); }
.mi-win b.up { color: var(--up); } .mi-win b.down { color: var(--down); }
.mi-flow { display: grid; gap: 8px; padding: 10px 12px; border-bottom: 1px solid var(--edge); }
.mi-split-h { display: flex; justify-content: space-between; }
.mi-split-h span:last-child { text-align: right; }
.mi-split-h b { font: 600 1em var(--mono); }
.mi-split-h b.up { color: var(--up); } .mi-split-h b.down { color: var(--down); }
.mi-split-b { display: flex; gap: 2px; height: 5px; margin-top: 3px; }
.mi-split-b i { display: block; flex: 1 1 0; min-width: 2px; border-radius: 2px; }
.mi-split-b .g { background: var(--up); } .mi-split-b .r { background: var(--down); }
.mi-sec { padding: 8px 12px; border-bottom: 1px solid var(--edge); }
.mi-sec h3 { margin: 0 0 4px; font: 600 .95em var(--sans); color: var(--hi); }
.mi-kv { display: flex; justify-content: space-between; gap: 10px; padding: 2px 0; color: var(--dim); }
.mi-kv b { font: 500 1em var(--mono); color: var(--tx); text-align: right; }
.mi-kv b.up { color: var(--up); } .mi-kv b.down { color: var(--down); } .mi-kv b.warn { color: var(--warn); }
.mi-addr { background: none; border: 0; padding: 0; color: var(--tx); font: 1em var(--mono); cursor: copy; }
.mi-addr:hover { color: var(--link); }
.mi-links { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.mi-links a { padding: 2px 8px; border: 1px solid var(--edge); border-radius: 4px; background: var(--pn2); }
.mi-holders { border-bottom: 1px solid var(--edge); }
.mi-holders summary { padding: 7px 12px; cursor: pointer; color: var(--hi); font-weight: 600; }
.mi-h { display: grid; grid-template-columns: 22px auto minmax(0, 1fr) auto; gap: 6px; padding: 2px 12px; font-family: var(--mono); }
.mi-h b { font-weight: 500; }
.mi-tag { color: var(--dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .85em; }

/* ---------- token intel: header buttons, bubble map, positions, calls, upside ---------- */
.tm-head { position: relative; }
.tm-intel { display: flex; gap: 6px; align-items: center; margin-left: auto; align-self: center; flex-wrap: wrap; }
.ti-btn, .ti-up { font: 600 .82em var(--sans, system-ui); border: 1px solid var(--edge, var(--ln)); background: var(--pn2, var(--bg2)); color: var(--tx);
  border-radius: 6px; padding: 5px 9px; cursor: pointer; white-space: nowrap; transition: transform .1s, border-color .15s, background .15s; }
.ti-btn:hover, .ti-up:hover { transform: translateY(-1px); border-color: var(--ln2); background: var(--bg3); }
.ti-up { display: inline-flex; gap: 6px; align-items: center; text-transform: lowercase; }
.ti-up b { font-weight: 700; }
.ti-up.up { border-color: #2f6b36; } .ti-up.up b { color: var(--up); }
.ti-up.warn { border-color: #6b561f; } .ti-up.warn b { color: var(--warn); }
.ti-up.down { border-color: #6b2c28; } .ti-up.down b { color: var(--down); }
html.calm .ti-btn:hover, html.calm .ti-up:hover { transform: none; }

body.modal-open { overflow: hidden; }
.intel { position: fixed; inset: 0; z-index: 90; background: rgba(6, 7, 6, .72); display: flex; align-items: center; justify-content: center;
  padding: 20px; backdrop-filter: blur(3px); }
.intel[hidden] { display: none; }
.intel-box { --pn: #131412; --pn2: #0e0f0d; --edge: #272824; --sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  width: min(900px, 100%); max-height: min(680px, 92vh); display: flex; flex-direction: column; background: var(--pn); border: 1px solid var(--edge);
  border-radius: 10px; overflow: hidden; box-shadow: 0 24px 70px rgba(0, 0, 0, .6); font-family: var(--sans); }
.intel .up { color: var(--up); } .intel .down { color: var(--down); } .intel .warn { color: var(--warn); } .intel .dim { color: var(--dim); }
.intel .sp { flex: 1; }
.intel-bar { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-bottom: 1px solid var(--edge); background: var(--pn2); }
.intel-title { display: flex; align-items: center; gap: 8px; font-size: 1.05em; }
.intel-title b { color: var(--hi); }
.intel-up { font-size: .72em; font-weight: 700; padding: 2px 7px; border-radius: 20px; border: 1px solid var(--edge); cursor: pointer; color: var(--dim); }
.intel-up.up { color: var(--up); border-color: #2f6b36; } .intel-up.warn { color: var(--warn); border-color: #6b561f; } .intel-up.down { color: var(--down); border-color: #6b2c28; }
.intel-tabs { display: flex; gap: 2px; flex-wrap: wrap; }
.intel-tabs button { font: 600 .86em var(--sans); background: transparent; border: 1px solid transparent; color: var(--dim); padding: 5px 10px; border-radius: 6px; cursor: pointer; }
.intel-tabs button:hover { color: var(--tx); background: #1b1c19; }
.intel-tabs button.on { background: #2a1a16; color: #ffb4a6; border-color: #4a2a22; }
.intel-x { font-size: 1.05em; background: transparent; border: 0; color: var(--dim); cursor: pointer; padding: 4px 8px; border-radius: 6px; }
.intel-x:hover { color: var(--hi); background: #1b1c19; }
.intel-body { padding: 14px; overflow-y: auto; }
.intel-sub { color: var(--dim); font-size: .9em; margin-bottom: 12px; line-height: 1.45; }
.intel-note { color: var(--dim); text-align: center; padding: 40px 10px; }

.bub-wrap { display: grid; grid-template-columns: minmax(0, 1fr) 210px; gap: 12px; }
.bub-stage { position: relative; height: 380px; background: radial-gradient(circle at 50% 45%, #15160f, #0b0c0a 72%); border: 1px solid var(--edge); border-radius: 8px; overflow: hidden; }
.bub { position: absolute; border-radius: 50%; border: 1.5px solid var(--bc); background: color-mix(in srgb, var(--bc) 24%, transparent); color: #f3f1e6;
  font: 700 11px var(--sans); cursor: pointer; display: flex; align-items: center; justify-content: center; text-align: center; line-height: 1;
  transition: transform .12s, box-shadow .12s; padding: 0; overflow: hidden; }
.bub:hover { transform: scale(1.06); box-shadow: 0 0 0 2px color-mix(in srgb, var(--bc) 55%, transparent); z-index: 2; }
.bub.on { box-shadow: 0 0 0 2px var(--bc), 0 0 16px color-mix(in srgb, var(--bc) 60%, transparent); z-index: 3; }
.bub-side { border: 1px solid var(--edge); border-radius: 8px; padding: 12px; background: var(--pn2); align-self: start; }
.bs-head { display: flex; align-items: center; gap: 7px; font-weight: 700; color: var(--hi); margin-bottom: 8px; }
.bs-addr { font: .9em var(--mono); background: #1b1c19; border: 1px solid var(--edge); border-radius: 5px; color: var(--tx); padding: 4px 8px; cursor: pointer; width: 100%; text-align: left; margin-bottom: 8px; }
.bs-addr:hover { border-color: var(--ln2); }
.bs-kv { display: flex; justify-content: space-between; align-items: baseline; padding: 4px 0; border-bottom: 1px solid #1c1d19; font-size: .92em; }
.bs-kv b { color: var(--hi); font-family: var(--mono); }
.bs-link { display: inline-block; margin-top: 10px; font-size: .88em; color: var(--link); }
.cdot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; flex: none; }
.bub-foot { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 10px; }
.bub-legend { display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: .82em; color: var(--dim); }
.bl { display: inline-flex; align-items: center; gap: 5px; }
.bub-conc b { font-family: var(--mono); font-weight: 700; }

.pos { font-size: .9em; }
.pos-r { display: grid; grid-template-columns: 26px minmax(0, 1.2fr) minmax(0, 1.1fr) 70px 72px 72px 52px; gap: 8px; align-items: center; padding: 5px 6px; border-bottom: 1px solid #1a1b17; font-family: var(--mono); }
.pos-r > span, .pos-r > a, .pos-r > b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pos-h { position: sticky; top: 0; background: var(--pn); color: var(--dim); font-family: var(--sans); font-size: .82em; text-transform: uppercase; letter-spacing: .04em; border-bottom: 1px solid var(--edge); }
.pos-h span { overflow: visible; }
.pos-tag { display: inline-flex; align-items: center; gap: 5px; color: var(--dim); font-family: var(--sans); font-size: .88em; }
.pos-r b { color: var(--hi); font-weight: 600; }

.call-new { display: flex; gap: 8px; align-items: center; margin-bottom: 12px; }
.call-new input { flex: 1; background: var(--pn2); border: 1px solid var(--edge); border-radius: 7px; color: var(--tx); padding: 9px 11px; font-family: var(--sans); }
.call-new input:focus { outline: none; border-color: var(--red); }
.call-new .btn { white-space: nowrap; }
.call-list { display: flex; flex-direction: column; gap: 8px; }
.call { display: flex; gap: 10px; align-items: flex-start; padding: 10px; border: 1px solid var(--edge); border-radius: 8px; background: var(--pn2); }
.call-av { width: 34px; height: 34px; border-radius: 8px; object-fit: cover; background: var(--bg3); flex: none; }
.call-main { flex: 1; min-width: 0; }
.call-top { display: flex; align-items: center; gap: 6px; }
.call-who { color: var(--hi); font-weight: 600; }
.call-age { font-size: .85em; }
.call-x { font-family: var(--mono); font-weight: 700; }
.call-note { margin: 4px 0 2px; color: var(--tx); line-height: 1.4; word-break: break-word; }
.call-meta { font-size: .82em; }
.call-del { background: transparent; border: 0; color: var(--dim); cursor: pointer; font-size: .9em; padding: 2px 6px; border-radius: 5px; }
.call-del:hover { color: var(--down); background: #1b1c19; }

.up-head { display: flex; gap: 16px; align-items: center; margin-bottom: 16px; }
.up-dial { width: 92px; height: 92px; border-radius: 50%; flex: none; display: flex; flex-direction: column; align-items: center; justify-content: center;
  border: 3px solid var(--ln2); background: var(--pn2); }
.up-dial.up { border-color: var(--up); } .up-dial.warn { border-color: var(--warn); } .up-dial.down { border-color: var(--down); }
.up-dial b { font-size: 2em; color: var(--hi); line-height: 1; } .up-dial small { color: var(--dim); font-size: .7em; }
.up-band { font-size: 1.15em; font-weight: 700; color: var(--hi); margin-bottom: 4px; text-transform: capitalize; }
.up-band.up { color: var(--up); } .up-band.warn { color: var(--warn); } .up-band.down { color: var(--down); }
.up-parts { display: flex; flex-direction: column; gap: 10px; }
.up-p { display: grid; grid-template-columns: minmax(0, 1fr) 150px; gap: 12px; align-items: center; }
.up-lab b { color: var(--hi); font-weight: 600; } .up-lab span { display: block; }
.up-bar { height: 8px; background: #1b1c19; border-radius: 6px; overflow: hidden; }
.up-bar i { display: block; height: 100%; border-radius: 6px; background: var(--ln2); }
.up-bar i.up { background: var(--up); } .up-bar i.warn { background: var(--warn); } .up-bar i.down { background: var(--down); }
.up-foot { margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--edge); line-height: 1.5; }

.tm-coins .pk .up-pill { color: var(--up); font-weight: 700; font-family: var(--mono); }

/* coin age + graduation chips under the price */
.tm-meta { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.tm-chip { display: inline-flex; align-items: center; gap: 6px; background: var(--pn2, var(--bg2)); border: 1px solid var(--edge, var(--ln)); border-radius: 6px; padding: 3px 8px; font-size: .82em; }
.tm-chip i { font-style: normal; color: var(--dim); text-transform: uppercase; letter-spacing: .04em; font-size: .9em; }
.tm-chip b { color: var(--hi); font-family: var(--mono); font-weight: 600; }
.tm-chip.grad { border-color: #5a4a1f; }
.tm-chip.grad b { color: var(--warn); }
.tm-gradbar { width: 46px; height: 5px; border-radius: 3px; background: #2a2b27; overflow: hidden; }
.tm-gradbar i { display: block; height: 100%; background: var(--warn); border-radius: 3px; }

/* "your position" card by the swap box */
.tm-pos { margin: 10px 12px 0; border: 1px solid var(--edge); border-radius: var(--r); background: var(--pn2); padding: 8px 10px; }
.tp-h { font-size: .7em; text-transform: uppercase; letter-spacing: .09em; color: var(--dim); margin-bottom: 6px; }
.tp-rows { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px; }
.tp-kv { display: flex; justify-content: space-between; gap: 8px; font-family: var(--mono); font-size: .9em; }
.tp-kv b { color: var(--hi); font-weight: 600; }
.tm-pos .up { color: var(--up); } .tm-pos .down { color: var(--down); }

@media (max-width: 680px) {
  .bub-wrap { grid-template-columns: 1fr; }
  .bub-stage { height: 320px; }
  .up-head { flex-direction: column; text-align: center; }
  .up-p { grid-template-columns: 1fr; gap: 4px; }
  .pos-r { grid-template-columns: 22px minmax(0, 1fr) 60px 64px 60px; }
  .pos-r > :nth-child(3), .pos-h > :nth-child(3), .pos-r > :nth-child(7), .pos-h > :nth-child(7) { display: none; }
}

/* home: alpha upside badge + latest calls */
.home-up { margin-left: auto; font-size: .78em; font-weight: 700; color: var(--up); background: rgba(133, 196, 100, .12);
  border: 1px solid rgba(133, 196, 100, .3); border-radius: 20px; padding: 2px 9px; white-space: nowrap; }
.home-calls { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 8px; margin: 10px 0; }
.hc { display: flex; align-items: center; gap: 10px; padding: 9px 11px; border: 1px solid var(--ln); border-radius: 8px; background: var(--bg2);
  transition: transform .1s, border-color .15s; }
.hc:hover { transform: translateY(-2px); border-color: var(--ln2); text-decoration: none; }
html.calm .hc:hover { transform: none; }
.hc-av { width: 32px; height: 32px; border-radius: 8px; object-fit: cover; background: var(--bg3); flex: none; }
.hc-mid { flex: 1; min-width: 0; }
.hc-top { font-size: .9em; }
.hc-top b { color: var(--hi); }
.hc-note { color: var(--tx); font-size: .88em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hc-x { font-family: var(--mono); font-weight: 700; flex: none; }
.hc-x.up { color: var(--up); } .hc-x.down { color: var(--down); }

/* ---------- home: Signal Field (black + red, matches the landing) ---------- */
body[data-page="home"] .shell { background: #0f100e; }
body[data-page="home"] .content { background: transparent; }
body[data-page="home"] .hero, body[data-page="home"] .tiles { display: none; }   /* replaced by the signal hero */
.sig-hero { position: relative; overflow: hidden; border: 1px solid rgba(168,53,43,.5); background: #0b0c09; margin: 8px 0 14px;
  box-shadow: 0 0 0 1px rgba(208,69,59,.1), inset 0 0 90px rgba(0,0,0,.5); }
#homeField { position: absolute; inset: 0; width: 100%; height: 100%; display: block; z-index: 0; }
.sig-hero-in { position: relative; z-index: 1; padding: 42px 28px; }
.sig-badge { display: inline-flex; align-items: center; gap: 8px; font: .78em var(--mono); color: var(--dim); text-transform: uppercase;
  letter-spacing: 1px; border: 1px solid rgba(168,53,43,.5); background: rgba(15,16,14,.72); padding: 4px 11px; border-radius: 999px; }
.sig-badge b { color: var(--up); font-weight: normal; }
.sig-badge .live-num::before { display: none; }   /* the badge already shows a status dot */
.sig-badge .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--up); box-shadow: 0 0 0 0 rgba(133,196,100,.6); animation: pdotH 1.8s infinite; }
@keyframes pdotH { 70% { box-shadow: 0 0 0 7px rgba(133,196,100,0); } 100% { box-shadow: 0 0 0 0 rgba(133,196,100,0); } }
html.calm .sig-badge .dot { animation: none; }
.sig-title { font: 900 clamp(2em, 5.2vw, 3.7em)/.97 "Arial Black", "Segoe UI Black", Impact, sans-serif; color: var(--hi);
  letter-spacing: -.5px; text-transform: uppercase; margin: 16px 0 0; }
.sig-title .r { color: var(--up); text-shadow: 0 0 26px rgba(133,196,100,.35); }   /* "worth buying" = profit = green */
.sig-sub { color: var(--dim); max-width: 54ch; margin: 14px 0 0; font-size: 1.08em; }
.sig-cta { margin-top: 22px; display: flex; gap: 10px; flex-wrap: wrap; }
.sig-chips { margin-top: 16px; display: flex; gap: 8px; flex-wrap: wrap; }
.sig-chip { font: .72em var(--mono); text-transform: uppercase; letter-spacing: 1px; color: var(--dim);
  border: 1px solid rgba(168,53,43,.35); padding: 5px 11px; border-radius: 999px; background: rgba(15,16,14,.6); }
.sig-chip b { color: var(--hi); font-size: 1.2em; }
.sig-chip .live-num::before { vertical-align: middle; }
.sig-sec { font: bold .85em var(--mono); text-transform: uppercase; letter-spacing: 2px; color: #d0453b; margin: 34px 0 12px;
  padding: 0 0 0 10px; border-left: 3px solid var(--red); background: none; display: flex; gap: 8px; align-items: baseline; }
body[data-page="home"] .now { gap: 10px; }
body[data-page="home"] .card { padding: 10px 12px; }
.sig-sec .d { font: normal .92em var(--mono); color: var(--dim); text-transform: none; letter-spacing: 0; }
.sig-sec .more { margin-left: auto; font: normal .88em var(--mono); color: var(--dim); text-transform: none; letter-spacing: 0; }
.sig-sec .more:hover { color: #d0453b; }
.sig-foot { margin-top: 20px; }
body[data-page="home"] .card { background: rgba(15,16,14,.72); border: 1px solid rgba(168,53,43,.3);
  border-left: 3px solid rgba(133,196,100,.45); backdrop-filter: blur(4px); }   /* green edge: these are the profit picks */
body[data-page="home"] .card:hover { border-color: rgba(133,196,100,.7); box-shadow: 0 0 22px -6px rgba(133,196,100,.35); }
body[data-page="home"] .card.up-edge { border-left-color: var(--up); }
body[data-page="home"] .lv-edge-cleared { border-left-color: var(--up); }
body[data-page="home"] .lv-edge-vetting { border-left-color: var(--warn); }
body[data-page="home"] .lv-edge-recon { border-left-color: #8fb4d6; }
/* upside is a *profit* signal, so it reads green (the loss colour on an upside badge reads as a loss) */
body[data-page="home"] .home-up { color: #0e1a08; background: var(--up); border-radius: 3px; padding: 0 6px;
  box-shadow: 0 0 10px rgba(133,196,100,.4); }
body[data-page="home"] .hc { background: rgba(15,16,14,.72); border: 1px solid rgba(168,53,43,.3); }
body[data-page="home"] .hc:hover { border-color: #d0453b; }
