/* Exposer additions over the kit (public/assets/css/exposer.css). Formerly the Kolexposer additions over the Night Scan kit.
   Lives outside public/assets/ so scripts/sync-kit.sh never wipes it. Linked after the kit CSS with a ?v= query:
   bump the query in lib/views.mjs (KX_VER) on every change. Kit tokens only (--bg --pn --p2 --p3 --ln --fg --tx --mu --lime --vio --vio2 --red --yel --sky). */

/* ---------- shared ---------- */
.n .sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.n .tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
.n button.btn{font:600 14px Inter,system-ui,sans-serif}
.n .proof{min-height:24px;padding:5px 9px}
@media (pointer:coarse){.n .proof{min-height:32px;padding:8px 10px}}

/* ---------- KOL page: top screen ---------- */
.n .wrap.kp{gap:36px;padding-top:28px}
.n .kp section[id]{scroll-margin-top:91px}
.n .ktop{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"head act" "hero hero";gap:18px 24px;align-items:center}
.n .ktop .khead{grid-area:head}
.n .ktop .kact{grid-area:act}
.n .ktop .vhero{grid-area:hero}
.n .kact .btn{min-height:44px}

.n .kp .vhero.ns{grid-template-columns:minmax(0,1fr) auto}
.n .kp .vline{font:400 18px/1.45 Inter,system-ui,sans-serif;color:var(--fg);max-width:60ch;margin:0}
.n .kp .vhero .rule{display:block;margin:0;font-size:12px;line-height:1.5;max-width:72ch}
/* small text in the hero sits on the verdict wash: --tx, never --mu (--mu on the mover wash is 4.06:1) */
.n .vhero .rule,.n .vhero .rule b,.n .vhero .score .note,.n .vhero .score .of,.n .ev span{color:var(--tx)}
.n .score.off b,.n .score.off .of{opacity:.35}

/* evidence: how much was read, in neutral ink. Level by material: filled, plain, dashed. Weak is the quietest. */
.n .ev{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0;max-width:60ch;font:400 13.5px/1.45 Inter,system-ui,sans-serif;color:var(--tx)}
.n .ev b{flex:none;font:600 12px/1 'JetBrains Mono',ui-monospace,monospace;letter-spacing:.02em;padding:6px 9px;border-radius:6px;color:var(--tx);background:var(--p2);border:1px solid var(--ln)}
.n .ev[data-l=strong] b{color:var(--fg);background:var(--p3);border-color:var(--mu)}
.n .ev[data-l=weak] b{font-weight:500;background:transparent;border-style:dashed}
/* weak evidence presses the stamp lighter: same colour and words, no glow, no wash */
.n .vhero[data-ev=weak][data-v]::before{background:none}
.n .vhero[data-ev=weak] .stamp.big{box-shadow:none}

.n .kp .method{font:400 14px/1.5 Inter,system-ui,sans-serif;color:var(--tx);max-width:72ch;margin:0}
.n .kp .method a{color:var(--fg);text-decoration:underline;text-underline-offset:3px}

/* jump nav: a plain row of anchors, not sticky, no JS */
.n .jn{display:flex;flex-wrap:wrap;gap:0 20px;border-top:1px solid var(--ln);border-bottom:1px solid var(--ln);padding:2px 0}
.n .jn a{font:600 13.5px/1 Inter,system-ui,sans-serif;color:var(--mu);padding:12px 0;text-underline-offset:4px}
.n .jn a:hover{color:var(--fg);text-decoration:underline}
@media (pointer:coarse){.n .jn a{padding:15px 0}}

/* findings: on UNCLEAR every dot is neutral (set in the markup) */
.n .kp .f:not(:has(.proof)){grid-template-columns:auto minmax(0,1fr)}


/* collapsed proof: native details, content in the served HTML */
.n .dx{background:var(--pn);border:1px solid var(--ln);border-radius:16px}
.n .dx>summary{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;grid-template-areas:"t c s v";align-items:center;gap:6px 12px;min-height:60px;padding:14px 20px;cursor:pointer;list-style:none;border-radius:15px}
.n .dx>summary::-webkit-details-marker{display:none}
.n .dx .dt{grid-area:t;font:700 20px/1.15 'Space Grotesk';letter-spacing:-.02em;color:var(--fg)}
.n .dx .dc{grid-area:c;font:500 13px/1 'JetBrains Mono',ui-monospace,monospace;color:var(--tx);background:var(--p2);border:1px solid var(--ln);border-radius:6px;padding:4px 8px}
.n .dx .ds{grid-area:s;font-size:13px;color:var(--mu)}
.n .dx .chev{grid-area:v;color:var(--mu);transition:transform .18s cubic-bezier(.23,1,.32,1)}
.n .dx[open]>summary{border-bottom:1px solid var(--ln);border-radius:15px 15px 0 0}
.n .dx[open] .chev{transform:rotate(180deg)}
.n .dx .dxb{display:grid;gap:12px;padding:16px 20px 18px}
.n .dx .dxb .tw{border-radius:12px;background:var(--bg)}
@media (hover:hover) and (pointer:fine){.n .dx>summary:hover{background:var(--p2)}}

/* PnL, context only: no box, no big values, nothing lime, red or --fg */
.n .ctx{display:grid;gap:0}
.n .hx{font:600 15px/1.3 Inter,system-ui,sans-serif;color:var(--tx);letter-spacing:0;margin:0}
.n .cr{display:flex;flex-wrap:wrap;gap:10px 28px;margin:10px 0 6px}
.n .cr div{display:grid;gap:2px}
.n .cr dt{font-size:12px;color:var(--mu)}
.n .cr dd{margin:0;font:500 14px 'JetBrains Mono',ui-monospace,monospace;color:var(--tx)}

/* thin pages: the "Not read on this page" list replaces the empty panels */
.n .nr ul{display:grid;gap:0;margin:10px 0 0;padding:0;list-style:none}
.n .nr li{display:grid;grid-template-columns:minmax(0,9em) minmax(0,1fr);gap:4px 16px;font-size:14px;color:var(--tx);padding:10px 0;border-top:1px solid var(--ln)}
.n .nr li b{font-weight:600;color:var(--fg)}

/* EVM hero right column: what was read, deliberately smaller than Motion */
.n .score.alt b{font-size:32px;color:var(--tx)}
.n .score.alt .jl{font:600 13.5px Inter,system-ui,sans-serif;color:var(--fg);text-decoration:underline;text-underline-offset:4px;margin-top:6px}

/* verdict card preview: the kit width (760), like the coin card (fix round 1, K2) */

/* tables on a KOL page scroll inside .tw with a cue; no column is hidden (the proof column stays) */
.n .kp .tw{background:linear-gradient(90deg,var(--bg) 30%,rgba(11,11,15,0)) left/32px 100% no-repeat local,linear-gradient(270deg,var(--bg) 30%,rgba(11,11,15,0)) right/32px 100% no-repeat local,radial-gradient(farthest-side at 0 50%,rgba(236,236,244,.16),transparent) left/10px 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,rgba(236,236,244,.16),transparent) right/10px 100% no-repeat scroll,var(--bg)}
.n .kp .tw .lb th,.n .kp .tw .lb td{display:table-cell}

@media (max-width:760px){
  .n .kp #buys .tw .lb{min-width:640px}
  .n .kp #buys .lb th:first-child,.n .kp #buys .lb td:first-child{position:sticky;left:0;z-index:1;background:var(--bg);box-shadow:1px 0 0 var(--ln)}
}

@media (max-width:560px){
  .n .wrap.kp{padding-top:16px;gap:28px}
  .n .ktop{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "hero" "act";gap:14px}
  .n .kp .khead{display:grid;grid-template-columns:48px minmax(0,1fr);gap:6px 12px;align-items:center}
  .n .kp .khead .av.big{width:48px;height:48px;font-size:16px}
  .n .kp .kid{display:contents}
  .n .kp .hl{grid-column:2;display:grid;gap:2px}
  .n .kp .khead h1{font-size:24px;overflow-wrap:anywhere}
  .n .kp .nm{font-size:13px;overflow-wrap:anywhere}
  .n .kp .meta{grid-column:1/-1;gap:4px 12px}
  .n .kp .meta span{background:none;border:0;padding:0;color:var(--tx)}
  /* one column, stamp block flattened so Motion sits between the plain line and the rule */
  .n .kp .vhero,.n .kp .vhero.ns{grid-template-columns:minmax(0,1fr);padding:18px;gap:12px}
  .n .kp .vst{display:contents}
  .n .kp .vhero .stamp{order:1;justify-self:start}
  .n .kp .vhero .ev{order:2}
  .n .kp .vhero .vline{order:3;font-size:16px}
  .n .kp .vhero .score{order:4}
  .n .kp .vhero .rule{order:5}
  .n .kp .vhero .vm{display:none}
  .n .kp .stamp.big{font-size:30px;padding:12px 18px}
  .n .kp .score{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"lbl lbl" "num of" "bar bar" "note note";column-gap:8px;align-items:baseline}
  .n .kp .score .lbl{grid-area:lbl}
  .n .kp .score b{grid-area:num;font-size:44px}
  .n .kp .score .of{grid-area:of;align-self:end;padding-bottom:6px}
  .n .kp .score .bar{grid-area:bar;height:8px;margin-top:4px}
  .n .kp .score .note{grid-area:note}
  .n .kp .score.alt b{font-size:32px}
  .n .kp .score.alt .jl{grid-column:1/-1}
  .n .kact{display:flex;gap:8px;flex-wrap:nowrap}
  .n .kact .btn:not(.ic){flex:1}
  .n .kp h2:not(.hx){font-size:22px}
  .n .dx>summary{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"t c v" "s s s";padding:14px 16px}
  .n .dx .dc{justify-self:start}
  .n .dx .dxb{padding:14px 12px 16px}
  .n .cr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px}
  .n .nr li{grid-template-columns:minmax(0,1fr)}
  /* the kit hides the wallet source and its proof link under 560: keep both, the source on its own line */
  .n .kp .wr{grid-template-columns:auto minmax(0,1fr) auto auto}
  .n .kp .wr span{display:block;grid-column:1/-1;order:1}
  .n .kp .wr .proof{display:inline-flex}
}
@media (max-width:360px){
  .n .kact [data-recheck] .lt{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
}
@media (prefers-reduced-motion:reduce){.n .dx .chev{transition:none}}

/* ---------- /claim: two steps, the code is the hero of step two ---------- */
/* prefixed with .legal: the legal template's inline LEGAL_CSS comes later in the page and wins at equal specificity */
.n .legal .cst{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:4px 0 6px;padding:0;list-style:none}
.n .legal .cst li{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--ln);border-radius:12px;font:600 14px/1.3 Inter,system-ui,sans-serif;color:var(--mu)}
.n .legal .cst .sn{display:grid;place-items:center;width:24px;height:24px;flex:none;border-radius:50%;border:1px solid var(--ln);font:500 12px 'JetBrains Mono',ui-monospace,monospace;color:var(--mu)}
/* current step: --fg disc with --bg text, not lime (lime stays the one action of the step) */
.n .legal .cst li[data-s=now]{color:var(--fg);border-color:var(--mu);background:var(--pn)}
.n .legal .cst li[data-s=now] .sn{background:var(--fg);border-color:var(--fg);color:var(--bg)}
.n .legal .cst li[data-s=done],.n .legal .cst li[data-s=done] .sn{color:var(--tx)}
.n .legal .cfld{display:grid;gap:6px}   /* .cfld, not .fld: the kit .fld is a 44 px search field */
.n .legal .cfld label{font:600 14px Inter,system-ui,sans-serif}
.n .legal .hint{font-size:12.5px;line-height:1.5;color:var(--mu);margin:0}
.n .legal .dform textarea[name=wallets]{font:13px/1.5 'JetBrains Mono',ui-monospace,monospace;min-height:96px}
.n .legal .dform .btn.pri{min-height:48px;justify-self:start}
.n .legal .dform .btn.sm{justify-self:start;min-height:44px}
.n .legal .trust{font-size:13.5px;line-height:1.5;color:var(--tx);margin:0}
.n .legal .dx.sm{border-radius:12px}
.n .legal .dx.sm>summary{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"t v";min-height:48px;padding:10px 14px;border-radius:11px}
.n .legal .dx.sm .dt{font:600 14px/1.3 Inter,system-ui,sans-serif}
.n .legal .dx.sm[open]>summary{border-radius:11px 11px 0 0}
.n .legal .dx.sm .dxb{padding:12px 14px 14px}
.n .legal .claim-err{border-color:var(--red)}
.n .legal .claim-err:focus{outline:none}
.n .legal .lbl{font:500 12px/1.4 'JetBrains Mono',ui-monospace,monospace;color:var(--mu);text-transform:none;letter-spacing:0}
.n .legal .cbox{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:20px;background:var(--pn);border:1px solid var(--ln);border-radius:16px}
.n .legal .cbox .lbl{grid-column:1/-1}
.n .legal .ccode{display:block;min-width:0;font:600 40px/1.1 'JetBrains Mono',ui-monospace,monospace;letter-spacing:.02em;color:var(--fg);user-select:all;-webkit-user-select:all;overflow-wrap:anywhere;padding:12px 14px;border-radius:12px;background:var(--bg);border:1px solid var(--ln)}
.n .legal .cp{min-width:10em;min-height:48px}
.n .legal .cp[data-state=copied]{color:var(--lime);border-color:var(--lime)}
.n .legal .howto{display:grid;gap:8px}
.n .legal .eb{justify-self:start;min-height:44px}
.n .legal .wb{display:grid;gap:6px}
.n .legal .wb ul{list-style:none;padding:0;margin:0;display:grid;gap:4px}
.n .legal .wb code{display:block;font:500 12.5px/1.5 'JetBrains Mono',ui-monospace,monospace;color:var(--tx);overflow-wrap:anywhere;word-break:break-all}
.n .legal .wb p{overflow-wrap:anywhere}
@media (max-width:560px){
  .n .legal .cbox{grid-template-columns:minmax(0,1fr);padding:16px}
  .n .legal .ccode{font-size:32px}
  .n .legal .cp,.n .legal .eb,.n .legal .dform .btn.pri,.n .legal .dform .btn.sm{width:100%}
}

/* ---------- global: skip link, burger button, ticker pause, touch targets ---------- */
.n .skip{position:absolute;left:16px;top:-64px;z-index:70;padding:10px 14px;border-radius:10px;background:var(--lime);color:#0B1200;font:600 14px Inter,system-ui,sans-serif}
.n .skip:focus{top:12px}
.n main[tabindex="-1"]:focus{outline:none}
.n button.burger{background:none;cursor:pointer;padding:0;font:inherit}
.n .tkw{position:relative}
.n .tkp{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:32px;height:32px;display:grid;place-items:center;border-radius:8px;background:var(--p2);border:1px solid var(--ln);color:var(--tx);cursor:pointer;padding:0;z-index:1}
/* the band fades out under the button, so no item reads as colliding with it */
.n .tkw::after{content:'';position:absolute;top:0;right:0;bottom:0;width:72px;background:linear-gradient(90deg,transparent,var(--bg) 55%);pointer-events:none}
.n .tkw.paused .tk{animation-play-state:paused}
@media (hover:hover) and (pointer:fine){.n .tkp:hover{color:var(--fg);background:var(--p3)}}
/* footer links: a 24 px+ hit area, 44 px rows on touch */
.n .fl a{display:inline-block;padding:4px 0}
@media (pointer:coarse){.n .fl a{padding:10px 0}}
/* leaderboard filters wrap on a phone instead of pushing the page sideways; the selected one stays visible */
@media (max-width:560px){
  .n .ctl .tabs{display:flex;flex-wrap:wrap;width:100%;gap:4px}
  .n .ctl .tabs a{flex:none;min-height:40px;display:inline-flex;align-items:center;padding:8px 12px}
}
@media (max-width:560px) and (pointer:coarse){
  .n .ctl .tabs a{min-height:44px}
}
@media (prefers-reduced-motion:reduce){.n .tkp,.n .tkw::after{display:none}}

/* ---------- verdict card, HTML twin (cardInner): same evidence line and weak rule as the PNG ---------- */
.n.xcard .xleft{gap:22px}
.n.xcard .xst{display:grid;gap:10px;justify-items:start}
.n.xcard .xscore{margin-top:8px}
.n.xcard .xev{font:500 15px/1 'JetBrains Mono',ui-monospace,monospace;letter-spacing:1.2px;color:var(--tx)}
.n.xcard[data-ev=weak]{background:radial-gradient(55% 80% at 88% 18%,rgba(139,92,246,.4),transparent 60%),var(--bg)}
.n.xcard[data-ev=weak] .stamp.big{box-shadow:none}
.n.xcard .xscore[data-off] b{color:var(--mu)}
.n.xcard .xscore[data-off] .xn span,.n.xcard .xscore[data-off] .bar{display:none}

/* ---------- round 2 polish ---------- */
/* lime wash and glow belong to REAL MOVER only; every other verdict reads on a neutral panel (page hero and card twin) */
.n .kp .vhero:not([data-v=mover])::before{background:none}
.n.xcard:not([data-v=mover]){background:radial-gradient(55% 80% at 88% 18%,rgba(139,92,246,.4),transparent 60%),var(--bg)}
/* UNCLEAR keeps its greyed Motion (Cross's rule) as one compact line: no "of 100", no empty bar */
.n .kp .score.off .of,.n .kp .score.off .bar{display:none}
.n .kp .score.off b{font-size:32px}
/* tap height for links inside tables and the sort links in table heads */
.n .lb td a:not(.proof){display:inline-block;padding-block:4px;min-height:24px}
.n .lb th a.sortlink{display:inline-block;padding-block:5px;min-height:24px}
@media (pointer:coarse){.n .lb th a.sortlink{padding-block:13px}}
/* lists in the legal template (terms, privacy, dispute, claim "What happens next") show their markers */
.n .legal ul:not(.cst){list-style:disc;padding-left:1.2em}
.n .legal ul:not(.cst) li::marker{color:var(--mu)}
.n .ph1 h1 + .sub{margin-top:10px}
/* controls that only work with JS are hidden until app.js can run (html.js is set in the head) */
html:not(.js) .n [data-open],html:not(.js) .n [data-recheck],html:not(.js) .n button[data-copy],html:not(.js) .n .tkp{display:none}

/* ---------- round 3 ---------- */
/* glow belongs to REAL MOVER only: every other stamp is flat in its own colour, at any evidence level */
.n .stamp:not([data-v=mover]){box-shadow:none}
.n .kp .f[data-t=bad] i{box-shadow:none}
.n .kp .f[data-t=larp] i{background:var(--vio)}
/* the wallets tied to a claim code are a plain list, flush with their label */
.n .legal .wb ul{list-style:none;padding-left:0}
/* card twin: evidence 16 px under the stamp, Motion 28 px under the evidence (same as the PNG) */
.n.xcard .xst{gap:14px}
.n.xcard .xscore{margin-top:6px}
/* card twin: a figure takes the verdict colour only when it produced the verdict (sells in the wave on EXIT, Motion on MOVER, calls under half on LARP) */
.n.xcard[data-v] .xf li b{color:var(--mu)}
.n.xcard[data-v] .xf li b.k-exit,.n.xcard[data-v] .xf li b.k-larp{color:var(--red)}
.n.xcard[data-v] .xf li b.k-mover{color:var(--lime)}

/* ---------- Exposer phase 1: chrome and the one box (pixel) ---------- */
/* nav and footer (was injected by views.mjs SRC_FIX): nav labels never wrap; the footer stacks under 1000 px */
.n .hdr nav a{white-space:nowrap}
@media (max-width:1000px){.n .foot{grid-template-columns:minmax(0,1fr)}}
/* home table and ticker links (was an inline style in home()) */
.n .lb th a.sortlink{color:inherit;text-decoration:none}
.n .lb th a.sortlink:hover{color:var(--fg)}
.n a.ti{color:inherit;text-decoration:none}
.n a.ti:hover{color:var(--fg)}
.n .ticker:hover .tk{animation-play-state:paused}
.n .mrow>span{display:inline-flex;align-items:center}
/* the box: tabs are buttons (the kit styles links) */
.n .mtabs button{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;white-space:nowrap;font:600 13px Inter,system-ui,sans-serif;color:var(--mu);border-radius:7px;background:none;border:0;cursor:pointer;transition:color .15s ease,background-color .15s ease}
.n .mtabs button.on{background:var(--p2);color:var(--fg)}
.n .mtabs button.on .ic{color:var(--lime)}
@media (hover:hover) and (pointer:fine){.n .mtabs button:not(.on):hover{color:var(--fg)}}
.n .mtabs button:focus-visible{outline:2px solid var(--vio2);outline-offset:-2px}
@media (max-width:560px){.n .mtabs button{padding:7px 9px;font-size:12px}.n .mtabs button .ic{display:none}}
.n .hsp{display:grid;gap:10px;width:100%;justify-items:start}
.n .hs.mini .det{max-width:520px}
.n .hmsg{display:grid;width:100%}
.n .hmsg .help{margin:0}
/* a soon tab never submits: the button stays focusable and announced (aria-disabled), it only looks off */
.n .inp .btn[aria-disabled="true"]{background:var(--p2);border-color:var(--ln);color:var(--mu);box-shadow:none;cursor:not-allowed}
.n .err{line-height:1.45}
.n .err .ic{flex:none}
.n .err a{color:var(--fg);text-decoration:underline;text-underline-offset:3px}
/* a transaction or a site pasted in a mini box (no tabs) gets a calm line, not an error */
.n .err.info{color:var(--tx)}
.n .det .dot.soon{background:var(--mu);box-shadow:none}

/* ---------- exposer phase 1 (iris) ---------- */
/* D9 soon tag (nav, menu rows, tabs); small.soon, so the hub's .mod.soon card is not hit */
.n small.soon{display:inline-block;font:500 10px/1 'JetBrains Mono',ui-monospace,monospace;letter-spacing:.04em;color:var(--mu);border:1px solid var(--ln);border-radius:4px;padding:2px 4px;margin-left:6px;vertical-align:1px}
.n .mrow .soon{font-size:11px;vertical-align:4px}
/* a selected soon tab: no lime icon, lime means live and actionable */
.n .mtabs button[data-soon].on .ic{color:var(--mu)}
/* the box on a soon tab */
.n .hs[data-soon] .inp{border-style:dashed}
.n .hs[data-soon] .inp .at{color:var(--mu)}
/* the coming-soon block */
.n .csoon{display:grid;gap:6px;max-width:620px;padding:14px 16px;background:var(--pn);border:1px dashed var(--ln);border-radius:12px}
.n .csoon .csh{display:flex;justify-content:space-between;align-items:center;gap:8px 12px;flex-wrap:wrap}
.n .csoon b{font:600 14.5px Inter;color:var(--fg)}
.n .csoon p{font-size:13.5px;color:var(--tx);max-width:62ch}
.n .csoon p.mu{font-size:13px;color:var(--mu)}
.n .csoon .sent{display:flex;align-items:center;gap:6px;font:500 12px 'JetBrains Mono',ui-monospace,monospace;color:var(--mu)}
.n .csoon a{color:var(--lime);text-decoration:underline;text-underline-offset:3px}
.n .chip[data-t="mute"]{border-color:rgba(138,138,163,.4)}
/* D10 nav from 761 to 1000 px */
@media (max-width:1000px){ .n .hdr{gap:20px} .n .hdr nav a{padding:8px 9px} .n .hdr nav .soon{display:none} }
/* D11 six tabs under 760 px: 3 x 2, live row first */
@media (max-width:760px){
  .n .mtabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}
  .n .mtabs button{justify-content:center;padding:7px 6px}
  .n .mtabs .soon{margin-left:4px;padding:2px 3px}
}
/* D3 mute stamp: a visible border, neutral text, no glow */
.n .stamp[data-t="mute"]{border-color:var(--mu);color:var(--fg)}
/* D14 only REAL MOVER gets a wash */
.n .vhero:not([data-v="mover"])::before{background:none}
/* D15 KOL and coin page h1 */
.n .khead h1 .hq{display:block;margin-top:6px;font:500 14px/1.4 'JetBrains Mono',ui-monospace,monospace;letter-spacing:.02em;color:var(--mu)}
.n .khead .lede{font-size:15px;color:var(--tx);max-width:64ch}
/* D16 /how verdicts as dl */
.n dl.rules,.n dl.rules dd{margin:0}
.n dl.rules dd{display:grid;gap:4px}
/* D8 hub module cards (.is-live: the kit already has a lime .live indicator class) */
.n .mods.m5{grid-template-columns:repeat(6,minmax(0,1fr))}
.n .mods.m5 .mod{grid-column:span 2} .n .mods.m5 .mod.is-live{grid-column:span 3}
.n .mod.soon{background:transparent;border-style:dashed}
.n .mod.soon:hover{transform:none;border-color:var(--mu)}
.n .mod.soon .mi{color:var(--mu);background:var(--pn)}
.n .mod.soon .go{color:var(--tx)}
@media (max-width:760px){ .n .mods.m5 .mod{grid-column:1/-1} .n .mods.m5 .mod.is-live{grid-column:span 3} }
@media (max-width:560px){ .n .mods.m5{grid-template-columns:minmax(0,1fr)} .n .mods.m5 .mod,.n .mods.m5 .mod.is-live{grid-column:auto} }
@media (prefers-reduced-motion:reduce){ .n .mod:hover{transform:none} }
/* coming-soon pages: "Live today" links */
.n .rels.lt{grid-template-columns:repeat(2,minmax(0,1fr));max-width:620px}
/* D11 also by box width: the hub hero column is ~520 px at 1000 px wide, narrower than one row of six tabs (~530) */
.n .hs:has(.mtabs){container-type:inline-size}
@container (max-width:560px){
  .n .mtabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}
  .n .mtabs button{justify-content:center;padding:7px 6px}
  .n .mtabs .soon{margin-left:4px;padding:2px 3px}
}
/* avatars: the X picture or coin image over the initials (was an inline style in page(), now the hub needs it too) */
.n .av{overflow:hidden;position:relative}
.n .av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%}
/* leaderboard rows: the handle is a real link (crawlable), the row stays clickable */
.n .kh2 b a{color:inherit;text-decoration:none}
@media (hover:hover) and (pointer:fine){.n .kh2 b a:hover{color:var(--lime)}}
/* KOL page: the fixed line under the verdict (seo-onpage 18.2) */
.n .vhero .vfix{margin:0;font-size:12.5px;line-height:1.5;color:var(--tx);max-width:72ch}
.n .vhero .vfix a{color:var(--fg);text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
/* /how: the Motion question above the verdict list */
.n .motq{display:grid;gap:6px;margin:0 0 18px;max-width:72ch}
.n .motq h3{font:700 18px 'Space Grotesk',Inter,sans-serif;letter-spacing:-.01em}
.n .motq p{color:var(--tx);font-size:14.5px;line-height:1.55}
.n dl.rules.one dd b{color:var(--fg)}
/* KOL page under 560 px: the kit flattens .kid and .vst, so the read line spans the head and the fixed line comes last in the hero */
@media (max-width:560px){
  .n .kp .khead .lede{grid-column:1/-1;font-size:14px}
  .n .kp .vhero .vfix{order:6}
}
/* coming-soon module pages */
.n .ph1 .mt{flex-wrap:wrap}
.n .rels.lt .rel{grid-template-columns:36px minmax(0,1fr) auto}
.n .rels.lt .rel b{color:var(--fg)}
@media (hover:hover) and (pointer:fine){.n .rels.lt .rel:hover{border-color:var(--vio)}}
.n .soonx{margin-top:14px;color:var(--tx)}
@media (max-width:560px){.n .rels.lt{grid-template-columns:minmax(0,1fr)}}

/* ---------- Coin Exposer (iris D2 to D7; was the inline COIN_CSS in views.mjs) ---------- */
.n .cimg{width:100%;height:100%;object-fit:cover;border-radius:50%;position:absolute;inset:0}
.n .tag{display:inline-block;font:600 11px/1 'JetBrains Mono',ui-monospace,monospace;letter-spacing:.04em;text-transform:uppercase;padding:4px 7px;border-radius:6px;border:1px solid var(--ln);color:var(--mu);white-space:nowrap}
.n .cnote{max-width:760px}
.n td code{font:13px 'JetBrains Mono',ui-monospace,monospace}
.n .holds{display:flex;align-items:center;gap:8px;min-width:120px}
.n .holds i{display:block;height:6px;border-radius:3px;min-width:2px}
/* the coin head: the full mint with its copy button (kit .addr) */
.n .ckp .khead{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px 20px;align-items:center}
.n .ckp .kid{display:grid;gap:8px;min-width:0}
.n .addr .cpy{display:inline-flex;align-items:center;background:none;border:0;padding:2px;color:var(--lime);cursor:pointer;border-radius:4px}
.n .addr .cpy:focus-visible{outline:2px solid var(--vio2);outline-offset:2px}
.n .ckp .findings>.sb{margin-top:4px}
.n .vhero.ns{grid-template-columns:minmax(0,1fr) auto}
.n .share .xw img,.n .mp .xw img{display:block;width:1200px;height:630px;border-radius:24px}
@media (max-width:760px){.n .ckp .khead{grid-template-columns:auto minmax(0,1fr)}.n .ckp .kact{grid-column:1/-1}}
@media (max-width:560px){.n .ckp .khead .av.big{width:56px;height:56px}.n .ckp .khead h1{font-size:26px;overflow-wrap:anywhere}}
/* D2 coin gauge: more is worse, so a grey fill, red only when the window flag fired, a tick at the flag line */
.n .score.coin .bar{position:relative;overflow:visible}
.n .score.coin .bar i{background:var(--mu);box-shadow:none;border-radius:999px}
.n .score.coin[data-hit]>b,.n .score.coin .flags b.hit{color:var(--red)}
.n .score.coin[data-hit] .bar i{background:var(--red)}
.n .score.coin .bar u{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:var(--fg);border-radius:1px}
/* D4 tables in panels; holder bars grey, red on creator and first-block rows, dashed for non-wallet holders */
.n .cpan{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}
.n .cpan .panel{min-width:0}
.n .holds i{background:var(--mu)} .n .holds.hit i{background:var(--red)}
.n .holds i.g{background:transparent;border:1px dashed var(--mu);height:4px}
.n .tag.pk{color:var(--red);border-color:rgba(255,59,107,.45)} .n .tag.vi{color:var(--vio2);border-color:rgba(139,92,246,.5)}
@media (max-width:1000px){ .n .cpan{grid-template-columns:minmax(0,1fr)} }
@media (max-width:560px){ .n .lb.cb th:nth-child(2),.n .lb.cb td:nth-child(2),.n .lb.ch th:nth-child(1),.n .lb.ch td:nth-child(1){display:none} }
/* D6 wall: kit stats and chips */
.n .stats.wst{grid-template-columns:repeat(5,minmax(0,1fr));margin:0 0 16px}
.n .chip.run{color:var(--vio2);border-color:rgba(139,92,246,.5)} .n .chip.run::before{animation:nblink 1s steps(1) infinite}
.n .chip.q{color:var(--mu)} .n .chip.q::before{display:none}
@media (max-width:760px){ .n .stats.wst{grid-template-columns:repeat(2,minmax(0,1fr))} .n .stats.wst>div:last-child{grid-column:1/-1} }
@media (max-width:560px){ .n .stats.wst{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (prefers-reduced-motion:reduce){ .n .chip.run::before{animation:none} }
/* wall filters are buttons (the kit styles .tabs a) */
.n .tabs button{padding:7px 12px;white-space:nowrap;font:600 13px Inter,system-ui,sans-serif;color:var(--mu);border-radius:7px;background:none;border:0;cursor:pointer}
.n .tabs button.on{background:var(--p2);color:var(--fg)}
.n .tabs button:focus-visible{outline:2px solid var(--vio2);outline-offset:-2px}
.n .wctl .tabs{max-width:100%;overflow-x:auto}
/* D7 recently checked (.crc: .cr is the PnL list): Why and Checks hidden under 560 */
@media (max-width:560px){ .n .lb.crc th:nth-child(3),.n .lb.crc td:nth-child(3),.n .lb.crc th:nth-child(4),.n .lb.crc td:nth-child(4){display:none} }
/* card twin: the KOL Exposer chip and the span, as on the PNG (lib/card.mjs chipSvg) */
.n.xcard .xm{display:inline-flex;align-items:center;gap:12px}
.n.xcard .xm .mc{font-size:13px;padding:5px 10px;letter-spacing:.1em}
.n.xcard .xm .mc .ic{color:var(--lime);width:16px;height:16px}
.n.xcard .xm>span:last-child{text-transform:uppercase;letter-spacing:.1em}

/* ---------- fix round 1 (aegis) ---------- */
.n .ph h2.h3{font:700 18px 'Space Grotesk',Inter,sans-serif;letter-spacing:-.02em}
/* m-4: a soon tab's button stays readable and clickable (the click re-reads the coming-soon block); the kit's aria-disabled look made it 1.89:1 and dropped focus */
.n .inp .btn[aria-disabled="true"]{opacity:1;pointer-events:auto}
.n .tw[tabindex]:focus-visible{outline:2px solid var(--vio2);outline-offset:2px}
/* m-6: under 560 px the folded-section title may wrap, so WCAG 1.4.12 text spacing never pushes the count pill off screen */
@media (max-width:560px){.n .dx>summary{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"t v" "c c" "s s"}.n .dx .dt{overflow-wrap:anywhere;min-width:0}}
.n .lhead h1{overflow-wrap:anywhere;min-width:0}.n .lhead>div{min-width:0}

/* ---------- fix round 1 (iris design QA) ---------- */
/* C1: the coin tables keep share, amounts and proof links on mobile (the kit's generic .lb column rules leaked in) */
@media (max-width:760px){ .n .lb.cb th:nth-child(5),.n .lb.cb td:nth-child(5){display:table-cell} }
@media (max-width:560px){
  .n .lb.cb th:nth-child(3),.n .lb.cb td:nth-child(3),.n .lb.ch th:nth-child(3),.n .lb.ch td:nth-child(3){display:table-cell}
  .n .lb.cb th,.n .lb.cb td,.n .lb.ch th,.n .lb.ch td{padding:10px 6px}
  .n .lb.ch .holds{min-width:0;gap:6px} .n .lb.ch .holds i{max-width:36px}
  .n .lb.ch th,.n .lb.ch td:nth-child(4),.n .lb.cb th{white-space:normal}
}
/* C5: no glow on a coin finding dot (D14: only REAL MOVER glows) */
.n .ckp .f[data-t=bad] i{box-shadow:none}
/* C6: the coin head aligns to the top, like the KOL head */
.n .ckp .khead{align-items:start}
/* W1: "Recently checked" keeps Checked and wraps long coin names instead of clipping the result chips */
@media (max-width:760px){ .n .lb.crc th:nth-child(5),.n .lb.crc td:nth-child(5){display:table-cell} }
@media (max-width:560px){ .n .lb.crc td:first-child{white-space:normal} .n .lb.crc td:first-child .mu{display:block;font-size:12px} }
/* W3: the wall heading block */
.n [data-wall] .wall-head h2{margin-top:8px}
.n [data-wall] .wall-head .note{margin-top:6px;max-width:80ch}
/* K1: "Also checked": a long verdict chip wraps inside its column instead of running under the Motion number */
.n .rel>div{min-width:0} .n .rel .chip{max-width:100%;white-space:normal;line-height:1.3}
/* K3 */
.n .rel .num.mu{color:var(--mu)}
/* L1: filters, search and sort on one row where they fit (the kit kol.png) */
@media (min-width:1240px){ .n .ctl{flex-wrap:nowrap} .n .ctl .tabs,.n .ctl .sortby{flex:none} .n .ctl .srch{min-width:180px} }
/* H3: the dashed "not live" line in the kit's mute rgba (--ln on --bg was 1.15:1, the dash was invisible) */
.n .csoon,.n .hs[data-soon] .inp,.n .mod.soon{border-color:rgba(138,138,163,.4)}
/* H4: a Coming soon chip has no dot (a dot means a reading exists) */
.n .chip.cs::before{display:none}
