/* RAMP4U realism layer — prefix tags, deal badges, thread indicators, reactions, vendor/PGP, reputation, online dot, viewing/typing, footer stats. v20260920-1 */

/* ---- Prefix tag labels (colored pills) ---- */
.tag, .prefix-label {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 1px 7px; margin: 0 6px 0 0;
  border-radius: 3px; font-size: 11px; font-weight: 700;
  letter-spacing: .04em; text-transform: uppercase;
  line-height: 18px; vertical-align: middle; white-space: nowrap;
  border: 1px solid transparent;
}
.tag-wtb, .prefix-wtb   { background: #3a1414; color: #ff6b6b; border-color: #6e2424; }
.tag-wts, .prefix-wts   { background: #123a1a; color: #5fd97a; border-color: #1f5a30; }
.tag-leak, .prefix-leak { background: #2a1a3a; color: #b98cff; border-color: #432a5e; }
.tag-cve, .prefix-cve   { background: #142a3a; color: #6cc4ff; border-color: #1f4a5e; }
.tag-exploit           { background: #3a2a14; color: #ffb86b; border-color: #5e432a; }
.tag-poc               { background: #2a3a3a; color: #6bd4d4; border-color: #2a4a4a; }
.tag-review            { background: #3a2a1a; color: #ffc46b; border-color: #5e432a; }
.tag-auction           { background: #3a3a14; color: #e8d56b; border-color: #5e5e2a; }
.tag-partner           { background: #142a3a; color: #6bc4ff; border-color: #1f4a5e; }
.tag-vendor            { background: #143a2a; color: #5fd4c4; border-color: #1f5e4a; }
.tag-db                { background: #3a3010; color: #f5d24a; border-color: #7a6418; }
/* ---- Extra prefix tags (darkweb set) ---- */
.tag-request, .tag-mirrored { background: #2a1a3a; color: #b98cff; border-color: #432a5e; }
.tag-dump               { background: #3a142a; color: #d48cff; border-color: #5e2a4a; }
.tag-day                { background: #3a1414; color: #ff8b6b; border-color: #6e2424; }
.tag-wtt                { background: #143a2a; color: #5fd4c4; border-color: #1f5e4a; }
.tag-closed, .tag-sold  { background: #2a2a2a; color: #9a9a9a; border-color: #4a4a4a; }
.tag-scam, .tag-ripper, .tag-warning { background: #3a1414; color: #ff6b6b; border-color: #6e2424; }
.tag-dispute            { background: #3a2a14; color: #ffb86b; border-color: #5e432a; }
.tag-hiring             { background: #143a3a; color: #6bd4d4; border-color: #1f5e5e; }
.tag-affiliate          { background: #142a3a; color: #6bc4ff; border-color: #1f4a5e; }
.tag-escrow, .tag-guarant { background: #123a1a; color: #5fd97a; border-color: #1f5a30; }
.tag-tool, .tag-release { background: #2a3a3a; color: #6bd4d4; border-color: #2a4a4a; }
.tag-guide, .tag-tutorial { background: #143a2a; color: #5fd4c4; border-color: #1f5e4a; }
.tag-discussion         { background: #2a2a3a; color: #9a9aff; border-color: #4a4a5e; }
.tag-news               { background: #142a3a; color: #6cc4ff; border-color: #1f4a5e; }
.tag-archive            { background: #2a2a2a; color: #8a8a8a; border-color: #4a4a4a; }
.tag-text {
  display: inline;
  padding: 0;
  margin: 0 6px 0 0;
  border: 0;
  background: none;
  border-radius: 0;
  font-size: inherit;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
  line-height: inherit;
  color: inherit;
  vertical-align: baseline;
  white-space: nowrap;
}

/* ---- Deal / escrow status badges ---- */
.deal {
  display: inline-block; padding: 1px 7px; border-radius: 3px;
  font-size: 10px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
  margin: 0 6px 0 0; line-height: 16px;
}
.deal-open      { background: #123a1a; color: #5fd97a; }
.deal-escrow    { background: #142a3a; color: #6cc4ff; }
.deal-completed { background: #2a2a2a; color: #9aa0a8; }
.deal-disputed   { background: #3a2a14; color: #ffb86b; }
.deal-scam      { background: #3a1414; color: #ff6b6b; }

/* ---- Thread row indicators (sticky / locked / hot) ---- */
.thread-icon { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; opacity: .85; }
.thread-icon .mdi-glyph { font-size: 14px; }
.thread-sticky .mdi-glyph { color: #e8d56b; }
.thread-locked .mdi-glyph { color: #9aa0a8; }
.thread-hot .mdi-glyph { color: #ff7a59; }
.thread-row.is-sticky { background: rgba(232,213,107,.05); }
.thread-row.is-locked .thread-title { color: #8a8f96; }
.thread-row.is-locked .thread-title::after { content: " (closed)"; color: #6a6f76; font-weight: 400; font-size: 12px; }

/* ---- Post reactions ---- */
.post-reactions { display: flex; gap: 14px; margin-top: 10px; padding-top: 8px; border-top: 1px solid #23262b; font-size: 12px; color: #8a8f96; }
.post-reactions .react { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; user-select: none; }
.post-reactions .react .mdi-glyph { font-size: 15px; }
.post-reactions .react.pos .mdi-glyph { color: #5fd97a; }
.post-reactions .react.neg .mdi-glyph { color: #ff6b6b; }
.post-reactions .react:hover { color: #e8eaed; }

/* ---- Avatar online dot ---- */
.avatar--img, .avatar { position: relative; }
.avatar.is-online::after, .avatar--img.is-online::after {
  content: ""; position: absolute; right: -2px; bottom: -2px;
  width: 9px; height: 9px; border-radius: 50%;
  background: #4cd964; border: 2px solid #15171b; box-shadow: 0 0 0 1px #4cd96455;
}

/* ---- Vendor / verified badges ---- */
.badge-row { display: inline-flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.vendor-badge, .verified-badge, .staff-badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; border-radius: 3px; font-size: 11px; font-weight: 700;
  letter-spacing: .03em;
}
.vendor-badge { background: #143a2a; color: #5fd4c4; }
.verified-badge { background: #142a3a; color: #6cc4ff; }
.verified-badge .mdi-glyph { font-size: 13px; }
.staff-badge { background: #3a1414; color: #ff8a6b; }

/* ---- PGP fingerprint block ---- */
.pgp-block {
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 12px; line-height: 1.7; letter-spacing: .02em;
  background: #181a1f; border: 1px solid #23262b; border-radius: 4px;
  padding: 10px 12px; color: #b8bdc4; word-break: break-all; white-space: pre-wrap;
}
.contact-row { display: flex; gap: 8px; align-items: center; font-size: 13px; margin: 4px 0; color: #b8bdc4; }
.contact-row .mdi-glyph { font-size: 15px; color: #6cc4ff; }

/* ---- Reputation comments ---- */
.rep-list { display: flex; flex-direction: column; gap: 8px; }
.rep-comment { display: flex; gap: 10px; align-items: flex-start; padding: 8px 10px; background: #181a1f; border: 1px solid #23262b; border-radius: 4px; }
.rep-comment .rep-score { font-weight: 700; font-size: 13px; }
.rep-comment .rep-score.pos { color: #5fd97a; }
.rep-comment .rep-score.neg { color: #ff6b6b; }
.rep-comment .rep-body { font-size: 13px; color: #c8cdd4; }
.rep-comment .rep-meta { font-size: 11px; color: #6a6f76; margin-top: 2px; }

/* ---- Thread view: viewing / typing / live view count ---- */
.thread-livebar { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; padding: 8px 0 12px; font-size: 12px; color: #8a8f96; border-bottom: 1px solid #23262b; margin-bottom: 14px; }
.thread-livebar .live-item { display: inline-flex; align-items: center; gap: 6px; }
.thread-livebar .live-dot { width: 7px; height: 7px; border-radius: 50%; background: #4cd964; display: inline-block; }
.thread-livebar .live-pulse { animation: ramp-pulse 1.6s ease-in-out infinite; }
/* Inline stats inside the thread title meta (replies / views / Hot) */
.threadTitleMeta .threadStat { display: inline-flex; align-items: center; gap: 5px; font-weight: 400; }
.threadTitleMeta .threadStat .mdi-glyph { font-size: 15px; opacity: .8; }
.threadTitleBar .tag { position: relative; top: -2px; }
@keyframes ramp-pulse { 0%,100% { opacity: 1; } 50% { opacity: .35; } }
.thread-typing { color: #6cc4ff; }
.thread-typing .mdi-glyph { font-size: 13px; }

/* ---- "New" indicator dot on thread rows ---- */
.thread-row .new-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: #6cc4ff; margin-left: 6px; vertical-align: middle; }

/* ---- Forum footer stats (live) ---- */
.forum-stats { display: flex; gap: 22px; flex-wrap: wrap; font-size: 12px; color: #8a8f96; padding: 10px 0; }
.forum-stats .stat { display: inline-flex; align-items: center; gap: 6px; }
.forum-stats .stat strong { color: #e8eaed; font-weight: 600; }
.forum-stats .stat .mdi-glyph { font-size: 14px; color: #6a6f76; }
.forum-stats .stat.online .live-dot { width: 7px; height: 7px; border-radius: 50%; background: #4cd964; display: inline-block; animation: ramp-pulse 1.6s ease-in-out infinite; }

/* ---- Onion mirror / canary link ---- */
.onion-link { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: #8a8f96; }
.onion-link .mdi-glyph { font-size: 14px; color: #b98cff; }
.onion-link code { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 11px; color: #b8bdc4; background: #181a1f; padding: 1px 5px; border-radius: 3px; }

/* ---- PGP-signed indicator on announcements ---- */
.pgp-signed { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: #5fd4c4; padding: 1px 6px; border: 1px solid #1f5e4a; border-radius: 3px; }
.pgp-signed .mdi-glyph { font-size: 12px; }

/* ---- CAPTCHA visual on login/register (server-side SVG image) ---- */
.captcha-box { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0; max-width: 100%; box-sizing: border-box; }
/* The login form rows are grid cells with a fixed 51px height; the captcha
   (image + padding) needs more room, so size this row to content. */
.formRow--captcha { height: auto; }
.formRow--captcha > dd { padding: 10px 15px; }
.captcha-img {
  width: 150px; height: 48px; border: 1px solid #32363d; border-radius: 4px; background: #121419;
  flex: 0 0 150px; display: block; user-select: none; cursor: pointer; box-sizing: border-box;
}
.captcha-refresh {
  background: #1a1d24; border: 1px solid #32363d; border-radius: 4px; color: #8a8f96;
  padding: 0 10px; cursor: pointer; font-size: 16px; line-height: 46px; height: 48px; flex: 0 0 auto;
}
.captcha-refresh:hover { color: #b8bdc4; border-color: #4a4f58; }
.captcha-input { flex: 0 0 140px; width: 140px; max-width: 140px; min-width: 0; height: 48px; box-sizing: border-box; }

/* ---- Live activity feed slide-in ---- */
.forumRailActivity li.activitySlideIn { animation: ramp-slide-in .55s ease-out; }
@keyframes ramp-slide-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
.forumRailActivity li.activityNew { box-shadow: inset 3px 0 0 #6cc4ff; }
