/* ── Signal Rooms ──
   Grid cards reuse the .sg-card look (own accent, --signal by default).
   Legacy Result cards (type:'result', from before the price-tracking
   redesign — see the file-level comment on the signals/{id} match block
   in firestore.rules) reuse the .ai-metric-row layout so Entry/TP/SL
   read identically to the AI Analyzer card the spec calls out. A NEW
   price-tracked signal — live or settled — is instead rendered with
   index.html's own .mt5-trade-row/.mt5-live-*/.mt5-trade-item/
   .mt5-trade-detail classes (see liveSignalRowInnerHTML/
   settledSignalRowInnerHTML/paperTradeRowHTML in signal-rooms.js) rather
   than anything defined in this file — those are already global (loaded
   with index.html itself) and deliberately NOT duplicated here, since
   the entire point of the redesign is that a signal looks and behaves
   exactly like a Paper Trade, not merely similar to one. */
/* Note: the old full-height feed banner for Signal Rooms was replaced by
   a compact row inside the "Join a group/room" menu (see signal-rooms.js
   → window.renderJoinMenuExtraItems), styled by index.html's own
   .join-menu-item rules — nothing Signal-Room-specific needed here for
   that entry point anymore. */
.srm-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(230px, 1fr));gap:14px;}
.srm-card{
  position:relative;overflow:hidden;display:flex;flex-direction:column;gap:8px;padding:16px;
  border-radius:14px;cursor:pointer;
  border:1px solid color-mix(in srgb, var(--accent) 28%, var(--border));
  background:linear-gradient(160deg, color-mix(in srgb, var(--accent) 10%, var(--bg)) 0%, var(--bg) 62%);
  box-shadow:0 3px 16px color-mix(in srgb, var(--accent) 12%, transparent);
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
  --accent:var(--gold);
}
.srm-card:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 10px 24px color-mix(in srgb, var(--accent) 24%, transparent);}
.srm-card::before{content:'';position:absolute;left:0;top:0;right:0;height:3px;background:linear-gradient(90deg, var(--accent), color-mix(in srgb, var(--accent) 15%, transparent));}
.srm-card-title{font-size:15px;font-weight:800;color:var(--ink);}
.srm-card-owner{font-size:11.5px;color:var(--ink-faint);margin-top:1px;}
.srm-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:4px;padding-top:10px;border-top:1px solid color-mix(in srgb, var(--accent) 16%, var(--border-soft));}
.srm-card-stats{display:flex;gap:10px;font-size:11px;color:var(--ink-soft);font-weight:700;}
.srm-health{
  display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:800;letter-spacing:0.3px;
  padding:3px 9px;border-radius:100px;text-transform:uppercase;
}
.srm-health i{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.srm-health.strong{background:color-mix(in srgb, var(--green) 16%, transparent);color:var(--green);}
.srm-health.strong i{background:var(--green);}
.srm-health.medium{background:color-mix(in srgb, var(--gold) 18%, transparent);color:var(--gold);}
.srm-health.medium i{background:var(--gold);}
.srm-health.weak{background:color-mix(in srgb, var(--loss) 14%, transparent);color:var(--loss);}
.srm-health.weak i{background:var(--loss);}
.srm-card-cta{font-size:12px;font-weight:800;color:var(--accent);flex-shrink:0;}
.srm-section-title{font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:0.5px;color:var(--ink-faint);margin:18px 0 10px;}
.srm-header{padding:18px;border-radius:14px;position:relative;overflow:hidden;--accent:var(--gold);
  background:linear-gradient(160deg, color-mix(in srgb, var(--accent) 10%, var(--surface)) 0%, var(--surface) 62%);
  border:1px solid color-mix(in srgb, var(--accent) 30%, var(--border));}
.srm-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;}
.srm-header-title{font-family:var(--font-display);font-size:19px;font-weight:800;color:var(--ink);}
.srm-header-owner{font-size:12.5px;color:var(--ink-faint);margin-top:2px;}
.srm-header-desc{font-size:12.5px;color:var(--ink-soft);margin-top:8px;line-height:1.5;}
.srm-header-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:12px;color:var(--ink-soft);font-weight:600;}
/* Public Signal Record card (see loadSignalRoomHistory in
   signal-rooms.js) — plain .card has no padding of its own (every usage
   sets it per-instance), and this one was accidentally left at zero,
   so its title/description sat flush against the card edges instead of
   matching the room header just above it. 18px matches .srm-header's
   own padding exactly, on purpose — same card family, same inset. */
.srm-record-card{padding:18px;margin-top:14px;}
.srm-stars{display:inline-flex;gap:2px;cursor:pointer;}
.srm-star{font-size:16px;color:var(--border);}
.srm-star.filled{color:var(--gold);}
.srm-star.clickable:hover{color:var(--gold);transform:scale(1.15);}
.srm-banner{margin-top:12px;padding:10px 12px;border-radius:10px;font-size:12px;font-weight:700;display:flex;align-items:center;gap:8px;}
.srm-banner.locked{background:color-mix(in srgb, var(--loss) 12%, transparent);color:var(--loss);}
.srm-banner.archived{background:color-mix(in srgb, var(--ink-faint) 14%, transparent);color:var(--ink-soft);}
/* Advisory, not blocking — see paperLossWarning in signalRooms.js.
   Deliberately gold/caution rather than the red used by .locked/
   .archived: unlike those two, this never disables Share signal/Result,
   it only tells subscribers the provider's paper account is in a
   drawdown right now. */
.srm-banner.paper-warning{background:color-mix(in srgb, var(--gold) 14%, transparent);color:var(--gold);}
.srm-action-row{display:flex;gap:10px;margin-top:14px;}
.srm-action-row .btn{flex:1;}
.srm-fee-chips{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0;}
.srm-fee-chip{
  flex:1;min-width:88px;text-align:center;padding:10px 8px;border-radius:10px;cursor:pointer;
  border:1.5px solid var(--border);background:var(--surface);
}
.srm-fee-chip.selected{border-color:var(--gold);background:color-mix(in srgb, var(--gold) 12%, var(--surface));}
.srm-fee-chip .label{font-size:10.5px;color:var(--ink-faint);text-transform:uppercase;font-weight:700;}
.srm-fee-chip .amt{font-size:14px;font-weight:800;color:var(--ink);margin-top:2px;}
.srm-card-feed{margin-top:14px;}
.signal-card{
  position:relative;overflow:hidden;border-radius:14px;padding:14px 14px 12px 18px;margin-bottom:12px;
  background:linear-gradient(160deg, color-mix(in srgb, var(--accent) 9%, var(--surface)) 0%, var(--surface) 60%);
  border:1px solid color-mix(in srgb, var(--accent) 32%, var(--border));
  --accent:var(--gold);
}
.signal-card.buy{--accent:var(--green);}
.signal-card.sell{--accent:var(--loss);}
.signal-card.result-win{--accent:var(--green);}
.signal-card.result-loss{--accent:var(--loss);}
.signal-card.result-breakeven{--accent:var(--gold);}
.signal-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg, var(--accent), color-mix(in srgb, var(--accent) 40%, transparent));}
.signal-card-eyebrow{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-display);font-size:10.5px;font-weight:700;letter-spacing:1.3px;text-transform:uppercase;color:var(--accent);}
.signal-card-word{font-family:var(--font-display);font-size:19px;font-weight:800;color:var(--accent);margin-top:4px;}
.signal-card-pair{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-faint);margin-top:2px;font-weight:600;}
.signal-card-comment{font-size:13px;color:var(--ink);margin-top:9px;line-height:1.5;}
.signal-card-meta{font-size:11px;color:var(--ink-faint);margin-top:8px;}
