/* CABAL: ink and bone, one red eye (Desktop/Cabal Brand/brand.json, docs/BRAND-CABAL.md). Dark only, by brand.
   Cabal Red is reserved for the eye (mark, wordmark dots, the graph's funder node) and SCAM SIGNS. */
:root {
  --ink: #0A0909;        /* background */
  --ink2: #121011;       /* raised surfaces */
  --ink3: #191617;       /* hover / inset */
  --line: #2A2426;       /* hairlines */
  --line2: #3B3335;      /* stronger hairlines, inputs */
  --bone: #F1EBE1;       /* mark + text */
  --text2: #CFC7BC;      /* body text */
  --ash: #8E867E;        /* muted text (5.4:1 on ink) */
  --red: #E3243B;        /* the eye */
  --red-deep: #7A0E1C;
  /* verdict colours (display words only; the published rules are unchanged) */
  --real: #3DDC84; --unproven: #A9A196; --meme: #B79CFF; --larp: #FFB224; --scam: #FF3B52; --unread: #6F6861;
  --sans: 'Geist', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --serif: 'Instrument Serif', Georgia, serif;
  --mono: 'Geist Mono', ui-monospace, Consolas, monospace;
  --r: 12px;
  color-scheme: dark;
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
body {
  margin: 0; color: var(--text2); font: 400 16px/1.55 var(--sans); overflow-x: hidden; -webkit-font-smoothing: antialiased;
  background-color: var(--ink);
  background-image: radial-gradient(rgba(241, 235, 225, .055) 1px, transparent 1.2px);
  background-size: 28px 28px;
}
b, strong { color: var(--bone); font-weight: 600; }
a { color: var(--bone); text-underline-offset: 3px; text-decoration-color: rgba(241, 235, 225, .35); }
a:hover { text-decoration-color: var(--bone); }
:focus-visible { outline: 2px solid var(--bone); outline-offset: 2px; }
.wrap { width: 100%; max-width: 1180px; margin: 0 auto; padding: 0 16px; }
.mono { font-family: var(--mono); }
.eyebrow { font: 500 12px/1.3 var(--mono); text-transform: uppercase; letter-spacing: .12em; color: var(--ash); margin: 0 0 12px; }
.small { font-size: 13px; color: var(--ash); }
.muted { color: var(--ash); }
.serif { font-family: var(--serif); font-style: italic; font-weight: 400; letter-spacing: 0; }
.empty { color: var(--ash); padding: 20px; border: 1px dashed var(--line2); border-radius: var(--r); text-align: center; background: rgba(18, 16, 17, .6); }
[hidden] { display: none !important; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- header ---------- */
.top { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 16px; padding-bottom: 16px; }
.wordmark { display: inline-flex; align-items: center; gap: 10px; color: var(--bone); text-decoration: none; }
.wordmark .mark { width: 34px; height: 34px; flex: none; }
.wordmark .wmk { height: 21px; width: auto; flex: none; }
.topright { display: flex; align-items: center; gap: 8px; min-width: 0; }
.pill { color: var(--bone); text-decoration: none; font: 500 11px/1 var(--mono); text-transform: uppercase; letter-spacing: .08em; background: var(--ink2); border: 1px solid var(--line2); border-radius: 999px; padding: 9px 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 46vw; }
.pill.on { background: var(--bone); border-color: var(--bone); color: var(--ink); }
a.pill:hover { background: var(--ink3); border-color: var(--ash); } a.pill.on:hover { background: #fff; }
/* the account pill (every header, last): "Link wallet", or the linked wallet + a Holder badge (bone fill) */
.pill.acct { display: inline-flex; align-items: center; gap: 7px; border-color: var(--ash); }
.pill.acct::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--ash); flex: none; }
.pill.acct.on::before { background: var(--real); box-shadow: 0 0 0 2px rgba(10, 9, 9, .25); }
.pill.acct .al { overflow: hidden; text-overflow: ellipsis; }
.pill.acct .hb { font-weight: 700; background: var(--ink); color: var(--bone); border-radius: 999px; padding: 3px 7px; margin: -3px -5px -3px 0; letter-spacing: .06em; }
@media (max-width: 440px) {
  .topright .pill + .pill { display: none; } .topright .ghostpill { display: none; }
  .topright #lanePill { display: inline-block; max-width: none; letter-spacing: .04em; padding: 9px 10px; }
  .topright .pill.acct { display: inline-flex; letter-spacing: .04em; padding: 9px 10px; max-width: 44vw; }
  .topright .pill.acct .hb { display: none; }
  #lanePill .pl { display: none; } /* the account pill sits next to it: the ticker alone ("pre-launch" is in the lane box) */
}
.tk { font-family: var(--mono); font-weight: 600; color: var(--bone); }

/* ---------- buttons ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; padding: 0 20px; border: 1px solid var(--line2); border-radius: 10px; background: var(--ink2); color: var(--bone); font: 600 15px/1 var(--sans); text-decoration: none; cursor: pointer; transition: background .12s, border-color .12s, transform .08s; }
.btn:hover { background: var(--ink3); border-color: var(--ash); color: var(--bone); }
.btn:active { transform: translateY(1px); }
.btn.primary, .btn.blue { background: var(--bone); border-color: var(--bone); color: var(--ink); }
.btn.primary:hover, .btn.blue:hover { background: #fff; border-color: #fff; color: var(--ink); }
.btn.ghost { background: transparent; color: var(--bone); }
.btn.sm { min-height: 38px; padding: 0 14px; font-size: 14px; }
.btn[disabled] { opacity: .5; cursor: not-allowed; transform: none; }

/* ---------- hero ---------- */
.hero { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; padding-top: 24px; padding-bottom: 40px; }
.hero h1 { font: 800 clamp(48px, 12.5vw, 108px)/0.92 var(--sans); letter-spacing: -0.05em; color: var(--bone); margin: 0 0 22px; }
.hero h1 .l1 { white-space: nowrap; }
.hero h1 .serif { font-size: 1.12em; letter-spacing: -0.015em; display: inline-block; color: var(--bone); }
.lede { font-size: 17px; line-height: 1.55; max-width: 48ch; margin: 0 0 26px; color: var(--text2); }
@media (min-width: 700px) { .lede { font-size: 19px; } }

.checkbox { background: var(--ink2); border: 1px solid var(--line2); border-radius: 14px; padding: 7px; display: flex; gap: 8px; max-width: 640px; box-shadow: 0 0 0 6px rgba(241, 235, 225, .025), 0 18px 50px -20px rgba(0, 0, 0, .8); }
.checkbox input { flex: 1; min-width: 0; width: 0; border: 0; outline: 0; background: transparent; font: 500 17px/1.2 var(--sans); color: var(--bone); padding: 10px 10px; }
.checkbox:focus-within { border-color: var(--ash); }
.checkbox input::placeholder { color: var(--ash); }
.checkbox .paste { background: transparent; color: var(--text2); border-color: var(--line); min-height: 48px; padding: 0 12px; font-size: 14px; }
.checkbox .btn { flex: none; }
.checkbox .btn.primary { min-width: 92px; }
@media (max-width: 420px) { .checkbox .paste { display: none; } .checkbox .btn.primary { min-width: 0; padding: 0 18px; } }
.limits { font: 400 12.5px/1.6 var(--mono); color: var(--ash); margin: 10px 0 0; max-width: 640px; }
.accepts { font: 500 11px/1.6 var(--mono); text-transform: uppercase; letter-spacing: .1em; color: var(--ash); margin: 14px 0 0; }
.accepts b { color: var(--bone); font-weight: 600; border-bottom: 1px solid var(--red); }
.limits b { color: var(--bone); font-weight: 600; }
.formnote { margin: 8px 0 0; font-weight: 500; color: var(--bone); }
.formnote:empty { display: none; }
.formnote.err { color: var(--scam); }
.recent { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; margin: 14px 0 0; max-width: 640px; font: 400 13px/1.4 var(--mono); color: var(--ash); }
.recent a { display: inline-flex; align-items: center; gap: 8px; color: var(--bone); text-decoration: none; font-weight: 500; }
.recent a:hover span:last-child { text-decoration: underline; }

.heroart { margin: 0; display: none; }
.heroart svg { display: block; width: 100%; height: auto; overflow: visible; }
@media (prefers-reduced-motion: no-preference) {
  .heroart svg { animation: heroin 1.2s ease-out both; }
  @keyframes heroin { from { opacity: 0; transform: scale(.97); } }
  .row.fresh { animation: fresh 1.6s ease-out; }
  @keyframes fresh { from { background: var(--ink3); border-color: var(--ash); } }
}
@media (min-width: 980px) {
  .hero { grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); align-items: center; gap: 40px; padding-top: 40px; padding-bottom: 64px; }
  .heroart { display: block; }
}

/* ---------- sections ---------- */
section.block { padding-top: 44px; padding-bottom: 44px; border-top: 1px solid var(--line); }
.sechead { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 20px; }
.sechead h2 { font: 800 clamp(32px, 6vw, 50px)/1 var(--sans); letter-spacing: -0.04em; margin: 0; color: var(--bone); }
.sechead h2 .serif { font-size: 1.1em; }
.sechead .eyebrow { margin: 0; }

/* ---------- Cabal Trace (home) ---------- */
.tracegrid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; align-items: start; }
@media (min-width: 980px) { .tracegrid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; } }
@media (max-width: 979px) { .tracegrid .example { order: -1; } }
.traceparts { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
@media (min-width: 640px) and (max-width: 979px) { .traceparts { grid-template-columns: 1fr 1fr; } }
.tpart { display: grid; grid-template-columns: 34px 1fr; gap: 10px; background: var(--ink2); border: 1px solid var(--line); border-radius: var(--r); padding: 16px; }
.tpart h3 { font: 700 17px/1.2 var(--sans); color: var(--bone); margin: 0 0 6px; letter-spacing: -0.01em; }
.tpart p { margin: 0; font-size: 14.5px; line-height: 1.5; }
.tnum { font: 500 12px/22px var(--mono); color: var(--ash); }
.example { position: relative; overflow: hidden; background: var(--ink2); border: 1px solid var(--line2); border-radius: 16px; padding: 18px; }
.example::before { content: ''; position: absolute; right: -90px; top: -90px; width: 260px; height: 260px; border-radius: 50%; background: radial-gradient(closest-side, rgba(227, 36, 59, .22), transparent); pointer-events: none; }
.exhead { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; position: relative; }
.exhead span:first-child { color: var(--bone); }
.ex-title { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; margin: 2px 0 14px; position: relative; }
.ex-title b { font: 800 30px/1 var(--sans); letter-spacing: -0.03em; }
.ex-chain { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin: 0 0 14px; position: relative; }
.ex-node { font: 500 12.5px/1 var(--mono); color: var(--bone); background: var(--ink); border: 1px solid var(--line2); border-radius: 8px; padding: 8px 10px; white-space: nowrap; }
.ex-node.dev { background: var(--bone); color: var(--ink); border-color: var(--bone); }
.ex-node.ex { border-style: dashed; }
.ex-node.gap { color: var(--ash); border-style: dashed; }
.ex-arrow { font: 500 11.5px/1 var(--mono); color: var(--ash); white-space: nowrap; }
.ex-lines { list-style: none; margin: 0 0 14px; padding: 0; display: grid; gap: 8px; position: relative; }
.ex-lines li { display: grid; grid-template-columns: 18px 1fr; gap: 8px; font-size: 14.5px; line-height: 1.45; }
.ex-lines li::before { content: ''; width: 8px; height: 8px; border-radius: 50%; margin-top: 7px; background: var(--ash); }
.ex-lines li.kolline::before { background: var(--bone); box-shadow: 0 0 0 3px rgba(241, 235, 225, .15); }
.ex-lines li.eye::before { background: var(--red); box-shadow: 0 0 0 3px rgba(227, 36, 59, .2); }
.ex-foot { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; position: relative; }
.tracenote { margin: 16px 0 0; max-width: 90ch; }

/* the lane line */
.lane { font-weight: 500; font-size: 15px; padding: 12px 14px; border-radius: var(--r); background: var(--ink2); border: 1px solid var(--line); color: var(--text2); }
.lane.instant { background: var(--bone); color: var(--ink); border-color: var(--bone); }

/* ---------- verdict stamps (tinted pills; SCAM SIGNS filled) ---------- */
.stamp { display: inline-flex; align-items: center; gap: 7px; font: 600 11.5px/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; padding: 6px 10px 6px 8px; border: 1px solid; border-radius: 999px; background: color-mix(in srgb, currentColor 10%, transparent); border-color: color-mix(in srgb, currentColor 33%, transparent); }
.stamp::before { content: ''; width: 7px; height: 7px; border: 2px solid currentColor; border-radius: 50%; flex: none; }
.v-real { color: var(--real); } .v-larp { color: var(--larp); } .v-scam { color: var(--scam); } .v-unproven { color: var(--unproven); } .v-meme { color: var(--meme); } .v-unread, .v-none { color: var(--unread); }
.stamp.v-scam { background: var(--scam); border-color: var(--scam); color: #1A0306; }
.stamp.v-scam::before { border-color: #1A0306; }
.stamp.v-none, .stamp.v-unread { color: #A39B93; }
.chain { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 500; color: var(--text2); white-space: nowrap; }
.chain::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: var(--ash); }
.lv-green::before { background: var(--real); } .lv-yellow::before { background: var(--larp); } .lv-red::before { background: var(--scam); }

/* ---------- the runner feed ---------- */
.rows { display: grid; gap: 10px; }
.row { display: grid; grid-template-columns: 1fr auto; gap: 8px 14px; align-items: center; background: var(--ink2); border: 1px solid var(--line); border-radius: var(--r); padding: 14px 16px; text-decoration: none; color: var(--text2); transition: border-color .12s, background .12s; }
a.row:hover { border-color: var(--line2); background: var(--ink3); }
.row .who { min-width: 0; display: grid; gap: 6px; justify-items: start; }
.row .tick { font: 700 20px/1.1 var(--sans); letter-spacing: -0.02em; overflow-wrap: anywhere; color: var(--bone); }
.row .nm { color: var(--ash); font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.row .nums { font: 400 13px/1.5 var(--mono); color: var(--ash); grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 4px 14px; }
.row .nums b { color: var(--bone); font-weight: 500; }
.row .nums .up { color: var(--real); } .row .nums .down { color: var(--scam); }
.row .right { text-align: right; display: grid; gap: 6px; justify-items: end; }
.row.locked { background: repeating-linear-gradient(-45deg, var(--ink2) 0 10px, #0E0C0D 10px 20px); border-style: dashed; }
.row.locked .tick { filter: blur(6px); user-select: none; }
.cd { font: 600 22px/1 var(--mono); color: var(--bone); }
@media (min-width: 760px) {
  .row { grid-template-columns: minmax(150px, 1.1fr) minmax(0, 2fr) auto; }
  .row .nums { grid-column: auto; }
}

/* ---------- receipts + calibration ---------- */
.calib { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: 12px; margin-bottom: 14px; }
.cal { background: var(--ink2); border: 1px solid var(--line); border-radius: var(--r); padding: 16px; }
.cal .n { font: 600 34px/1 var(--mono); letter-spacing: -0.02em; margin: 14px 0 8px; color: var(--bone); }
.cal .n span { font-size: 13px; color: var(--ash); font-weight: 400; letter-spacing: 0; }
.cal ul { list-style: none; margin: 0; padding: 0; font: 400 13px/1.6 var(--mono); color: var(--ash); }
.cal ul b { color: var(--bone); font-weight: 500; }
.bar { height: 6px; border-radius: 3px; background: var(--line); overflow: hidden; display: flex; margin-top: 12px; }
.bar i { display: block; height: 100%; }
.bar .b-up { background: var(--real); } .bar .b-down { background: var(--scam); }
.rtable { overflow-x: auto; background: var(--ink2); border: 1px solid var(--line); border-radius: var(--r); }
table.rt { width: 100%; border-collapse: collapse; font-size: 14px; }
.rt th { text-align: left; font: 500 11px/1.2 var(--mono); text-transform: uppercase; letter-spacing: .1em; color: var(--ash); padding: 13px 12px; border-bottom: 1px solid var(--line2); white-space: nowrap; }
.rt td { padding: 11px 12px; border-bottom: 1px solid var(--line); vertical-align: top; }
.rt td.n { font-family: var(--mono); white-space: nowrap; }
.rt .x { font-weight: 600; } .rt .x.up { color: var(--real); } .rt .x.down { color: var(--scam); }
.rt .val { white-space: nowrap; }
.rt a { color: var(--bone); }
.st-dumped, .st-ruglike { color: var(--scam); } .st-running, .st-graduated { color: var(--real); }
@media (max-width: 860px) { /* the 810 px table stacks into rows below this (at 768 its last column hid off the side) */
  table.rt thead { display: none; }
  table.rt, .rt tbody, .rt tr, .rt td { display: block; width: 100%; }
  .rt tr { padding: 10px 12px; border-bottom: 1px solid var(--line); }
  .rt td { border: 0; padding: 3px 0; display: flex; justify-content: space-between; gap: 12px; }
  .rt td[data-l]::before { content: attr(data-l); font: 500 11px/1.6 var(--mono); text-transform: uppercase; letter-spacing: .08em; color: var(--ash); }
  .rt td[data-l=""]::before { content: none; }
}
.more { margin: 14px; }
.rtable .empty { border: 0; background: none; }

/* ---------- how it works ---------- */
.how { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; align-items: start; }
.card { background: var(--ink2); border: 1px solid var(--line); border-radius: var(--r); padding: 20px; }
.card h3 { font: 700 19px/1.2 var(--sans); letter-spacing: -0.02em; margin: 0 0 10px; color: var(--bone); }
.card p { margin: 0 0 10px; } .card p:last-child { margin-bottom: 0; }
.steps { counter-reset: s; list-style: none; padding: 0; margin: 0; display: grid; gap: 9px; }
.steps li { counter-increment: s; display: grid; grid-template-columns: 34px 1fr; gap: 10px; align-items: start; }
.steps li::before { content: counter(s, decimal-leading-zero); font: 500 12px/24px var(--mono); color: var(--ash); }
.vtable { display: grid; gap: 0; }
.vrow { display: grid; grid-template-columns: 1fr; gap: 6px; padding: 12px 0; border-bottom: 1px solid var(--line); align-items: start; justify-items: start; }
.vrow:last-child { border-bottom: 0; }
@media (min-width: 760px) { .vrow { grid-template-columns: 150px 1fr; gap: 16px; } }
@media (min-width: 900px) { .how { grid-template-columns: 1fr 1fr; } .how .wide { grid-column: 1 / -1; } }
.cant { padding-left: 18px; margin: 0; } .cant li { margin-bottom: 8px; }

.job { position: relative; overflow: hidden; background: var(--ink2); border: 1px solid var(--line2); border-radius: 18px; padding: 28px 24px; display: grid; gap: 14px; }
.job::after { content: ''; position: absolute; right: -120px; bottom: -160px; width: 420px; height: 420px; border-radius: 50%; background: radial-gradient(closest-side, rgba(227, 36, 59, .18), transparent); pointer-events: none; }
.job > * { position: relative; z-index: 1; }
.job .eyebrow { margin: 0; }
.job p { margin: 0; font: 700 clamp(22px, 4vw, 34px)/1.15 var(--sans); letter-spacing: -0.03em; max-width: 30ch; color: var(--bone); }
.job .small { color: var(--ash); font: 400 14px/1.55 var(--sans); letter-spacing: 0; }
.job .btn { background: var(--bone); color: var(--ink); border-color: var(--bone); justify-self: start; }
.job .note { color: var(--bone); font-weight: 500; }
.job .drow { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.job .drow[hidden] { display: none; }
.job .drow .btn.ghost { background: transparent; color: var(--bone); border-color: var(--line2); }

/* ---------- footer ---------- */
.foot { border-top: 1px solid var(--line); padding-top: 26px; padding-bottom: 44px; color: var(--ash); font-size: 14px; }
.foot p { max-width: 84ch; }
.footbrand { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; color: var(--bone); }
.footbrand .mark { width: 26px; height: 26px; }
.footbrand .wmk { height: 16px; width: auto; }
.footbrand .serif { font-size: 19px; color: var(--text2); }

/* ---------- check page ---------- */
.chk { padding-top: 18px; padding-bottom: 40px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 22px; }
.chk h1 { font: 800 clamp(36px, 8vw, 64px)/0.95 var(--sans); letter-spacing: -0.045em; margin: 0; overflow-wrap: anywhere; color: var(--bone); }
.chk h1 small { display: block; font: 400 16px/1.4 var(--sans); letter-spacing: 0; color: var(--ash); margin-top: 10px; }
.state { font: 500 12.5px/1.4 var(--mono); text-transform: uppercase; letter-spacing: .08em; display: inline-flex; align-items: center; gap: 8px; color: var(--text2); }
.state .dot { width: 9px; height: 9px; border-radius: 50%; background: var(--real); }
.state.live .dot { background: var(--red); }
.state.err .dot { background: var(--larp); }
.card.notice { display: grid; gap: 10px; }
@media (prefers-reduced-motion: no-preference) { .state.live .dot { animation: pulse 1s ease-in-out infinite; } @keyframes pulse { 50% { opacity: .25; } } }
.chkgrid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 22px; align-items: start; }
/* the verdict column: the verdict card (word, rule, actions, the strongest facts) stays in view while the page scrolls;
   the chart, the holder votes and the share card sit in their own card below it, in the normal flow, so a tall panel
   never pushes them under the fold for good */
.vcol { display: grid; gap: 18px; align-content: start; min-width: 0; }
.vmore:not(:has(> :not([hidden]))) { display: none; }
@media (min-width: 980px) {
  .chkgrid { grid-template-columns: minmax(0, 1fr) 420px; }
  .vcol { align-self: stretch; }
  .vstick { position: sticky; top: 16px; z-index: 1; max-height: calc(100vh - 32px); overflow-y: auto; overscroll-behavior: contain; }
}
@media (max-width: 979px) { .chk.done .vcol { order: -1; } }
.log { background: var(--ink2); border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; }
.log h2, .facts h2 { font: 500 11.5px/1.3 var(--mono); text-transform: uppercase; letter-spacing: .12em; color: var(--ash); margin: 0; padding: 14px 16px; border-bottom: 1px solid var(--line); display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 10px; }
.log h2 span:first-child, .facts h2 span:first-child { color: var(--bone); }
.chkgrid > * { min-width: 0; }
.log ol { list-style: none; margin: 0; padding: 6px 0; }
.ln { display: grid; grid-template-columns: 46px 1fr; gap: 10px; padding: 7px 16px; font-size: 14.5px; line-height: 1.45; }
.ln .t { font: 400 12.5px/1.6 var(--mono); color: var(--ash); }
.ln .tx { min-width: 0; overflow-wrap: anywhere; }
.ln .stg { font: 500 11px/1 var(--mono); text-transform: uppercase; letter-spacing: .08em; color: var(--ash); margin-right: 6px; }
.ln .ev { font: 400 12px/1 var(--mono); margin-left: 6px; }
.ev { white-space: nowrap; color: var(--bone); }
@media (prefers-reduced-motion: no-preference) { .ln.new { animation: lnin .35s ease-out; } @keyframes lnin { from { opacity: 0; transform: translateY(4px); } } }
.kind { display: inline-block; font: 600 10.5px/1 var(--mono); letter-spacing: .08em; padding: 3px 6px; border-radius: 4px; margin-right: 6px; vertical-align: 1px; }
.k-PROOF { background: var(--real); color: #06140C; }
.k-GAP { background: var(--line); color: var(--text2); }
.k-ORD { background: transparent; color: var(--text2); box-shadow: inset 0 0 0 1px var(--line); } .k-ORD.self { color: var(--bone, var(--text)); box-shadow: inset 0 0 0 1px var(--text2); }
.k-CONTRADICTION { background: var(--larp); color: #1A1203; }
.k-DANGER { background: var(--scam); color: #1A0306; }
.verdict { background: var(--ink2); border: 1px solid var(--line2); border-radius: 16px; padding: 22px; display: grid; gap: 14px; box-shadow: 0 30px 80px -40px rgba(0, 0, 0, .9); }
.verdict .word { font: 800 clamp(40px, 11vw, 60px)/0.92 var(--sans); letter-spacing: -0.05em; margin: 0; overflow-wrap: normal; }
.verdict .rule { margin: 0; font-size: 14.5px; color: var(--text2); }
.verdict .counts { font: 500 13px/1.4 var(--mono); color: var(--bone); }
.verdict .top3 { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.verdict .top3 li { display: grid; grid-template-columns: 22px 1fr; gap: 8px; font-size: 15px; line-height: 1.4; }
.mk { width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center; font: 700 12px/1 var(--mono); color: var(--ink); margin-top: 1px; }
.mk-PROOF { background: var(--real); } .mk-DANGER { background: var(--scam); } .mk-CONTRADICTION { background: var(--larp); } .mk-GAP { background: transparent; color: var(--ash); box-shadow: inset 0 0 0 2px var(--ash); }
.vhead { display: grid; grid-template-columns: 1fr 44px; gap: 14px; align-items: start; }
.vhead svg { width: 44px; height: 120px; overflow: visible; }
.shareimg { width: 100%; height: auto; border: 1px solid var(--line2); border-radius: 10px; display: block; background: var(--ink); }
@media (max-width: 979px) { .shareimg { max-width: 420px; } }
.actions { display: flex; flex-wrap: wrap; gap: 10px; }
.facts { background: var(--ink2); border: 1px solid var(--line); border-radius: var(--r); }
.facts ul { list-style: none; margin: 0; padding: 4px 0; }
.facts li { padding: 10px 16px; border-bottom: 1px solid var(--line); font-size: 14.5px; overflow-wrap: anywhere; }
.facts li:last-child { border-bottom: 0; }
.facts .src { display: block; font: 400 12px/1.6 var(--mono); color: var(--ash); margin-top: 3px; }
.claims { display: flex; flex-wrap: wrap; gap: 6px; padding: 12px 16px; }
.claim { font: 500 12px/1 var(--mono); border: 1px solid var(--line2); border-radius: 999px; padding: 6px 10px; background: var(--ink); color: var(--bone); }
.notice { padding: 14px 16px; border-radius: var(--r); background: var(--ink2); border: 1px dashed var(--line2); }
.again { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }

/* ---------- signal share page ---------- */
.share .sharecard { width: 100%; height: auto; border: 1px solid var(--line2); border-radius: 12px; display: block; margin: 8px 0 18px; }
.share .nums3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; margin: 12px 0; }
.share .nums3 div { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; background: var(--ink); }
.share .nums3 span { display: block; font: 500 11px/1.4 var(--mono); text-transform: uppercase; letter-spacing: .08em; color: var(--ash); }
.share .nums3 b { font: 600 20px/1.3 var(--mono); }
.share code { font: 400 12.5px/1.4 var(--mono); overflow-wrap: anywhere; color: var(--bone); }
.reasons { margin: 8px 0; padding-left: 18px; color: var(--ash); font-size: 14px; }
.sigverdict { margin: 4px 0 8px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; }
.sigverdict .eyebrow { margin: 0; }
.sigverdict .word { font: 800 clamp(34px, 8vw, 52px)/1 var(--sans); letter-spacing: -0.045em; text-decoration: none; }
.older { margin: 6px 0 10px; font-size: 14px; color: var(--ash); }
.older summary { cursor: pointer; }
#vrest { display: grid; gap: 14px; }

/* Cabal Trace: the cabal map (check page) and the wallet lookup (/w/<wallet>). The SVG shows on wide screens; the list
   (every fact with its source) always shows, and is all a phone sees. */
.cmap { padding: 4px 0 0; }
.cmap-svg { padding: 12px 12px 0; overflow: hidden; }
.cmap-svg svg { display: block; width: 100%; height: auto; font-family: var(--mono); }
.cmap-svg .nd rect { fill: var(--ink); stroke: var(--line2); stroke-width: 1.2; }
.cmap-svg .nd.dev rect { fill: var(--bone); stroke: var(--bone); }
.cmap-svg .nd.dev text { fill: var(--ink); }
.cmap-svg .nd.kol rect:first-child { stroke: var(--bone); stroke-width: 2.4; }
.cmap-svg .nd.ex rect { stroke-dasharray: 3 3; }
.cmap-svg .nd.gap rect { fill: transparent; stroke: var(--ash); stroke-dasharray: 5 4; }
.cmap-svg .nd .badge { fill: var(--bone); stroke: none; }
.cmap-svg .nd .bt { fill: var(--ink); font: 700 10px var(--mono); }
.cmap-svg .n1 { font: 500 13px var(--mono); fill: var(--bone); }
.cmap-svg .n2 { font: 400 11px var(--mono); fill: var(--ash); }
.cmap-svg .nd.dev .n2 { fill: #4A4440; }
.cmap-svg .hl { font: 500 11.5px var(--mono); fill: var(--ash); text-transform: uppercase; letter-spacing: .08em; }
.cmap-svg .al { font: 500 11px var(--mono); fill: var(--bone); }
.cmap-svg .ln { fill: none; stroke: var(--ash); stroke-width: 1.3; stroke-opacity: .7; }
.cmap-svg .hd { fill: none; stroke: var(--ash); stroke-width: 1.3; }
.cmap-svg a:hover rect, .cmap-svg a:focus rect { stroke: var(--bone); }
.cmap-list { list-style: none; margin: 0; padding: 4px 0; }
.cmap-list li, #labels li, #chain li, #created li, #funded li, #clusters li { padding: 10px 16px; border-bottom: 1px solid var(--line); font-size: 14.5px; overflow-wrap: anywhere; }
.cmap-list li:last-child, #labels li:last-child, #chain li:last-child, #created li:last-child, #funded li:last-child, #clusters li:last-child { border-bottom: 0; }
.kolrow { background: rgba(241, 235, 225, .05); box-shadow: inset 3px 0 0 var(--bone); color: var(--bone); font-weight: 500; }
.kbadge { display: inline-block; font: 700 10.5px/1 var(--mono); letter-spacing: .08em; padding: 3px 7px; border-radius: 999px; margin-right: 8px; background: var(--bone); color: var(--ink); vertical-align: 1px; }
.cmap-note { margin: 0; padding: 8px 16px 14px; }
.cmap-list .gaprow { color: var(--text2); }
.cmap-svg .gapt { fill: var(--ash); }
/* the wallet page: the funder-chain map keeps its drawn size on a wide screen (never scaled up past 760 px) */
#wal .cmap-svg svg { max-width: 760px; }
/* a full wallet address under a title stays in Geist Mono (the brand sets Mono for wallets) */
.chk h1 small.mono { font-family: var(--mono); font-size: 14px; }
@media (max-width: 640px) { .cmap-svg { display: none; } }
/* any chain: the chain badge (check page, wallet page) and the home page's chain line */
.chainb { display: inline-block; font: 600 10.5px/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; padding: 4px 8px; border-radius: 999px; border: 1px solid var(--line2); color: var(--bone); background: var(--ink2); margin-right: 8px; vertical-align: 2px; white-space: nowrap; }
.accepts.chainsline { text-transform: none; letter-spacing: .02em; margin-top: 6px; font-size: 11.5px; }

/* ---------- copycats, chart, team response, holder votes, callouts, KOL activity (check page) ---------- */
.facts .vline { margin: 0; padding: 12px 16px 4px; font-size: 15px; line-height: 1.45; overflow-wrap: anywhere; }
.facts .pad { padding: 12px 16px; }
.respform summary { cursor: pointer; font-weight: 600; }
.respform textarea { width: 100%; box-sizing: border-box; margin: 10px 0; padding: 10px 12px; background: var(--ink); color: var(--bone); border: 1px solid var(--line2); border-radius: 10px; font: 400 15px/1.45 var(--sans); resize: vertical; }
.facts details summary { cursor: pointer; }
.votes { display: grid; gap: 8px; border-top: 1px solid var(--line); padding-top: 12px; }
.votes .btn b { font-family: var(--mono); margin-left: 4px; }
.votes .btn:disabled { opacity: .7; cursor: default; }
.spark { display: grid; gap: 6px; border-top: 1px solid var(--line); padding-top: 12px; }
.spark svg { display: block; width: 100%; height: 72px; }
.spark .line { fill: none; stroke-width: 1.6; vector-effect: non-scaling-stroke; }
.spark .line.up { stroke: var(--real); } .spark .line.down { stroke: var(--scam); }
.spark .area { stroke: none; opacity: .12; } .spark .area.up { fill: var(--real); } .spark .area.down { fill: var(--scam); }
.spark .mark { stroke: var(--bone); stroke-width: 1; stroke-dasharray: 3 3; opacity: .6; vector-effect: non-scaling-stroke; }
#chartSince { font: 600 13px/1 var(--mono); letter-spacing: 0; }
#chartSince.up { color: var(--real); } #chartSince.down { color: var(--scam); }
.footnav { font: 500 12px/1.6 var(--mono); text-transform: uppercase; letter-spacing: .08em; }
.footnav a { color: var(--bone); }

/* /developers and /stats */
.devpre { margin: 0; padding: 12px 16px; overflow-x: auto; font: 400 12.5px/1.55 var(--mono); color: var(--bone); background: var(--ink); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); white-space: pre; max-width: 100%; }
.facts li .devpre { margin: 8px 0 0; border: 1px solid var(--line); border-radius: 8px; }
.devtable { width: 100%; border-collapse: collapse; font-size: 14px; table-layout: fixed; }
.devtable th, .devtable td { text-align: left; padding: 10px 16px; border-bottom: 1px solid var(--line); vertical-align: top; overflow-wrap: anywhere; }
.devtable th { font: 500 11.5px/1.3 var(--mono); text-transform: uppercase; letter-spacing: .1em; color: var(--ash); }
.devtable th:nth-child(1) { width: 30%; } .devtable th:nth-child(3) { width: 9%; } .devtable th:nth-child(4) { width: 18%; }
.devtable code { font-family: var(--mono); font-size: 12.5px; color: var(--bone); }
@media (max-width: 720px) {
  .devtable thead { display: none; }
  .devtable tr { display: block; border-bottom: 1px solid var(--line); padding: 6px 0; }
  .devtable td { display: block; border: 0; padding: 4px 16px; }
}
.statgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1px; background: var(--line); border-radius: 0 0 var(--r) var(--r); overflow: hidden; }
.stat { background: var(--ink2); padding: 14px 16px; min-width: 0; }
.stat b { display: block; font: 700 28px/1.1 var(--mono); color: var(--bone); }
.stat span { font-size: 12.5px; color: var(--ash); }

/* app-wallet link (wallets that cannot sign a message): an exact amount from the wallet to itself */
.applink { border: 1px solid var(--line); border-radius: var(--r); padding: 10px 14px; background: var(--ink2); max-width: 100%; }
.applink summary { cursor: pointer; color: var(--bone); font-size: 14px; }
.applink .alform { display: flex; gap: 8px; margin: 12px 0 8px; flex-wrap: wrap; }
.applink .alform input { flex: 1 1 220px; min-width: 0; background: var(--ink); border: 1px solid var(--line2); color: var(--bone); border-radius: 10px; padding: 9px 12px; font: 400 14px var(--mono); }
.applink .albox { display: grid; gap: 8px; margin: 8px 0; }
.applink .alrow { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 0; }
.applink .alamt { font-size: 20px; color: var(--bone); letter-spacing: .02em; word-break: break-all; }
/* inside the token card: the link panel's lines are body text, full width (not the 30ch headline style of .job p) */
.job .applink p { max-width: none; }
.job .applink .alrow { font: 400 14px/1.4 var(--sans); letter-spacing: 0; color: var(--ash); }
.job .applink .alrow b { color: var(--bone); }
.applink .alamt + b { font-size: 20px; }

/* holder bubble map (check page; src/bubbles.js packs it, site/bubbles.js draws it) */
.bmap { display: grid; gap: 10px; min-width: 0; }
.bsvg svg { display: block; width: 100%; height: auto; max-height: 560px; font-family: var(--mono); touch-action: manipulation; }
.bsvg .bb { cursor: pointer; outline: none; }
.bsvg .bb .hit { fill: transparent; }
.bsvg .bb .b { fill: #4A4341; stroke: var(--ink2); stroke-width: 2; }
.bsvg .bb.k-curve .b, .bsvg .bb.k-pool .b, .bsvg .bb.k-program .b { fill: rgba(142, 134, 126, .12); stroke: var(--ash); stroke-width: 1.4; stroke-dasharray: 5 4; }
.bsvg .bb .devring { fill: none; stroke: var(--bone); stroke-width: 2.5; }
.bsvg .bb:hover .b, .bsvg .bb:focus-visible .b, .bsvg .bb.sel .b { stroke: var(--bone); stroke-width: 2.5; }
.bsvg .bl { font: 600 calc(12px * var(--bk, 1)) var(--mono); fill: var(--bone); pointer-events: none; }
.bsvg .bs { font: 500 calc(10px * var(--bk, 1)) var(--mono); fill: var(--bone); opacity: .85; pointer-events: none; }
.bsvg .devt { font: 700 calc(10px * var(--bk, 1)) var(--mono); fill: var(--bone); letter-spacing: .08em; pointer-events: none; }
.bsvg .kolb { fill: var(--bone); }
.bsvg .kolt { font: 700 calc(9px * var(--bk, 1)) var(--mono); fill: var(--ink); pointer-events: none; }
.facts .bmap li { padding: 0; border-bottom: 0; font-size: inherit; }
.facts .bmap .blegend { font-size: 12.5px; }
.facts .bmap .blist { font-size: 13px; }
.blegend { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12.5px; color: var(--text2); }
.blegend li { display: flex; align-items: center; gap: 6px; }
.bsw { display: inline-block; width: 12px; height: 12px; border-radius: 50%; flex: none; background: #4A4341; }
.bsw.gray { background: #4A4341; }
.bsw.ring { background: transparent; border: 2px solid var(--bone); }
.bsw.dash { background: transparent; border: 1.4px dashed var(--ash); }
.kolb-l { font: 700 9px var(--mono); background: var(--bone); color: var(--ink); border-radius: 8px; padding: 1px 6px; }
.bdetw { border: 1px solid var(--line); border-radius: 10px; background: var(--ink); padding: 10px 12px; min-width: 0; }
.bdet .bhead { margin: 0 0 6px; color: var(--bone); font-weight: 600; font-size: 14px; }
.bdet .blist { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; font-size: 13px; overflow-wrap: anywhere; }
.bdet .blist li { display: block; }
.bdet .bsw { vertical-align: -1px; margin-right: 6px; }
.bmore summary { cursor: pointer; font-size: 13px; color: var(--ash); }
.brows { list-style: none; margin: 8px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px; }
.brow { width: 100%; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; background: var(--ink); border: 1px solid var(--line); border-radius: 8px; color: var(--text2); padding: 6px 8px; font: 400 12.5px var(--sans); cursor: pointer; text-align: left; }
.brow:hover, .brow:focus-visible { border-color: var(--line2); color: var(--bone); }
.brow .tag { font: 500 10.5px var(--mono); color: var(--ash); }

/* /account: link a wallet (site/account.js) */
.acct .acgrid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
@media (min-width: 900px) { .acct .acgrid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.acct .facts .pad > p:first-child { margin-top: 0; }
.acct .facts .pad > p:last-child { margin-bottom: 0; }
.acbig { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 0 0 10px; }
.acw { font-size: 22px; font-weight: 600; color: var(--bone); letter-spacing: .02em; }
.acnum { font: 700 44px/1 var(--mono); color: var(--bone); letter-spacing: -0.02em; }
.acbal { font: 400 15px/1.3 var(--mono); color: var(--text2); }
.acbal b { font-size: 22px; }
.acmsg { font: 700 20px/1.25 var(--sans); color: var(--bone); letter-spacing: -0.01em; margin: 0 0 8px; }
.acct .note { color: var(--bone); font-weight: 500; margin: 10px 0 0; min-height: 1em; }
.acct .note.err { color: var(--larp); }
.acct .note:empty { display: none; }
.wlist { display: grid; gap: 8px; margin: 0 0 12px; }
.wbtn { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 54px; padding: 0 14px; background: var(--ink); border: 1px solid var(--line2); border-radius: 12px; color: var(--bone); font: 600 16px/1 var(--sans); cursor: pointer; text-align: left; }
.wbtn:hover, .wbtn:focus-visible { border-color: var(--bone); background: var(--ink3); }
.wbtn[disabled] { opacity: .5; cursor: progress; }
.wico { width: 28px; height: 28px; border-radius: 8px; flex: none; object-fit: contain; }
.wico.wl { display: inline-grid; place-items: center; background: var(--bone); color: var(--ink); font: 700 14px/1 var(--mono); }
.wbtn .wn { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wbtn .wgo { font: 500 11px/1 var(--mono); text-transform: uppercase; letter-spacing: .1em; color: var(--ash); }
.nowallet { display: grid; gap: 8px; padding: 14px; border: 1px dashed var(--line2); border-radius: 12px; background: rgba(18, 16, 17, .6); color: var(--bone); }
.acct .applink { background: var(--ink); }
.tierlist { list-style: none; margin: 10px 0 12px; padding: 0; display: grid; gap: 6px; }
.facts .tierlist li { display: flex; justify-content: space-between; gap: 10px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--ink); font-size: 14px; }
.facts .tierlist li:last-child { border-bottom: 1px solid var(--line); }
.facts .tierlist li.cur { border-color: var(--real); box-shadow: inset 3px 0 0 var(--real); }
.tierlist li span { color: var(--ash); }

/* CABAL in Discord (src/discordui.js): Add to Discord (Add to My Apps / Add to Server), the server invite */
.dcbox { background: var(--ink2); border: 1px solid var(--line2); border-radius: 18px; padding: 22px; position: relative; overflow: hidden; }
.dcbox::after { content: ''; position: absolute; left: -140px; top: -180px; width: 420px; height: 420px; border-radius: 50%; background: radial-gradient(closest-side, rgba(88, 101, 242, .16), transparent); pointer-events: none; }
.dcgrid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; position: relative; z-index: 1; }
@media (min-width: 900px) { .dcgrid { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); align-items: start; } }
.dclead { font: 700 clamp(20px, 3vw, 26px)/1.2 var(--sans); color: var(--bone); letter-spacing: -0.02em; margin: 0 0 14px; max-width: 34ch; }
.dcopts { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; margin: 0 0 16px; }
@media (min-width: 560px) { .dcopts { grid-template-columns: 1fr 1fr; } }
.dcopt { display: grid; gap: 4px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--ink); font-size: 14px; color: var(--ash); }
.dcopt b { font-size: 15px; }
.dcmain .actions { margin: 0 0 12px; }
.dcmain .small { margin: 0; max-width: 72ch; }
.dccmds { list-style: none; margin: 0; padding: 6px; display: grid; gap: 4px; background: var(--ink); border: 1px solid var(--line); border-radius: 12px; }
.dccmds li { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 10px; align-items: baseline; padding: 9px 10px; border-radius: 8px; font-size: 14px; color: var(--ash); }
.dccmds li:nth-child(odd) { background: var(--ink2); }
.dccmds b { color: var(--bone); font-weight: 600; font-size: 14px; }
.facts.dccard .dcgrid { grid-template-columns: minmax(0, 1fr); }
@media (min-width: 1100px) { .facts.dccard .dcgrid { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); } }
.facts.dccard .dccmds li { border-bottom: 0; padding: 9px 10px; }
.facts.dccard .dclead { font-size: 19px; }
