/* Threat Campaigns / Correlation Theater */
.threat-campaign-heading { align-items: flex-end; }
.threat-heading-actions { display: flex; align-items: flex-end; justify-content: flex-end; gap: 9px; flex-wrap: wrap; }
.threat-heading-actions .compact-field { min-width: 154px; }
.threat-heading-actions .compact-field > span:first-child { color: #8a94a4; font-size: 9px; text-transform: uppercase; letter-spacing: .08em; }
.threat-tenant-name { display: block; max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ink); font-size: 11px; font-weight: 750; }
.threat-heading-actions .button-secondary { height: 38px; }
.threat-heading-actions .count-pill { align-self: center; height: 38px; color: #8f6200; background: #fffaf0; border-color: #f5df91; }

.threat-campaign-layout { display: grid; grid-template-columns: minmax(220px, 252px) minmax(500px, 1fr) minmax(235px, 274px); gap: 13px; align-items: start; }
.threat-campaign-rail, .threat-path-panel, .threat-inspector { padding: 0; overflow: hidden; }
.threat-campaign-rail { min-height: 610px; display: flex; flex-direction: column; }
.threat-rail-header, .threat-inspector-header, .threat-timeline-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding: 16px 15px 13px; border-bottom: 1px solid #edf0f3; }
.section-kicker { display: block; color: #9d6a00; font-size: 9px; font-weight: 850; letter-spacing: .12em; }
.threat-rail-header h2, .threat-inspector-header h2, .threat-timeline-header h2 { margin: 4px 0 0; color: #273142; font-size: 14px; letter-spacing: -.015em; }
.threat-active-dot { display: inline-flex; align-items: center; gap: 6px; color: var(--green); font-size: 9px; font-weight: 850; text-transform: uppercase; }
.threat-active-dot i { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--green); box-shadow: 0 0 0 4px rgba(22,163,106,.1); }
.threat-rail-tools { display: grid; grid-template-columns: minmax(0,1.1fr) minmax(0,.9fr); gap: 7px; padding: 11px 13px 9px; background: #fbfcfd; border-bottom: 1px solid #edf0f3; }
.threat-rail-tools select { width: 100%; min-width: 0; height: 32px; padding: 0 25px 0 9px; border: 1px solid #e4e8ee; border-radius: 8px; background: white; color: #657080; font-size: 10px; outline: none; }
.threat-rail-tools select:focus, .threat-heading-actions select:focus { border-color: var(--yellow); box-shadow: 0 0 0 3px rgba(255,196,0,.12); }
.threat-campaign-list { flex: 1; overflow: auto; }
.threat-list-empty { display: grid; min-height: 230px; place-items: center; padding: 24px; color: #8b95a3; font-size: 10px; text-align: center; }
.threat-campaign-item { width: 100%; display: grid; grid-template-columns: 10px minmax(0,1fr) auto; gap: 8px; align-items: start; padding: 14px 13px 13px; border: 0; border-bottom: 1px solid #edf0f3; background: white; text-align: left; cursor: pointer; }
.threat-campaign-item:hover { background: #fffcf3; }
.threat-campaign-item.active { background: linear-gradient(105deg, #fff7d7, #fffdf5); box-shadow: inset 3px 0 var(--yellow); }
.threat-campaign-item.recurring { border-left: 3px solid #d6aa29; padding-left: 10px; background: linear-gradient(105deg, #fffdf4, #fff); }
.threat-campaign-item.recurring.active { background: linear-gradient(105deg, #fff4cb, #fffdf4); box-shadow: inset 3px 0 #d6aa29; }
.threat-campaign-item > i { width: 9px; height: 9px; margin-top: 4px; border-radius: 50%; background: #f0ae13; box-shadow: 0 0 0 3px rgba(240,174,19,.1); }
.threat-campaign-item.recurring > i { width: 11px; height: 11px; margin-top: 3px; border: 2px solid #d6aa29; background: #fff; box-shadow: 0 0 0 3px rgba(214,170,41,.16), inset 0 0 0 2px #fff8d8; }
.threat-campaign-item.critical > i { background: var(--red); box-shadow: 0 0 0 3px rgba(226,59,59,.11); }
.threat-campaign-item.high > i { background: var(--orange); box-shadow: 0 0 0 3px rgba(237,125,20,.11); }
.threat-campaign-item.low > i { background: var(--blue); box-shadow: 0 0 0 3px rgba(57,119,214,.11); }
.threat-campaign-copy { min-width: 0; }
.threat-campaign-copy strong, .threat-campaign-copy small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.threat-campaign-copy strong { color: #283141; font-size: 11px; line-height: 1.35; }
.threat-campaign-copy small { margin-top: 5px; color: #758091; font-size: 9px; }
.threat-campaign-tags { display: flex; gap: 5px; margin-top: 8px; flex-wrap: wrap; }
.threat-campaign-tags span { padding: 3px 5px; border-radius: 5px; background: #f2f4f7; color: #778190; font-size: 8px; white-space: nowrap; }
.threat-campaign-tags .threat-campaign-pattern-tag { background: #eaf7f0; color: #25835a; font-weight: 850; }
.threat-campaign-tags .threat-campaign-signal-tag { background: #fff2c8; color: #8e6300; }
.threat-campaign-tags .threat-ml-tag { background: #edf7f2; color: #24845d; }
.threat-campaign-tags .threat-ml-tag.learning { background: #f5f1e7; color: #9a7a28; }
.threat-campaign-item.active .threat-campaign-tags span { background: #fff0b9; color: #8e6300; }
.threat-campaign-item.active.recurring .threat-campaign-tags .threat-campaign-pattern-tag { background: #e1f2e8; color: #24845d; }
.threat-campaign-risk { color: #b56a15; font-size: 9px; font-weight: 850; white-space: nowrap; }
.threat-campaign-item.critical .threat-campaign-risk, .threat-campaign-item.high .threat-campaign-risk { color: var(--red); }
.threat-rail-footer { display: flex; justify-content: space-between; gap: 8px; padding: 11px 13px; border-top: 1px solid #edf0f3; color: #8b95a2; font-size: 9px; }
.threat-rail-footer span:first-child { color: #525d6d; font-weight: 800; }

.threat-path-panel { min-height: 492px; display: flex; flex-direction: column; }
.threat-path-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border-bottom: 1px solid #edf0f3; }
.threat-path-selection { min-width: 0; max-width: 680px; }
.threat-path-label { display: flex; align-items: center; gap: 7px; color: #a16d00; font-size: 9px; font-weight: 850; letter-spacing: .11em; }
.threat-path-label .live-dot { width: 7px; height: 7px; box-shadow: 0 0 0 3px rgba(22,163,106,.1); }
.threat-path-header h2 { margin: 4px 0 0; overflow: hidden; color: #263042; font-size: 14px; letter-spacing: -.02em; text-overflow: ellipsis; white-space: nowrap; }
.threat-path-header p { margin: 3px 0 0; max-width: 650px; overflow: hidden; color: #7b8695; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.threat-path-actions { display: flex; flex: 0 0 auto; align-items: center; justify-content: flex-end; gap: 6px; }
.threat-path-actions .button-secondary { min-height: 30px; padding: 7px 9px; font-size: 9px; }
.threat-path-actions .icon-button { width: 32px; height: 32px; border: 1px solid #e6e9ee; background: #fff; color: #6b7584; font-size: 16px; }
.threat-status-chip { display: inline-flex; align-items: center; height: 28px; padding: 0 9px; border-radius: 7px; background: #eaf7f0; color: var(--green); font-size: 9px; font-weight: 850; }
.threat-status-chip.closed { background: #eef0f3; color: #6d7787; }
.threat-status-chip.alert { background: #ffeaeb; color: var(--red); }
.threat-status-chip.candidate { background: #fff6df; color: #9a6400; }
.threat-graph-viewport { position: relative; flex: 1; min-height: 285px; overflow: hidden; background: radial-gradient(circle at 48% 46%, rgba(255,196,0,.11), transparent 37%), linear-gradient(180deg, #ffffff, #fbfcfd); }
.threat-graph-viewport::before { content: ""; position: absolute; inset: 0; opacity: .6; background-image: linear-gradient(rgba(131,144,159,.045) 1px, transparent 1px), linear-gradient(90deg, rgba(131,144,159,.045) 1px, transparent 1px); background-size: 36px 36px; mask-image: linear-gradient(to bottom, transparent, #000 18%, #000 83%, transparent); pointer-events: none; }
.threat-graph-toolbar { position: absolute; z-index: 5; top: 12px; left: 15px; right: 15px; display: flex; justify-content: flex-end; gap: 13px; color: #7b8694; font-size: 9px; }
.threat-graph-toolbar span { display: inline-flex; align-items: center; gap: 5px; }
.graph-legend-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: #263b59; }
.graph-legend-dot.observed { background: #2b4363; }
.graph-legend-dot.evidence { background: var(--yellow); box-shadow: 0 0 0 3px rgba(255,196,0,.13); }
.graph-legend-line { display: inline-block; width: 16px; border-top: 1.5px dashed #9ba6b3; }
.threat-graph-stage { position: absolute; inset: 45px 15px 15px; min-width: 610px; }
.threat-graph-lines { position: absolute; inset: 35px 0 46px; width: 100%; height: calc(100% - 81px); overflow: hidden; }
.threat-graph-lines line { fill: none; stroke: #ad7b00; stroke-width: 1.7; stroke-linecap: round; marker-end: url(#threatArrow); vector-effect: non-scaling-stroke; opacity: .88; }
.threat-graph-lines line[data-weight="2"] { stroke-width: 2.4; }.threat-graph-lines line[data-weight="3"] { stroke-width: 3.2; }.threat-graph-lines line[data-weight="4"] { stroke-width: 4.4; }.threat-graph-lines line[data-weight="5"] { stroke-width: 6; }
.threat-graph-lines line.inferred { stroke: #99a5b3; stroke-dasharray: 5 5; }
.threat-graph-lines line[data-threat-edge] { cursor: pointer; pointer-events: stroke; }.threat-graph-lines line[data-threat-edge]:focus { outline: none; stroke: #d33f3f; opacity: 1; }
.threat-graph-lines line.recurring { animation: threat-recurrence-pulse 1.8s ease-in-out infinite; }
@keyframes threat-recurrence-pulse { 0%,100% { opacity: .48; } 50% { opacity: 1; } }
.threat-graph-packets { pointer-events: none; }
.threat-graph-packet { fill: #ffe27a; stroke: #9d6a00; stroke-width: 1.5; filter: drop-shadow(0 0 4px rgba(255,196,0,.86)); }
.threat-graph-packet.inferred { fill: #d5dde6; stroke: #718096; filter: drop-shadow(0 0 3px rgba(113,128,150,.55)); }
.threat-graph-packet-core { fill: #fff; opacity: .9; }
.threat-recurring-stage .threat-graph-lines { display: none; }
.threat-recurring-nodes { inset: 0 9%; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-flow: initial; grid-auto-columns: auto; gap: 18%; }
.threat-recurring-route { position: absolute; z-index: 1; top: 50%; left: 17%; right: 17%; height: 78px; padding: 0; border: 0; background: transparent; color: inherit; cursor: pointer; transform: translateY(-50%); }
.threat-recurring-line { position: absolute; left: 0; right: 0; top: 50%; height: 3px; border-radius: 999px; background: linear-gradient(90deg, #d9b340, #f2c94c 50%, #d9b340); box-shadow: 0 0 0 1px rgba(217,179,64,.08), 0 0 14px rgba(217,179,64,.25); }
.threat-recurring-line::after { content: ""; position: absolute; right: -1px; top: 50%; width: 10px; height: 10px; border-top: 2px solid #b88816; border-right: 2px solid #b88816; transform: translateY(-50%) rotate(45deg); }
.threat-recurring-route-label, .threat-recurring-route-hint { position: absolute; left: 50%; display: block; padding: 4px 7px; border-radius: 6px; white-space: nowrap; transform: translateX(-50%); pointer-events: none; }
.threat-recurring-route-label { top: 0; background: #fff5cf; color: #866000; font-size: 9px; font-weight: 850; }
.threat-recurring-route-hint { bottom: 0; color: #9a8a61; font-size: 8px; }
.threat-recurring-packet-layer { position: absolute; inset: 0; pointer-events: none; }
.threat-recurring-packet { position: absolute; top: calc(50% - 5px); left: 0; width: 10px; height: 10px; border: 2px solid #fff; border-radius: 4px; background: #ffc400; box-shadow: 0 0 0 2px rgba(255,196,0,.2), 0 0 12px rgba(255,196,0,.85); animation: threat-recurring-packet-travel 2.2s linear infinite; }
@keyframes threat-recurring-packet-travel { 0% { opacity: 0; transform: translateX(0) scale(.7); } 8% { opacity: 1; } 88% { opacity: 1; } 100% { opacity: 0; transform: translateX(calc(100% - 10px)) scale(1); } }
.threat-graph-nodes { position: absolute; inset: 0; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(112px, 1fr); align-items: center; gap: 7px; }
.threat-node { position: relative; z-index: 2; display: flex; min-width: 0; height: 214px; flex-direction: column; align-items: center; justify-content: center; padding: 23px 6px 9px; border: 0; background: transparent; color: inherit; font: inherit; text-align: center; }
button.threat-node { cursor: pointer; }
.threat-node:focus-visible, .threat-node.focused { outline: 3px solid rgba(214,165,0,.28); outline-offset: -4px; border-radius: 14px; background: rgba(255,248,220,.55); }
.threat-node::before { content: attr(data-step); position: absolute; top: 8px; width: 23px; height: 23px; display: grid; place-items: center; border: 1px solid #b8c1cc; border-radius: 50%; background: #fff; color: #465366; font-size: 10px; font-weight: 850; }
.threat-node-icon { width: 58px; height: 58px; display: grid; place-items: center; border: 1px solid #d6dce4; border-radius: 15px; background: #fff; color: #2a3c57; box-shadow: 0 8px 18px rgba(44,56,72,.08); font-size: 19px; font-weight: 850; }
.threat-node.external .threat-node-icon { border-color: #ef7777; color: #df4040; background: #fff7f7; }
.threat-node.account .threat-node-icon { border-color: #f0c75a; color: #a97600; background: #fffaf0; }
.threat-node.process .threat-node-icon, .threat-node.service .threat-node-icon { border-color: #efbd3a; color: #9b6a00; background: #fffaf0; }
.threat-node.host .threat-node-icon { border-color: #8eabd4; color: #365c92; background: #f5f8fd; }
.threat-node.inferred { opacity: .76; }
.threat-node.inferred .threat-node-icon { border-style: dashed; }
.threat-node b { max-width: 120px; margin-top: 10px; overflow: hidden; color: #2c3747; font-size: 10px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.threat-node small { max-width: 124px; margin-top: 4px; overflow: hidden; color: #7a8593; font-size: 8px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.threat-node-chip { max-width: 124px; margin-top: 8px; padding: 4px 6px; overflow: hidden; border-radius: 5px; background: #f2f4f7; color: #6f7a8a; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.threat-node.external .threat-node-chip { background: #ffeaeb; color: #ba4545; }.threat-node.process .threat-node-chip, .threat-node.service .threat-node-chip { background: #fff2c8; color: #8e6300; }
.threat-graph-empty { position: absolute; inset: 0; display: grid; place-content: center; justify-items: center; padding: 50px 20px; text-align: center; }
.threat-empty-mark { width: 48px; height: 48px; display: grid; place-items: center; border: 1px solid #f0cc67; border-radius: 14px; background: #fffaf0; color: #a97600; font-size: 23px; }
.threat-graph-empty h3 { margin: 13px 0 4px; color: #435063; font-size: 14px; }.threat-graph-empty p { max-width: 350px; margin: 0; color: #8993a0; font-size: 10px; line-height: 1.6; }
.threat-campaign-summary { margin: 0 18px 16px; padding: 14px; border: 1px solid #f0e0ae; border-radius: 12px; background: linear-gradient(135deg, #fffaf0, #fffdf8); color: #656e7d; font-size: 10px; line-height: 1.5; }
.threat-ai-explain { margin: 0 18px 16px; padding: 14px; border: 1px solid #d9c66e; border-radius: 12px; background: linear-gradient(135deg,#fffdf4,#fff); }
.threat-ai-explain[hidden] { display: none; }
.threat-ai-state { margin: 0; color: #755c1c; font-size: 10px; line-height: 1.6; }.threat-ai-state.error { color: #a14d34; }
.threat-ai-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.threat-ai-header h3 { margin: 5px 0 0; color: #313b4a; font-size: 14px; }.threat-ai-header p { max-width: 720px; margin: 6px 0 0; color: #596575; font-size: 10px; line-height: 1.65; }
.threat-ai-risk { flex: 0 0 auto; padding: 9px 11px; border-radius: 9px; background: #171c26; color: #ffd437; font-size: 12px; text-align: center; }.threat-ai-risk small { display: block; margin-top: 3px; color: #d7dce4; font-size: 7px; }
.threat-ai-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 12px; }.threat-ai-tags span, .threat-ai-tags code { padding: 4px 6px; border-radius: 5px; background: #f1f3f6; color: #5d6878; font-size: 8px; }.threat-ai-tags code { background: #fff0bd; color: #795900; }
.threat-ai-actions { margin-top: 13px; padding-top: 11px; border-top: 1px solid #eee5bd; }.threat-ai-actions h4 { margin: 0; color: #56461d; font-size: 9px; }.threat-ai-actions ul { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; margin: 8px 0 0; padding: 0; list-style: none; }.threat-ai-actions li { min-width: 0; padding: 8px; border: 1px solid #ece8d6; border-radius: 8px; background: #fff; }.threat-ai-actions strong, .threat-ai-actions span, .threat-ai-actions small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.threat-ai-actions strong { color: #344052; font-size: 9px; }.threat-ai-actions span { margin-top: 3px; color: #8a6b1d; font-size: 8px; }.threat-ai-actions small { margin-top: 4px; color: #798493; font-size: 8px; }
.threat-ai-footnote { display: block; margin-top: 11px; color: #87909c; font-size: 8px; }
.threat-summary-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.threat-summary-header strong, .threat-top-destinations > strong { display: block; color: #7e5800; font-size: 10px; }
.threat-summary-header small { display: block; margin-top: 3px; color: #9a8a61; font-size: 8px; }
.threat-summary-compression { flex: 0 0 auto; padding: 4px 7px; border-radius: 999px; background: #fff0bd; color: #8a6200; font-size: 8px; font-weight: 800; }
.threat-summary-compression.corroborated { background: #e6f6ee; color: #24845d; }
.threat-summary-compression.candidate { background: #fff0d1; color: #966300; }
.threat-summary-compression.warning { background: #ffeaeb; color: #b44646; }
.threat-summary-story { display: grid; grid-template-columns: 30px minmax(0, 1fr); align-items: center; gap: 9px; margin-top: 10px; padding: 9px 10px; border: 1px solid #eadba8; border-radius: 9px; background: rgba(255,255,255,.7); }
.threat-summary-story-icon { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 8px; background: #fff0bd; color: #8a6200; font-size: 15px; font-weight: 900; }
.threat-summary-story p { margin: 0; color: #5d584a; font-size: 9px; line-height: 1.6; }
.threat-corroboration-banner { display: flex; align-items: center; gap: 10px; margin-top: 12px; padding: 10px 11px; border: 1px solid #cfe9da; border-radius: 10px; background: linear-gradient(105deg, #f2fbf6, #fff); }
.threat-corroboration-banner.candidate { border-color: #f1dfad; background: linear-gradient(105deg, #fffaf0, #fff); }
.threat-corroboration-icon { width: 25px; height: 25px; display: grid; flex: 0 0 auto; place-items: center; border-radius: 8px; background: #dff3e7; color: #24845d; font-size: 13px; font-weight: 900; }
.threat-corroboration-banner.candidate .threat-corroboration-icon { background: #fff0c5; color: #9a6800; }
.threat-corroboration-banner strong, .threat-corroboration-banner small { display: block; }
.threat-corroboration-banner strong { color: #2f6549; font-size: 10px; }
.threat-corroboration-banner small { margin-top: 3px; color: #718474; font-size: 8px; line-height: 1.45; }
.threat-corroboration-banner.candidate strong { color: #7d5c20; }.threat-corroboration-banner.candidate small { color: #8a7b5d; }
.threat-summary-metrics { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 7px; margin-top: 12px; }
.threat-summary-metric { min-width: 0; padding: 8px; border: 1px solid #f1e4bc; border-radius: 8px; background: rgba(255,255,255,.72); }
.threat-summary-metric b, .threat-summary-metric span, .threat-summary-metric small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.threat-summary-metric b { color: #443b26; font-size: 14px; }
.threat-summary-metric span { margin-top: 2px; color: #9a8a61; font-size: 8px; }
.threat-summary-metric small { margin-top: 3px; color: #9da3aa; font-size: 7px; }
.threat-route-strip { display: flex; align-items: center; gap: 6px; margin-top: 12px; overflow-x: auto; padding-bottom: 2px; }
.threat-route-pill { min-width: 0; flex: 1 1 0; padding: 7px 8px; border: 1px solid #eadfbf; border-radius: 8px; background: #fff; }
.threat-route-pill small, .threat-route-pill b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.threat-route-pill small { color: #9a8a61; font-size: 8px; }
.threat-route-pill b { margin-top: 3px; color: #4b5565; font-size: 9px; }
.threat-route-pill.source { border-color: #efb0b0; background: #fff8f8; }.threat-route-pill.host { border-color: #cbd9ea; background: #f8fbff; }.threat-route-pill.destination { border-color: #f1d27b; background: #fffdf4; }
.threat-route-arrow { flex: 0 0 auto; color: #ad7b00; font-size: 15px; font-weight: 700; }
.threat-top-destinations { margin-top: 13px; }
.threat-destination-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px 12px; margin-top: 7px; }
.threat-destination-row { display: flex; justify-content: space-between; gap: 8px; min-width: 0; padding: 5px 0; border-bottom: 1px solid #f1e7cd; }
.threat-destination-row code { overflow: hidden; color: #58677a; font: 8px ui-monospace, SFMono-Regular, Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; }
.threat-destination-row span { flex: 0 0 auto; color: #9a8a61; font-size: 8px; }
.threat-summary-muted { color: #9a8a61; font-size: 9px; }
.threat-summary-note { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px; margin-top: 11px; padding-top: 9px; border-top: 1px solid #f1e7cd; }
.threat-summary-note > span { color: #9a8a61; font-size: 8px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.threat-summary-note p { margin: 0; color: #77715f; font-size: 9px; line-height: 1.55; }

.threat-inspector { min-height: 610px; }
.threat-inspector-header { align-items: center; }
.threat-inspector-header .severity-badge { max-width: 82px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.threat-inspector-body { padding: 14px 15px; }
.threat-inspector-empty { display: grid; min-height: 240px; place-items: center; color: #8b95a3; font-size: 10px; line-height: 1.6; text-align: center; }
.threat-fact-list { display: grid; gap: 0; margin: 0; }
.threat-fact-list > div { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid #eef0f3; }
.threat-fact-list dt { color: #8b95a3; font-size: 9px; }.threat-fact-list dd { max-width: 150px; margin: 0; overflow: hidden; color: #344052; font-size: 9px; font-weight: 800; text-align: right; text-overflow: ellipsis; white-space: nowrap; }
.threat-inspector-section { margin-top: 18px; }.threat-inspector-section h3 { margin: 0 0 8px; color: #3b4758; font-size: 11px; }
.threat-indicator-list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }.threat-indicator-list li { display: flex; align-items: center; gap: 8px; min-width: 0; padding: 7px 8px; border: 1px solid #edf0f3; border-radius: 8px; background: #fbfcfd; }.threat-indicator-list i { width: 23px; height: 23px; display: grid; flex: 0 0 auto; place-items: center; border-radius: 7px; background: #f0f4fa; color: #55739e; font-size: 9px; font-style: normal; font-weight: 900; }.threat-indicator-list span { overflow: hidden; color: #556174; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }.threat-indicator-list small { margin-left: auto; color: #9aa3ae; font-size: 8px; white-space: nowrap; }
.threat-tag-list { display: flex; flex-wrap: wrap; gap: 5px; }.threat-tag-list span { padding: 4px 6px; border-radius: 5px; background: #f2f4f7; color: #6d7888; font-size: 8px; }
.threat-ml-section { padding: 10px; border: 1px solid #e6f1eb; border-radius: 9px; background: #fbfefc; }
.threat-ml-section h3 { color: #287b58; }
.threat-ml-signals { display: block; margin-top: 9px; color: #6e8c7c; font-size: 8px; line-height: 1.5; }
.threat-ml-trend-section { padding-top: 5px; }
.threat-ml-trend-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.threat-ml-trend-heading h3 { margin: 0; }
.threat-ml-trend-heading small { color: #9aa3ae; font-size: 8px; }
.threat-ml-trend { display: flex; align-items: end; gap: 4px; height: 52px; margin-top: 9px; padding: 6px 5px 4px; border-bottom: 1px solid #dcebe3; background: linear-gradient(180deg, rgba(43,132,93,.025), rgba(43,132,93,.09)); }
.threat-ml-bar { min-width: 0; flex: 1 1 0; border-radius: 3px 3px 1px 1px; background: #8bc8a9; opacity: .9; }
.threat-ml-bar.elevated { background: #e7b84e; }
.threat-ml-bar.alert { background: #e66a5f; }
.threat-ml-level-1 { height: 10%; }.threat-ml-level-2 { height: 20%; }.threat-ml-level-3 { height: 30%; }.threat-ml-level-4 { height: 40%; }.threat-ml-level-5 { height: 50%; }
.threat-ml-level-6 { height: 60%; }.threat-ml-level-7 { height: 70%; }.threat-ml-level-8 { height: 80%; }.threat-ml-level-9 { height: 90%; }.threat-ml-level-10 { height: 100%; }
.threat-ml-trend-footer { display: flex; justify-content: space-between; gap: 8px; margin-top: 5px; color: #789284; font-size: 8px; }

.threat-timeline-panel { margin-top: 13px; padding: 0; overflow: hidden; }
.threat-timeline-header { align-items: center; }.threat-timeline-header > span { color: #8993a0; font-size: 9px; }
.threat-page-actions { display: flex; align-items: flex-end; flex-direction: column; gap: 7px; color: #7a8594; font-size: 9px; text-align: right; }
.threat-page-more { min-height: 30px; padding: 5px 9px; font-size: 9px; white-space: nowrap; }
.threat-time-scrubber { display: grid; width: min(270px, 32vw); gap: 4px; margin-left: auto; }.threat-time-scrubber label { display: flex; justify-content: space-between; gap: 8px; color: #7d8795; font-size: 8px; }.threat-time-scrubber output { color: #8c6706; font-weight: 850; }.threat-time-scrubber input { width: 100%; accent-color: #d4a512; }
.threat-timeline-explainer { display: flex; align-items: flex-start; gap: 9px; padding: 10px 15px; border-bottom: 1px solid #f1e7cd; background: #fffaf0; color: #7c7057; font-size: 9px; line-height: 1.45; }
.threat-timeline-explainer strong { flex: 0 0 auto; color: #805d08; font-size: 9px; }
.threat-timeline-explainer span { min-width: 0; }
.threat-timeline { position: relative; display: flex; min-height: 168px; align-items: flex-start; gap: 0; padding: 28px 22px 14px; overflow-x: auto; background: linear-gradient(180deg, #fff, #fbfcfd); }
.threat-timeline::before { content: ""; position: absolute; left: 45px; right: 45px; top: 48px; height: 2px; background: #e1b52f; }
.threat-timeline-event { position: relative; z-index: 1; display: grid; flex: 1 0 126px; min-width: 126px; justify-items: center; gap: 8px; text-align: center; content-visibility: auto; contain-intrinsic-size: 126px 104px; }
.threat-timeline-event + .threat-timeline-event { margin-left: 6px; }.threat-timeline-point { width: 15px; height: 15px; border: 3px solid #fff; border-radius: 50%; background: #f0ae13; box-shadow: 0 0 0 2px #dfb33b; }.threat-timeline-event.high .threat-timeline-point { background: var(--red); box-shadow: 0 0 0 2px #ef9191; }.threat-timeline-event-meta { display: flex; align-items: center; gap: 4px; max-width: 130px; }.threat-timeline-hop { padding: 3px 5px; border-radius: 4px; background: #f2f4f7; color: #657184; font-size: 7px; font-weight: 800; white-space: nowrap; }.threat-timeline-event time { color: #6f7b8b; font-size: 8px; }.threat-timeline-event strong { max-width: 130px; overflow: hidden; color: #384457; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }.threat-timeline-event small { max-width: 130px; overflow: hidden; color: #9099a5; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }.threat-timeline-reason { color: #a27819; font-size: 8px; white-space: nowrap; }.threat-timeline-more { align-self: center; flex: 0 0 auto; margin-left: 8px; padding: 6px 8px; border: 1px dashed #e0bd57; border-radius: 7px; color: #96742c; font-size: 8px; white-space: nowrap; }.threat-timeline-empty { width: 100%; align-self: center; color: #8d97a5; font-size: 10px; text-align: center; }

.threat-contacts-panel { margin-top: 13px; padding: 0; overflow: hidden; }
.threat-contacts-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 15px 17px 13px; border-bottom: 1px solid #edf0f3; }
.threat-contacts-header h2 { margin: 4px 0 0; color: #273142; font-size: 14px; }
.threat-contacts-header > span { color: #7a8594; font-size: 9px; }
.threat-contacts { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; padding: 13px; }
.threat-contact-row { min-width: 0; padding: 11px; border: 1px solid #e5e9ee; border-radius: 10px; background: #fbfcfd; color: inherit; font: inherit; text-align: left; cursor: pointer; content-visibility: auto; contain-intrinsic-size: 260px 88px; }
.threat-contact-row:hover, .threat-contact-row:focus-visible { border-color: #d8b54b; background: #fffdf5; outline: 3px solid rgba(216,181,75,.16); }
.threat-contact-route strong, .threat-contact-route small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.threat-contact-route strong { color: #364254; font-size: 10px; }
.threat-contact-route small { margin-top: 4px; color: #7c8795; font-size: 8px; }
.threat-contact-stats { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 5px; margin-top: 9px; }
.threat-contact-stats span { min-width: 0; padding: 6px; border-radius: 7px; background: #fff; text-align: center; }
.threat-contact-stats b, .threat-contact-stats small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.threat-contact-stats b { color: #9a7006; font-size: 10px; }.threat-contact-stats small { margin-top: 2px; color: #8993a0; font-size: 7px; }
.threat-contact-more { grid-column: 1 / -1; margin: 2px 0 0; padding: 8px; border: 1px dashed #ddc270; border-radius: 8px; color: #856a25; font-size: 8px; text-align: center; }
.threat-edge-drawer { position: fixed; z-index: 70; top: 0; right: 0; width: min(430px, 94vw); height: 100dvh; overflow-y: auto; padding: 0 18px 20px; border: 0; border-left: 1px solid #e0e4e9; background: #fff; box-shadow: -18px 0 46px rgba(22,31,44,.19); }
.threat-edge-drawer[hidden] { display: none; }
.threat-edge-drawer-head { position: sticky; z-index: 2; top: 0; display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 18px 0 14px; border-bottom: 1px solid #eceff2; background: #fff; }
.threat-edge-drawer-head h2 { max-width: 330px; margin: 4px 0 0; overflow: hidden; color: #293446; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; }
.threat-edge-drawer-head .icon-button { width: 34px; height: 34px; border: 1px solid #e1e5ea; background: #fff; }
.threat-edge-body { padding-top: 10px; }
.threat-edge-facts { margin: 0; }
.threat-edge-facts > div { display: flex; justify-content: space-between; gap: 18px; padding: 10px 0; border-bottom: 1px solid #edf0f3; }
.threat-edge-facts dt { color: #7d8795; font-size: 9px; }.threat-edge-facts dd { max-width: 240px; margin: 0; color: #354154; font-size: 9px; font-weight: 800; text-align: right; overflow-wrap: anywhere; }
.threat-edge-evidence { margin-top: 18px; }.threat-edge-evidence h3 { margin: 0; color: #39465a; font-size: 11px; }.threat-edge-evidence ul { display: grid; gap: 6px; margin: 9px 0 0; padding: 0; list-style: none; }.threat-edge-evidence li, .threat-edge-evidence p { padding: 8px; border: 1px solid #ece8d8; border-radius: 8px; background: #fffdf7; color: #75683e; font: 8px ui-monospace, SFMono-Regular, Consolas, monospace; overflow-wrap: anywhere; }
.threat-edge-actions { position: sticky; bottom: 0; display: flex; justify-content: flex-end; margin-top: 18px; padding: 13px 0 4px; border-top: 1px solid #eceff2; background: #fff; }

@media (max-width: 1250px) {
  .threat-campaign-layout { grid-template-columns: minmax(205px, 224px) minmax(420px, 1fr) minmax(210px, 235px); }
  .threat-heading-actions .compact-field:first-child { display: none; }
  .threat-path-header { align-items: flex-start; flex-wrap: wrap; }.threat-path-actions { width: 100%; justify-content: flex-start; }
  .threat-node { padding-inline: 2px; }.threat-node-icon { width: 49px; height: 49px; font-size: 16px; }.threat-node b { font-size: 9px; }.threat-node small, .threat-node-chip { max-width: 95px; }
}
@media (max-width: 1030px) {
  .threat-campaign-layout { grid-template-columns: 215px minmax(0, 1fr); }
  .threat-inspector { grid-column: 1 / -1; min-height: auto; }.threat-inspector-body { min-height: 0; }.threat-inspector-empty { min-height: 90px; }.threat-inspector-body:not(:has(.threat-inspector-empty)) { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 18px; }.threat-inspector-body:not(:has(.threat-inspector-empty)) .threat-inspector-section { margin-top: 0; }
}
@media (max-width: 760px) {
  .threat-campaign-heading { display: grid; gap: 13px; }.threat-heading-actions { justify-content: flex-start; }.threat-heading-actions .compact-field { min-width: 130px; }.threat-campaign-layout { display: flex; flex-direction: column; }.threat-campaign-rail { min-height: 0; max-height: 335px; }.threat-campaign-list { max-height: 235px; }.threat-path-panel { min-height: 470px; }.threat-inspector { min-height: 0; }.threat-inspector-body:not(:has(.threat-inspector-empty)) { display: block; }.threat-graph-viewport { overflow-x: auto; }.threat-graph-stage { min-width: 680px; }.threat-graph-toolbar { justify-content: flex-start; left: 14px; }.threat-path-header { padding-inline: 14px; }.threat-path-header h2 { font-size: 14px; }.threat-path-actions .icon-button { display: none; }.threat-timeline { padding-inline: 15px; }.threat-timeline::before { left: 28px; right: 28px; }
  .threat-recurring-route { left: 16%; right: 16%; }.threat-recurring-nodes { inset-inline: 5%; gap: 8%; }
  .threat-timeline-explainer { display: grid; gap: 3px; }
  .threat-timeline-header { flex-wrap: wrap; }.threat-time-scrubber { order: 3; width: 100%; }
  .threat-contacts { grid-template-columns: 1fr; }
  .threat-ai-header { display: grid; }.threat-ai-risk { width: fit-content; }.threat-ai-actions ul { grid-template-columns: 1fr; }
}
@media (max-width: 520px) {
  .threat-summary-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .threat-summary-metric:nth-child(4), .threat-summary-metric:nth-child(5) { display: none; }
  .threat-destination-list { grid-template-columns: 1fr; }
  .threat-summary-note { grid-template-columns: 1fr; gap: 4px; }
  .threat-contact-stats { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (prefers-reduced-motion: reduce) { .threat-campaign-item, .threat-node-icon, .threat-timeline-point { transition: none !important; }.threat-graph-lines line.recurring { animation: none; }.threat-graph-packets, .threat-recurring-packet-layer { display: none; } }

/* Decision-first Campaign Investigator */
.threat-investigation-layout { grid-template-columns: minmax(215px, 245px) minmax(620px, 1fr) minmax(300px, 350px); }
.threat-investigation-main { min-width: 0; display: grid; gap: 10px; }
.threat-decision-card { min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 18px; padding: 15px 17px; }
.threat-decision-copy { min-width: 0; }
.threat-decision-badges { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
.threat-decision-copy .threat-path-label { margin-bottom: 5px; }
.threat-decision-copy h2 { margin: 0; color: #202b3b; font-size: 18px; letter-spacing: -.025em; }
.threat-decision-summary { max-width: 900px; margin: 7px 0 0; color: #465367; font-size: 11px; line-height: 1.65; }
.threat-decision-copy #threatPathMeta { margin: 5px 0 0; color: #87919f; font-size: 9px; line-height: 1.5; }
.threat-risk-badge { display: inline-flex; min-height: 25px; align-items: center; padding: 0 8px; border-radius: 7px; background: #fff5cf; color: #8a6200; font-size: 8px; font-weight: 850; }
.threat-decision-actions { max-width: 430px; display: flex; justify-content: flex-end; gap: 6px; flex-wrap: wrap; }
.threat-decision-actions button { min-height: 31px; padding: 7px 9px; font-size: 9px; white-space: nowrap; }
.threat-decision-actions button:disabled { opacity: .48; cursor: not-allowed; }

.threat-investigation-main .threat-path-panel { min-height: 0; height: 310px; }
.threat-path-compact-header { min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 13px; border-bottom: 1px solid #edf0f3; }
.threat-path-compact-header h3 { margin: 3px 0 0; color: #2f3a4b; font-size: 12px; }
.threat-path-compact-header .threat-path-actions { flex-wrap: wrap; color: #788494; font-size: 8px; }
.threat-path-compact-header .threat-path-actions > span { display: inline-flex; align-items: center; gap: 4px; }
.threat-investigation-main .threat-graph-viewport { min-height: 260px; overflow-x: auto; overflow-y: hidden; }
.threat-investigation-main .threat-graph-stage { inset: 0 12px 4px; min-width: 760px; height: 250px; }
.threat-investigation-main .threat-graph-lines { inset: 0; width: 100%; height: 250px; }
.threat-investigation-main .threat-graph-nodes { height: 250px; grid-auto-columns: minmax(120px, 1fr); }
.threat-investigation-main .threat-node { height: 240px; justify-content: center; padding: 18px 5px 3px; }
.threat-investigation-main .threat-node::before { display: none; }
.threat-node-stage { max-width: 120px; margin-bottom: 8px; overflow: hidden; color: #8d680e; font-size: 7px; font-weight: 900; letter-spacing: .08em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.threat-edge-label { fill: #7e6a35; font-size: 8px; font-weight: 750; text-anchor: middle; paint-order: stroke; stroke: rgba(255,255,255,.95); stroke-width: 4px; pointer-events: none; }
.threat-investigation-main .threat-recurring-route { top: 53%; }

.threat-mesh-canvas { position: absolute; z-index: 3; inset: 0; display: none; width: 100%; height: 250px; outline: none; cursor: grab; touch-action: none; }
.threat-mesh-canvas.dragging { cursor: grabbing; }
.threat-graph-stage.mesh-active { inset: 0; min-width: 0; }
.threat-graph-stage.mesh-active .threat-mesh-canvas { display: block; }
.threat-graph-stage.mesh-active .threat-graph-lines,
.threat-graph-stage.mesh-active .threat-graph-nodes,
.threat-graph-stage.mesh-active .threat-recurring-route { display: none; }
.threat-mesh-hint { position: absolute; z-index: 4; right: 12px; bottom: 8px; display: none; align-items: center; gap: 6px; padding: 5px 8px; border: 1px solid rgba(202,174,85,.42); border-radius: 999px; background: rgba(255,255,255,.82); color: #778292; font-size: 7px; pointer-events: none; backdrop-filter: blur(8px); }
.threat-mesh-hint span { color: #8a6506; font-weight: 900; letter-spacing: .1em; }
.threat-graph-stage.mesh-active .threat-mesh-hint { display: flex; }
.threat-mesh-tooltip { position: fixed; z-index: 90; max-width: 260px; padding: 8px 10px; border: 1px solid rgba(224,183,58,.58); border-radius: 9px; background: rgba(28,36,49,.95); color: #fff; box-shadow: 0 12px 30px rgba(19,27,39,.25); pointer-events: none; }
.threat-mesh-tooltip[hidden] { display: none; }
.threat-mesh-tooltip strong, .threat-mesh-tooltip span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.threat-mesh-tooltip strong { font-size: 9px; }.threat-mesh-tooltip span { margin-top: 3px; color: #e6d184; font-size: 7px; }

/* The simplified path is the operator's first read: keep the mesh visual,
   but expose the bounded stage facts without requiring a node click. */
.threat-investigation-main .threat-path-panel { height: auto; min-height: 0; }
.threat-path-compact-header { min-height: 62px; padding: 12px 16px; }
.threat-path-compact-header .section-kicker { font-size: 10px; }
.threat-path-compact-header h3 { margin-top: 4px; font-size: 16px; }
.threat-path-compact-header .threat-path-actions { font-size: 10px; }
.threat-path-compact-header .threat-path-actions .button-secondary { min-height: 34px; padding: 8px 10px; font-size: 10px; }
.threat-investigation-main .threat-graph-viewport { min-height: 312px; }
.threat-investigation-main .threat-graph-stage { height: 300px; }
.threat-investigation-main .threat-graph-lines { height: 300px; }
.threat-investigation-main .threat-graph-nodes { height: 300px; }
.threat-investigation-main .threat-node { height: 288px; }
.threat-mesh-canvas { height: 300px; }
.threat-mesh-hint { right: 16px; bottom: 12px; padding: 7px 10px; font-size: 9px; }
.threat-mesh-tooltip { max-width: 340px; padding: 11px 13px; }
.threat-mesh-tooltip strong { font-size: 12px; }.threat-mesh-tooltip span { margin-top: 4px; font-size: 9px; }
.threat-path-details { padding: 13px 14px 15px; border-top: 1px solid #e8edf2; background: linear-gradient(180deg, #fbfcfd, #fff); }
.threat-path-details-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.threat-path-details-heading strong, .threat-path-details-heading small { display: block; }
.threat-path-details-heading strong { color: #344052; font-size: 13px; }
.threat-path-details-heading small { margin-top: 3px; color: #7c8796; font-size: 10px; }
.threat-path-details-total { flex: 0 0 auto; padding: 6px 9px; border: 1px solid #e9d58c; border-radius: 999px; background: #fffaf0; color: #8a6506; font-size: 10px; font-weight: 850; white-space: nowrap; }
.threat-path-details-grid { display: grid; grid-template-columns: repeat(6, minmax(145px, 1fr)); gap: 8px; margin-top: 11px; overflow-x: auto; padding-bottom: 2px; }
.threat-path-stage-card { min-width: 145px; min-height: 128px; padding: 10px; border: 1px solid #e4e9ef; border-top: 3px solid #86a4cc; border-radius: 10px; background: #fff; box-shadow: 0 4px 12px rgba(41,55,73,.04); }
.threat-path-stage-card.external { border-top-color: #ed7777; background: #fffafa; }.threat-path-stage-card.account, .threat-path-stage-card.process, .threat-path-stage-card.service { border-top-color: #e2ad25; background: #fffdf6; }.threat-path-stage-card.inferred { border-top-style: dashed; opacity: .82; }
.threat-path-stage-top { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.threat-path-stage-number { color: #657387; font-size: 10px; font-weight: 900; letter-spacing: .08em; }
.threat-path-stage-type { max-width: 105px; overflow: hidden; color: #967116; font-size: 9px; font-weight: 900; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.threat-path-stage-name, .threat-path-stage-secondary { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.threat-path-stage-name { margin-top: 9px; color: #283548; font-size: 13px; }
.threat-path-stage-secondary { margin-top: 3px; color: #7a8695; font-size: 10px; }
.threat-path-stage-facts { display: flex; gap: 6px; margin-top: 8px; color: #566477; font-size: 10px; font-weight: 800; }
.threat-path-stage-facts span { padding: 3px 5px; border-radius: 5px; background: #f1f4f7; white-space: nowrap; }
.threat-path-stage-link { display: grid; gap: 2px; margin-top: 9px; padding-top: 7px; border-top: 1px solid #edf0f3; }
.threat-path-stage-link b { overflow: hidden; color: #8a6506; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.threat-path-stage-link span, .threat-path-stage-link small { overflow: hidden; color: #687587; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.threat-path-stage-link small { color: #9aa3ae; }

.threat-kpi-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 7px; }
.threat-kpi-grid .card { min-width: 0; padding: 10px 11px; }
.threat-kpi-grid span, .threat-kpi-grid strong, .threat-kpi-grid small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.threat-kpi-grid span { color: #7d8898; font-size: 7px; font-weight: 850; letter-spacing: .07em; }
.threat-kpi-grid strong { margin-top: 4px; color: #2b3546; font-size: 18px; }
.threat-kpi-grid small { margin-top: 2px; color: #9aa2ad; font-size: 7px; }

.threat-workbench { min-height: 300px; padding: 0; overflow: hidden; }
.threat-tabs { display: flex; gap: 2px; padding: 7px 9px 0; overflow-x: auto; border-bottom: 1px solid #e9edf1; background: #fbfcfd; }
.threat-tabs button { min-height: 34px; flex: 0 0 auto; padding: 7px 11px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: #697587; font-size: 9px; font-weight: 800; cursor: pointer; }
.threat-tabs button.active { border-bottom-color: #e0ad08; color: #805c00; background: #fffaf0; }
.threat-tab-panels > section { max-height: 490px; overflow: auto; }
.threat-tab-panels > section[hidden] { display: none; }
.threat-tab-panels .threat-campaign-summary { margin: 12px; }
.threat-overview-facts { padding: 0 13px 13px; }
.threat-overview-facts .threat-fact-list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
.threat-overview-facts .threat-fact-list > div { min-width: 0; display: grid; gap: 3px; padding: 8px; border: 1px solid #edf0f3; border-radius: 8px; }
.threat-overview-facts .threat-fact-list dd { max-width: none; text-align: left; }
.threat-overview-facts .threat-inspector-section { margin: 12px 0 0; }
.threat-tab-empty { margin: 0; padding: 24px; color: #8993a0; font-size: 10px; text-align: center; }
.threat-workbench .threat-timeline-header, .threat-workbench .threat-contacts-header { position: sticky; z-index: 3; top: 0; background: #fff; }
.threat-workbench .threat-timeline { min-height: 200px; }
.threat-workbench .threat-contacts { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.threat-evidence-list { display: grid; gap: 6px; padding: 12px; }
.threat-evidence-row { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 3px 12px; padding: 9px 10px; border: 1px solid #e6eaf0; border-radius: 9px; background: #fff; color: inherit; text-align: left; cursor: pointer; }
.threat-evidence-row:hover { border-color: #dfb841; background: #fffdf7; }
.threat-evidence-row strong { overflow: hidden; color: #364254; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.threat-evidence-row code { grid-row: 2; overflow: hidden; color: #8a680d; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.threat-evidence-row small { grid-column: 2; grid-row: 1 / 3; align-self: center; color: #8993a0; font-size: 8px; white-space: nowrap; }
.threat-entity-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; padding: 12px; }
.threat-entity-card { min-width: 0; padding: 11px; border: 1px solid #e5eaf0; border-radius: 10px; background: #fbfcfd; }
.threat-entity-card > * { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.threat-entity-type { color: #946900; font-size: 7px; font-weight: 850; text-transform: uppercase; }
.threat-entity-card strong { margin-top: 5px; color: #2f3a4b; font-size: 10px; }.threat-entity-card small { margin-top: 3px; color: #778394; font-size: 8px; }.threat-entity-card p { margin: 8px 0 0; color: #8b95a3; font-size: 8px; }
.threat-safe-note { margin: 12px; padding: 10px; border: 1px solid #dfe8f2; border-radius: 9px; background: #f7faff; color: #68788b; font-size: 9px; line-height: 1.55; }
.threat-raw-events { display: grid; gap: 1px; padding: 0 12px 12px; }
.threat-raw-event { min-width: 0; display: grid; grid-template-columns: 145px minmax(0, 1fr) minmax(120px, .7fr); gap: 10px; padding: 8px; border-bottom: 1px solid #edf0f3; font-size: 8px; }
.threat-raw-event time { color: #788596; }.threat-raw-event strong { overflow: hidden; color: #354154; text-overflow: ellipsis; white-space: nowrap; }.threat-raw-event code { overflow: hidden; color: #8e690d; text-overflow: ellipsis; white-space: nowrap; }
.threat-ai-activity { display: grid; gap: 1px; padding: 12px; }
.threat-ai-trace-row { display: grid; grid-template-columns: 30px minmax(140px, 1fr) 130px 75px 80px 55px; align-items: center; gap: 8px; padding: 9px; border-bottom: 1px solid #edf0f3; color: #687587; font-size: 8px; }
.threat-ai-trace-row strong { color: #334052; }.threat-ai-trace-row .status { padding: 3px 5px; border-radius: 5px; background: #e8f6ef; color: #247c56; text-align: center; }.threat-ai-trace-row .status.failed { background: #ffeaeb; color: #b14646; }

.threat-proposal-list { margin: 0 13px 13px; border: 1px solid #eadcae; border-radius: 10px; overflow: hidden; }
.threat-proposal-header { display: flex; justify-content: space-between; gap: 12px; padding: 9px 10px; background: #fff9e7; color: #795a0b; font-size: 8px; font-weight: 850; letter-spacing: .06em; }
.threat-proposal-row { position: relative; padding: 10px; border-top: 1px solid #eee6cc; }
.threat-proposal-row strong { color: #354052; font-size: 10px; }.threat-proposal-row p { margin: 4px 0; color: #5f6875; font-size: 9px; line-height: 1.5; }.threat-proposal-row small { color: #8d96a1; font-size: 8px; }
.threat-proposal-actions { display: flex; gap: 6px; margin-top: 8px; }.threat-proposal-actions button { min-height: 28px; padding: 5px 9px; font-size: 8px; }

.threat-ai-investigator { position: sticky; top: 10px; max-height: calc(100dvh - 95px); min-height: 610px; }
.threat-ai-investigator .threat-inspector-header { position: sticky; z-index: 4; top: 0; background: #fff; }
.threat-ai-investigator .threat-inspector-body { max-height: calc(100dvh - 150px); overflow: auto; padding: 11px; }
.threat-ai-confidence { padding: 5px 7px; border-radius: 7px; background: #edf8f3; color: #19734d; font-size: 8px; font-weight: 850; white-space: nowrap; }
.threat-ai-scope-note { padding: 9px; border: 1px solid #e8d486; border-radius: 9px; background: #fffaf0; }
.threat-ai-scope-note strong { color: #7f5e08; font-size: 9px; }.threat-ai-scope-note p { margin: 4px 0 0; color: #7e7357; font-size: 8px; line-height: 1.55; }
.threat-ai-loading { margin-top: 8px; padding: 10px; border-radius: 8px; background: linear-gradient(100deg, #f7f8fa, #fff8d9, #f7f8fa); background-size: 220% 100%; color: #7a672f; font-size: 8px; animation: threat-ai-loading 1.8s ease-in-out infinite; }
@keyframes threat-ai-loading { from { background-position: 100% 0; } to { background-position: -100% 0; } }
.threat-ai-summary-block, .threat-ai-panel-section { margin-top: 9px; padding-top: 9px; border-top: 1px solid #eceff2; }
.threat-ai-summary-block h3, .threat-ai-panel-section h3 { margin: 5px 0 7px; color: #303b4d; font-size: 10px; }
.threat-ai-summary-block > p { margin: 0; color: #4f5a6a; font-size: 9px; line-height: 1.62; }
.threat-ai-mode { display: inline-flex; padding: 4px 6px; border-radius: 6px; background: #e7f6ee; color: #207a53; font-size: 7px; font-weight: 850; }.threat-ai-mode.fallback { background: #fff0c7; color: #896200; }
.threat-ai-meters { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; margin-top: 8px; }
.threat-ai-meters span { min-width: 0; padding: 7px; border: 1px solid #e8ecf0; border-radius: 7px; background: #fafbfc; }.threat-ai-meters small, .threat-ai-meters strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.threat-ai-meters small { color: #8b95a2; font-size: 7px; }.threat-ai-meters strong { margin-top: 3px; color: #374355; font-size: 9px; }
.threat-ai-finding { padding: 7px 8px; border-left: 2px solid #6fb28f; background: #f8fcfa; }.threat-ai-finding + .threat-ai-finding { margin-top: 5px; }.threat-ai-finding p { margin: 0; color: #485565; font-size: 8px; line-height: 1.55; }.threat-ai-finding small { display: block; margin-top: 3px; color: #81908a; font-size: 7px; }
.threat-ai-panel-section.hypothesis .threat-ai-finding { border-left-color: #e0b23c; background: #fffdf6; }.threat-ai-panel-section.missing .threat-ai-finding { border-left-color: #d67c68; background: #fff9f7; }.threat-ai-panel-section.reason .threat-ai-finding { border-left-color: #6f8eb9; background: #f8faff; }
.threat-ai-tags { margin-top: 0; }
.threat-ai-next-action { padding: 8px; border: 1px solid #e5e9ee; border-radius: 8px; }.threat-ai-next-action + .threat-ai-next-action { margin-top: 6px; }.threat-ai-next-action strong { color: #354154; font-size: 9px; }.threat-ai-next-action p { margin: 4px 0; color: #687484; font-size: 8px; line-height: 1.45; }.threat-ai-next-action small { display: block; color: #8f98a4; font-size: 7px; }.threat-ai-next-action button { min-height: 27px; margin-top: 7px; padding: 5px 8px; font-size: 8px; }
.threat-quick-questions { display: flex; flex-wrap: wrap; gap: 5px; }.threat-quick-questions button { padding: 5px 7px; border: 1px solid #dde3ea; border-radius: 7px; background: #fff; color: #5d6878; font-size: 7px; cursor: pointer; }.threat-quick-questions button:hover { border-color: #dfb943; color: #805d07; }
.threat-question-form { display: grid; gap: 6px; margin-top: 8px; }.threat-question-form textarea { width: 100%; resize: vertical; padding: 8px; border: 1px solid #dfe4ea; border-radius: 8px; color: #354154; font: inherit; font-size: 9px; }.threat-question-form button { justify-self: end; min-height: 30px; padding: 6px 10px; font-size: 8px; }

@media (max-width: 1450px) {
  .threat-investigation-layout { grid-template-columns: 215px minmax(560px, 1fr) 300px; }
  .threat-decision-card { grid-template-columns: 1fr; }.threat-decision-actions { max-width: none; justify-content: flex-start; }
}
@media (max-width: 1120px) {
  .threat-investigation-layout { grid-template-columns: 215px minmax(0, 1fr); }
  .threat-ai-investigator { position: static; grid-column: 1 / -1; max-height: none; min-height: 0; }.threat-ai-investigator .threat-inspector-body { max-height: 650px; }
  .threat-kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .threat-investigation-layout { display: flex; }.threat-investigation-main { width: 100%; }.threat-decision-card { padding: 13px; }
  .threat-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }.threat-overview-facts .threat-fact-list, .threat-entity-grid { grid-template-columns: 1fr 1fr; }.threat-workbench .threat-contacts { grid-template-columns: 1fr; }
  .threat-ai-trace-row { grid-template-columns: 26px minmax(120px, 1fr) 70px; }.threat-ai-trace-row span:nth-of-type(1), .threat-ai-trace-row span:nth-of-type(2), .threat-ai-trace-row small { display: none; }
}
@media (prefers-reduced-motion: reduce) { .threat-ai-loading { animation: none; } }
