/* Signals Wire — page CSS ported from the operator's "LoanLedger Signals Wire
   (v6)" mock (its inline <style> block), layered over the live /v5 token +
   shell stylesheets exactly as the mock layers over its siblings. Mock-only
   states were dropped: the signed-out bar (.sobar — the live signed-out page
   keeps its shipped teaser), the redaction painter (.red/body.so), and the
   mock-state switcher (.mockbar). Additions for the live host are marked. */

/* live-host boot gate (shell integration, not mock styling) */
html[data-signals-auth="member"][data-wire-booting="true"] .sv2-member:not([data-wire-ready="true"]){visibility:hidden;}
html[data-signals-auth="member"] .sv2-member[data-wire-ready="true"]{visibility:visible;}
/* The legacy workspace widened the host to 1480px; the mock runs at the shell's
   default clamp. Applied only once the Wire actually booted. */
main.signals-v2[data-wire-active]{max-width:min(1320px,100%);}
main.signals-v2[data-wire-active] .sv2-member{line-height:1.4;}
/* mock: a{color:var(--violet)} — scoped to the Wire so the shared chrome and
   the signed-out teaser keep their own link styles */
#sv2-member[data-wire-ready] a{color:var(--violet);}
#sv2-member[data-wire-ready] a:hover{color:var(--ink);}

.panel{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-sm);overflow:hidden}
.ph{display:flex;align-items:center;gap:.55rem;padding:.8rem 1.2rem;border-bottom:1px solid var(--border-2)}
.ph .tt{font-family:var(--mono);font-size:.63rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}
.ph .tt b{color:var(--violet)}
.ph .ct{margin-left:auto;font-family:var(--mono);font-size:.62rem;color:var(--dim)}
.ph .live{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 22%,transparent);animation:pulse 2.2s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 22%,transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--green) 10%,transparent)}}
@media(prefers-reduced-motion:reduce){.ph .live{animation:none}}
.btn-v{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:.68rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:#fff;background:var(--violet);border-radius:10px;padding:.62rem 1rem;text-decoration:none;border:0;cursor:pointer}
.btn-v:hover{filter:brightness(1.1);color:#fff}
.btn-g{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:.68rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);background:var(--inset);border:1px solid var(--border);border-radius:10px;padding:.62rem 1rem;text-decoration:none;cursor:pointer}
.btn-g:hover{color:var(--ink);border-color:var(--border-strong)}
/* ---------- triage band ---------- */
/* Band chrome is violet — the product pointing at something. Red is reserved
   for rows whose condition IS a warning (operator ruling 2026-08-14). */
.triage{border-left:3px solid var(--violet);margin-bottom:1.1rem}
.triage .ph{background:color-mix(in srgb,var(--violet) 7%,transparent)}
.triage .ph .tt b{color:var(--violet)}
.tmark{margin-left:.4rem;border:none;background:none;padding:0;cursor:pointer;font-family:var(--mono);font-size:.6rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--violet)}
.tmark:hover{color:var(--ink)}
.trow{display:grid;grid-template-columns:auto auto 1fr auto auto;gap:.9rem;align-items:center;padding:.85rem 1.2rem;text-decoration:none;color:inherit}
.trow+.trow{border-top:1px solid var(--border-2)}
.trow:hover{background:var(--card-2)}
.trow .tn{font-family:var(--mono);font-size:.6rem;font-weight:700;color:var(--dim);border:1px solid var(--border-2);border-radius:6px;padding:.18rem .4rem}
.trow[data-read="true"]{opacity:.7}
.trow[data-read="false"] .tx b::before{content:"";display:inline-block;width:7px;height:7px;border-radius:99px;background:var(--violet);margin-right:.45rem;vertical-align:2px}
.trow .sev{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--violet) 12%,transparent);color:var(--violet)}
.trow .sev.warn{background:color-mix(in srgb,var(--red) 14%,transparent);color:var(--red)}
.trow .sev svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.trow .sev.gold{background:color-mix(in srgb,var(--gold) 14%,transparent);color:var(--gold)}
.trow .tx{min-width:0}
.trow .tx b{display:block;font-size:.86rem;font-weight:700;color:var(--ink);line-height:1.3}
.trow .tx span{display:block;font-size:.7rem;color:var(--muted);margin-top:.2rem;line-height:1.5}
.trow .ago{font-family:var(--mono);font-size:.62rem;color:var(--dim);white-space:nowrap}
.trow .go{font-family:var(--mono);font-size:.72rem;color:var(--dim)}
.trow:hover .go{color:var(--ink)}
/* ---------- kpis ---------- */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem;margin-bottom:1.1rem}
@media(max-width:980px){.kpis{grid-template-columns:1fr 1fr}}
.kpi{position:relative;background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-sm);padding:1rem 1.1rem .85rem}
.kpi .lbl{font-family:var(--mono);font-size:.57rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}
.kpi .val{font-family:var(--mono);font-weight:700;font-size:1.6rem;letter-spacing:-.02em;color:var(--ink);margin-top:.35rem;line-height:1;text-shadow:0 0 6px var(--card),0 0 12px var(--card)}
.kpi .sub{font-family:var(--mono);font-size:.61rem;color:var(--dim);margin-top:.3rem;text-shadow:0 0 6px var(--card),0 0 12px var(--card)}
.kpi .spark{height:28px;margin-top:.5rem;color:var(--violet)}
.kpi .spark.bad{color:var(--red)}
.kpi .spark svg{width:100%;height:100%;display:block}
.asof{font-family:var(--mono);font-size:.57rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin:-.5rem 0 1.1rem}
/* ---------- grid ---------- */
.cols{display:grid;grid-template-columns:1fr 320px;gap:1.1rem;align-items:start}
@media(max-width:1020px){.cols{grid-template-columns:1fr}}
/* ---------- filters ---------- */
.chips{display:flex;gap:.4rem;flex-wrap:wrap;padding:.7rem 1.2rem;border-bottom:1px solid var(--border-2);background:var(--card-2)}
.chip{font-family:var(--mono);font-size:.6rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;padding:.34rem .7rem;border-radius:999px;background:var(--inset);border:1px solid var(--border);color:var(--muted);cursor:pointer}
.chip:hover{color:var(--ink);border-color:var(--border-strong)}
.chip.on{background:var(--violet);border-color:var(--violet);color:#fff}
.chip .n{opacity:.65;margin-left:.3rem}
/* ---------- wire rows ---------- */
.wrow{display:grid;grid-template-columns:auto auto 1fr auto auto;gap:.9rem;align-items:center;padding:.78rem 1.2rem;border-left:3px solid transparent;text-decoration:none;color:inherit}
.wrow+.wrow{border-top:1px solid var(--border-2)}
.wrow:hover{background:var(--card-2)}
.wrow.flag{border-left-color:var(--red)}
.wrow.held{border-left-color:var(--gold)}
.wrow .tm{font-family:var(--mono);font-size:.63rem;color:var(--dim);width:42px}
.wrow .ic{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-family:var(--mono);font-weight:800;font-size:.58rem;background:var(--violet-soft);color:var(--violet)}
.wrow .ic.pay{background:var(--green-soft);color:var(--green)}
.wrow .ic.wrd{background:color-mix(in srgb,var(--gold) 14%,transparent);color:var(--gold)}
/* live-host addition: warning events (UNP/DSP/DEF) carry real red badges */
.wrow .ic.bad{background:color-mix(in srgb,var(--red) 14%,transparent);color:var(--red)}
.wrow .tx{min-width:0}
.wrow .tx b{display:block;font-size:.83rem;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wrow .tx span{display:block;font-size:.68rem;color:var(--muted);margin-top:.14rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trail{display:flex;gap:3px;align-items:center}
.trail i{width:5px;height:15px;border-radius:2px;background:var(--border-strong)}
.trail i.ok{background:var(--green)}.trail i.op{background:var(--blueHi)}.trail i.bad{background:var(--red)}
.ty{font-family:var(--mono);font-size:.54rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;padding:.22rem .5rem;border-radius:999px;background:var(--inset);border:1px solid var(--border);color:var(--dim);white-space:nowrap}
.ty.n{color:var(--violet);border-color:color-mix(in srgb,var(--violet) 40%,transparent)}
.ty.k{color:var(--green);border-color:color-mix(in srgb,var(--green) 40%,transparent)}
.ty.f{color:var(--red);border-color:color-mix(in srgb,var(--red) 40%,transparent)}
.ty.g{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 40%,transparent)}
.pf{display:flex;justify-content:center;padding:.7rem;border-top:1px solid var(--border-2)}
.pf a{font-family:var(--mono);font-size:.65rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--violet);text-decoration:none}
.pf a:hover{color:var(--ink)}
@media(max-width:700px){.wrow{grid-template-columns:auto auto 1fr auto}.trail{display:none}}
/* ---------- empty / loading ---------- */
.empty{padding:2.2rem 1.5rem;text-align:center}
.empty .ec{width:42px;height:42px;border-radius:12px;margin:0 auto .8rem;display:grid;place-items:center;background:var(--green-soft);color:var(--green)}
.empty .ec svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.empty b{display:block;font-size:.9rem;color:var(--ink);font-weight:700}
.empty span{display:block;font-size:.72rem;color:var(--muted);margin-top:.35rem;line-height:1.6}
.sk{padding:.78rem 1.2rem;display:grid;grid-template-columns:42px 30px 1fr 60px;gap:.9rem;align-items:center}
.sk+.sk{border-top:1px solid var(--border-2)}
.sk i{display:block;height:10px;border-radius:4px;background:var(--inset);animation:sh 1.4s ease-in-out infinite}
.sk i.t2{height:8px;margin-top:.35rem;width:62%;opacity:.7}
.sk .b{height:30px;border-radius:9px}
@keyframes sh{0%,100%{opacity:1}50%{opacity:.45}}
@media(prefers-reduced-motion:reduce){.sk i{animation:none}}
/* ---------- side ---------- */
.side{display:flex;flex-direction:column;gap:1.1rem}
/* quick lookup (the operator-ruled rail card; styles from the v6.1 sibling) */
.qlk{display:flex;gap:.5rem;padding:.9rem 1.2rem 0}
.qlk label{flex:1;display:flex;align-items:center;gap:.5rem;background:var(--input-bg);border:1px solid var(--border);border-radius:9px;padding:0 .7rem;height:38px}
.qlk label:focus-within{border-color:var(--violet);box-shadow:0 0 0 3px color-mix(in srgb,var(--violet) 18%,transparent)}
.qlk svg{width:14px;height:14px;color:var(--dim);flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.qlk input{flex:1;min-width:0;background:none;border:none;outline:none;font-family:var(--mono);font-size:.78rem;color:var(--ink)}
.qlk input::placeholder{color:var(--dim)}
.qlk .btn-v{padding:.55rem .8rem;font-size:.6rem}
.qhint{font-family:var(--mono);font-size:.57rem;color:var(--dim);padding:.55rem 1.2rem .95rem;line-height:1.5}
.wardcard{display:flex;align-items:center;gap:.9rem;background:var(--card);border:1px solid var(--border);border-left:3px solid var(--gold);border-radius:var(--r-lg);box-shadow:var(--sh-sm);padding:1rem 1.2rem;text-decoration:none}
.wardcard .wmark{height:30px;width:30px;flex:none}
.wardcard .tx b{display:block;font-size:.84rem;font-weight:800;color:var(--ink)}
.wardcard .tx span{display:block;font-family:var(--mono);font-size:.63rem;color:var(--muted);margin-top:.2rem}
.wardcard .go{margin-left:auto;font-family:var(--mono);font-size:.72rem;color:var(--gold)}
.wardcard:hover .go{color:var(--ink)}
.srow{display:flex;align-items:baseline;gap:.7rem;padding:.7rem 1.2rem}
.srow+.srow{border-top:1px solid var(--border-2)}
.srow .k{font-family:var(--mono);font-size:.63rem;color:var(--muted)}
.srow .v{margin-left:auto;font-family:var(--mono);font-weight:700;font-size:.86rem;color:var(--ink)}
.depth{padding:1rem 1.2rem 1.15rem}
.depth .bars{display:flex;align-items:flex-end;gap:5px;height:60px;margin-top:.8rem}
.depth .bars i{flex:1;background:var(--violet);border-radius:3px 3px 0 0;opacity:.85}
.depth .bars i:nth-child(-n+4){opacity:.4}
.depth .yl{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.55rem;color:var(--dim);margin-top:.4rem}
.depth .note{font-family:var(--mono);font-size:.61rem;color:var(--dim);margin-top:.6rem;line-height:1.6}
.depth .note b{color:var(--muted)}
