/* Workspace pages (Portfolio, Morning Briefing, Market Feed, Signal Scanner) — UI standard, October 2026. Tokens only. */
.sr-only{position:absolute!important;left:0;top:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Shared page header actions */
.workspace-heading{flex-wrap:wrap;gap:12px}
.workspace-heading>div:first-child{min-width:0;flex:1 1 240px}
.workspace-heading-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* Card header with one action on the right */
.cmd-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;text-transform:none;letter-spacing:0}
.cmd-empty{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;padding:12px;color:var(--t2);font-size:var(--text-xs)}
.cmd-empty[hidden]{display:none}
.cmd-more{margin-top:8px;border-top:1px solid var(--brd);padding-top:8px}
.cmd-more>summary{cursor:pointer;color:var(--t1);font-size:var(--text-xs);font-weight:600;min-height:32px;display:flex;align-items:center;gap:8px}
.cmd-more>summary:focus-visible{outline:2px solid var(--blu);outline-offset:2px;border-radius:4px}
#perfStatus:empty,.scan-status:empty{display:none}
.act-cat{display:inline-block;font-weight:600;padding:0 6px;border-radius:var(--radius-pill);background:var(--s3)}
.cmd-sym-btn{font-family:var(--mono);font-weight:700;padding:2px 8px;min-height:0}

/* KPI tiles are buttons: keep the tile look, add keyboard focus */
button.kpi{width:100%;font:inherit;color:inherit;cursor:pointer;background:var(--s2);border:1px solid var(--brd)}
button.kpi:focus-visible{outline:2px solid var(--blu);outline-offset:2px}
.cmd-kpis .kpi{display:block;text-align:left;padding:12px 14px}
.cmd-kpis .kpi .val{font-family:var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Feature modal close (feature catalogue is hidden but the modal stays accessible) */
.feat-detail-box .fd-close{background:none;border:0;line-height:1}

/* Signal Scanner */
#p-scan>.prog{margin:0 0 10px}
.scan-status{margin:0 0 10px}
.asset-tab:focus-visible{outline:2px solid var(--blu);outline-offset:-2px}
.scan-intel{padding:12px}
.scan-strip{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.scan-strip-more{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:8px}
.scan-strip .st{text-align:center}
.scan-strip .v{font-size:var(--text-base)}
.scan-updated{font-weight:400;color:var(--t3);font-family:var(--mono);font-size:var(--text-2xs)}
.scan-row{gap:10px;flex-wrap:wrap;align-items:flex-end}
.scan-field{display:flex;flex-direction:column;gap:4px;font-size:var(--text-2xs);color:var(--t2);min-width:120px}
.scan-field select,.scan-field input:not([type=range]){min-width:120px}
.scan-field input[type=number]{width:90px;min-width:0}
.scan-field-label{font-size:var(--text-2xs);color:var(--t2)}
.scan-count{font-size:var(--text-2xs);color:var(--t2);font-family:var(--mono)}
.scan-results-head{padding:10px 18px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;border-bottom:1px solid var(--brd)}
.scan-table-wrap{position:relative;max-height:600px;overflow:auto}
.scan-row-link{cursor:pointer}
.scan-row-link:hover{background:var(--s2)}
.scan-sym{background:none;border:0;padding:0;font:inherit;font-weight:700;color:var(--t0);cursor:pointer;text-decoration:underline;text-decoration-color:var(--brd);text-underline-offset:3px}
.scan-sym:hover,.scan-sym:focus-visible{color:var(--blu);text-decoration-color:var(--blu)}
#sigTb .empty .btn{margin-left:8px}
/* The symbol search component adds from its own dropdown; the legacy + Add reads the hidden input, so hide it then. */
.scan-row:has(#addI[data-ss-bound]) #scanAddBtn{display:none}
.scan-strip .l,#p-scan .playlist-title,#scanAssetTabs .asset-tab{text-transform:none;letter-spacing:0}
.scan-strip .v{font-weight:600}

@media(max-width:1150px){.scan-strip{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:760px){
 .scan-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
 .scan-strip-more{grid-template-columns:repeat(3,minmax(0,1fr))}
 .scan-field{flex:1 1 140px;min-width:0}
 .scan-field select,.scan-field input:not([type=range]){min-width:0;width:100%}
 #symSearchWrap{min-width:0!important}
 .scan-results-head{padding:10px 12px}
 .workspace-heading-actions{width:100%}
 .workspace-heading-actions .btn{flex:1 1 auto}
 .cmd-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
