/* Sovereign, batch 5: vendors, risk, assets and privacy.

   The screens of Find sensitive data (sfd-), the Vendor register (svv-),
   the Asset inventory (sas-), the Risk register (srk-), GDPR
   accountability (sgd-) and Continuity and recovery (sbc-), and the tab
   strip and panels the last four share (b5-).

   Linked once, from sovereign-suite.html, after sovereign-app.css and
   before pro.css; the Console does not load it. Every rule here names a
   class of this batch's own services, which each carry a prefix of their
   own, or an id on one of their screens; the shell's classes (sv-, svs-,
   svt-), and anything services of two batches both wear, are in
   sovereign-app.css. How the batches divide the Suite: the head of
   pro-code/sovereign-services.js.

   States are data attributes rather than classes built from pieces
   (data-v on a table cell, data-b on a score, data-s on an obligation),
   so every name a rule here aims at is written out in full where it is
   worn. */

/* ----------------------------------------------------- Find sensitive data */

.sfd-go { padding: 12px 0 0; border-top: 0; justify-content: space-between; }
.sfd-go .svs-hint { margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.sfd-files { list-style: none; margin: 18px 0 0; padding: 0; border-top: 1px solid var(--sv-line); }
.sfd-file { border-bottom: 1px solid var(--sv-line); }
.sfd-file summary { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: baseline; gap: 2px 12px; padding: 12px 0; cursor: pointer; list-style: none; }
.sfd-file summary::-webkit-details-marker { display: none; }
.sfd-file summary code { font-family: var(--font-mono); font-size: var(--text-xs); overflow-wrap: anywhere; }
.sfd-tally { grid-column: 2; font-size: var(--text-2xs); color: var(--ink-faint); }
.sfd-risk { width: 112px; font-size: var(--text-2xs); font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-faint); }
.sfd-high .sfd-risk { color: var(--danger); }
.sfd-med .sfd-risk { color: var(--warn); }
.sfd-file details[open] summary { padding-bottom: 8px; }
.sfd-file details > .svs-actions { margin: 10px 0 14px; }
.sfd-file .sv-btn svg { width: 13px; height: 13px; }
.sfd-n { color: var(--ink-faint); font-variant-numeric: tabular-nums; }
.sfd-more { color: var(--ink-faint); }
@media (max-width: 640px) {
  .sfd-file summary { grid-template-columns: 1fr; }
  .sfd-tally { grid-column: 1; }
  .sfd-file summary { min-height: 44px; }
}

/* --------------------------------------------------------- Vendor register */

/* The banner over sample records (worn by every batch 5 register), the
   list sitting on the filter bar's rule, the gap between groups of fields
   in a form, and the import preview, which scrolls on its own rather
   than widening the page. */
.svv-sample { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; margin: 0 0 16px; padding: 10px 14px; border-radius: var(--radius-md); background: var(--accent-soft); font-size: var(--text-xs); line-height: 1.5; }
.svv-sample[hidden] { display: none; }
.svv-sample p { margin: 0; }
.svv-rows { margin-top: 0; border-top: 0; }
.svv-gap { margin-top: 14px; }
.svv-formhead { margin-bottom: 8px; }
.svv-go { margin: 0 0 14px; }
.svv-go .sv-btn svg { width: 13px; height: 13px; }
.svv-scroll { margin-top: 14px; overflow-x: auto; }
.svv-scroll .sfd-table td { white-space: nowrap; }
/* Below 1100px the page is one plain 1fr column, which a wide table would
   stretch; this lets the preview scroll inside it instead. */
.svv-main { min-width: 0; }
.svv-more { margin-top: 0; padding-top: 0; border-top: 0; }
.svv-cuecs { margin: 6px 0 0; padding-left: 18px; font-size: var(--text-xs); color: var(--ink-soft); }
.svv-cuecs li { margin: 2px 0; }
.svv-shadow td:last-child { white-space: normal; min-width: 180px; }
.svv-log { margin: 6px 0 0; padding-left: 18px; font-size: var(--text-xs); line-height: var(--leading-prose); }

/* ------------------------------------------- tabs shared by the registers */

.b5-tabs { margin: 4px 0 0; max-width: 100%; overflow-x: auto; scrollbar-width: none; }
.b5-tabs::-webkit-scrollbar { display: none; }
.b5-tabs button { min-width: 0; flex: none; }
.b5-tabs[hidden], .b5-panel[hidden] { display: none; }
.b5-panel { margin-top: 12px; min-width: 0; }

/* --------------------------------------------------------- Asset inventory */

.sas-main, .srk-main, .sbc-main, .sgd-main { min-width: 0; }
.sas-stale { margin: 12px 0 0; max-width: 460px; }
.sas-base th small { display: block; font-weight: 400; color: var(--ink-faint); font-size: var(--text-2xs); }
.sas-base td small { color: var(--ink-faint); }
.sas-c[data-v="no"] { color: var(--danger); font-weight: 650; }
.sas-c[data-v="yes"] { color: var(--good); }
.sas-c[data-v="unknown"] { color: var(--ink-faint); }
.sas-eol { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--sv-line); }
.sas-eol-row { padding: 12px 0; border-bottom: 1px solid var(--sv-line); }
.sas-eol-head { display: flex; flex-direction: column; gap: 2px; margin-bottom: 8px; }
.sas-eol-head small { font-size: var(--text-2xs); color: var(--ink-faint); overflow-wrap: anywhere; }
.sas-data { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }

/* ----------------------------------------------------------- Risk register */

.srk-score { font-variant-numeric: tabular-nums; font-weight: 700; }
.srk-score[data-b="high"] { color: var(--danger); }
.srk-score[data-b="medium"] { color: var(--warn); }
.srk-score[data-b="low"] { color: var(--good); }
.srk-heatbox { max-width: 380px; margin-top: 12px; }
.srk-heat { display: block; width: 100%; height: auto; }
.srk-b-low { fill: var(--good-soft); }
.srk-b-medium { fill: var(--warn-soft); }
.srk-b-high { fill: var(--danger-soft); }
.srk-n { fill: var(--ink); font-size: var(--text-sm); font-weight: 700; }
.srk-ax { fill: var(--ink-faint); font-size: var(--text-2xs); }
.srk-method ol, .srk-method ul { margin: 4px 0 12px; padding-left: 20px; font-size: var(--text-sm); line-height: var(--leading-prose); }
/* Risk in money: the six figures, the curve and its table. */
.srk-fair { margin: 0; padding: 0; border: 0; min-width: 0; }
.srk-cur { max-width: 160px; margin: 0; }
.srk-lec { margin-top: 16px; }
.srk-lec-line { fill: none; stroke: var(--accent); stroke-width: 1.5; stroke-linejoin: round; }
.srk-lec-mark { stroke: var(--ink-faint); stroke-width: 1.5; stroke-dasharray: 3 3; }
.srk-fairt { min-width: 640px; }
.srk-fairt td { font-variant-numeric: tabular-nums; }

/* -------------------------------------------------- Continuity and recovery */

.sbc-r[data-v="fail"] { color: var(--danger); font-weight: 650; }
.sbc-r[data-v="partial"] { color: var(--warn); font-weight: 650; }
.sbc-r[data-v="pass"] { color: var(--good); }
.sbc-plan { display: grid; gap: 12px; max-width: 720px; }

/* ----------------------------------------------------- GDPR accountability */

.sgd-checks { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--sv-line); }
.sgd-check { padding: 12px 0 14px 12px; border-bottom: 1px solid var(--sv-line); border-left: 3px solid var(--rule); }
.sgd-check[data-s="done"], .sgd-check[data-s="na"] { border-left-color: var(--good); }
.sgd-check[data-s="doing"] { border-left-color: var(--warn); }
.sgd-check-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 12px; }
.sgd-art { font-size: var(--text-2xs); font-weight: 600; color: var(--ink-faint); }
.sgd-text { margin: 4px 0 0; font-size: var(--text-sm); line-height: var(--leading-prose); color: var(--ink-soft); }
.sgd-ev { margin: 4px 0 0; font-size: var(--text-xs); color: var(--accent-strong); }
.sgd-row { margin-top: 8px; }
.sgd-mapbox { margin-top: 12px; overflow-x: auto; border: 1px solid var(--sv-line); border-radius: var(--radius-md); background: var(--paper-raised); }
.sgd-map { display: block; min-width: 480px; width: 100%; height: auto; }
.sgd-link { stroke: var(--rule-strong); fill: none; }
.sgd-head { fill: var(--ink-faint); font-size: var(--text-2xs); font-weight: 700; }
.sgd-t { fill: var(--ink); font-size: var(--text-2xs); }
.sgd-cat { fill: var(--accent-soft); }
.sgd-ct { fill: var(--accent-strong); font-size: var(--text-2xs); font-weight: 650; }
