/* 소스 스캔 (sourcescan, pino-agent srcscan) styles. Loaded by index.html.
 * Build on tokens.css and components.css; every selector is prefixed with
 * .sourcescan- so nothing here can restyle another domain's screens. */

/* Severity colours: one palette for chips, counters and tiles. */
.sourcescan-sev-critical { --sourcescan-c: var(--signal-crit); --sourcescan-tint: var(--tint-crit); }
.sourcescan-sev-high { --sourcescan-c: var(--signal-crit); --sourcescan-tint: var(--tint-crit); }
.sourcescan-sev-medium { --sourcescan-c: var(--signal-warn); --sourcescan-tint: var(--tint-warn); }
.sourcescan-sev-low { --sourcescan-c: var(--signal-info); --sourcescan-tint: var(--tint-info); }
.sourcescan-sev-info { --sourcescan-c: var(--signal-idle); --sourcescan-tint: var(--surface-high); }

/* Summary tiles (open by severity). */
.sourcescan-tiles { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--gutter, var(--sp-md)); }
@media (max-width: 900px) { .sourcescan-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.sourcescan-tile {
  display: flex; flex-direction: column; align-items: flex-start; gap: var(--sp-xs);
  padding: var(--sp-md); text-align: left; cursor: pointer; font: inherit; color: inherit;
  background: color-mix(in srgb, var(--sourcescan-c) 6%, var(--glass-1));
  border: 1px solid color-mix(in srgb, var(--sourcescan-c) 40%, transparent);
  border-radius: var(--r-lg); transition: background var(--t-base, 150ms);
}
.sourcescan-tile:hover { background: var(--sourcescan-tint); }
.sourcescan-tile .stat-value { color: var(--sourcescan-c); }
.sourcescan-sev-critical.sourcescan-tile .stat-value,
.sourcescan-sev-high.sourcescan-tile .stat-value { color: var(--signal-crit-text); }

.sourcescan-statuscount {
  display: inline-flex; align-items: center; gap: var(--sp-xs); padding: 2px 4px;
  background: none; border: 0; color: inherit; font: inherit; cursor: pointer; border-radius: var(--r-md);
}
.sourcescan-statuscount:hover { background: var(--surface-high); }

/* Five counters in a row (asset tab, widget headers). */
.sourcescan-sevstrip { display: inline-flex; gap: 4px; }
.sourcescan-sevcount {
  min-width: 28px; padding: 1px 6px; border-radius: var(--r-sm); text-align: center;
  font-family: var(--font-mono); font-size: var(--fs-code); font-variant-numeric: tabular-nums;
  background: var(--sourcescan-tint); color: var(--sourcescan-c); cursor: default;
}
.sourcescan-sevcount.pick { cursor: pointer; }
.sourcescan-sevcount.pick:hover { outline: 1px solid var(--sourcescan-c); }
.sourcescan-sevcount.zero { background: transparent; color: var(--outline); opacity: 0.6; }

/* Filters. */
.sourcescan-filters { display: flex; flex-wrap: wrap; gap: var(--sp-sm); align-items: flex-end; }
.sourcescan-filters .field { min-width: 150px; }
.sourcescan-checkrow { cursor: pointer; align-items: center; }
.sourcescan-check { width: 16px; height: 16px; accent-color: var(--signal-live); }
.sourcescan-textarea { min-height: 72px; resize: vertical; }

/* Tables. */
.sourcescan-file { display: inline-block; max-width: 360px; }
.sourcescan-rulename { max-width: 340px; }

/* Drawer. */
.drawer.sourcescan-drawer { width: min(620px, 100vw); }
.sourcescan-drawer-title { min-width: 0; overflow-wrap: anywhere; }
.sourcescan-section {
  font-size: var(--fs-label-md); color: var(--outline);
  border-top: 1px solid var(--stroke); padding-top: var(--sp-sm);
}
.sourcescan-prose { white-space: pre-wrap; line-height: 1.55; overflow-wrap: anywhere; }
.sourcescan-break { overflow-wrap: anywhere; word-break: break-all; }
.sourcescan-timeline { display: flex; flex-direction: column; gap: 8px; border-left: 2px solid var(--outline-variant); padding-left: 12px; }
.sourcescan-timeline > div { position: relative; }
.sourcescan-timeline > div::before {
  content: ''; position: absolute; left: -17px; top: 6px; width: 8px; height: 8px;
  border-radius: 50%; background: var(--signal-live);
}
