/**
 * KoreAves — Region × Source Matrix Stylesheet
 *
 * Tabular data, so row rules are used deliberately: columns need to be
 * scannable across. This is distinct from list-of-items separation, where
 * spacing replaces rules.
 */

.ka-region-source-matrix {
  display: flex;
  flex-direction: column;
  gap: var(--ka-space-16);
  min-width: 0;
}

/* ── per-source summary ───────────────────────────────────────────────── */
.ka-rsm-summary {
  display: flex;
  flex-direction: column;
  gap: var(--ka-space-12);
}

.ka-rsm-sources {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ka-space-8);
}

.ka-rsm-source {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1 1 140px;
  min-width: 0;
  padding: var(--ka-space-8) var(--ka-space-12);
  border: 1px solid var(--ka-color-rule-hairline);
  border-radius: var(--ka-radius-sm);
  background: var(--ka-color-paper-surface);
}

.ka-rsm-source-name {
  font-size: var(--ka-text-data-label);
  font-weight: 600;
  color: var(--ka-color-ink-secondary);
}

.ka-rsm-source-detail {
  font-family: var(--ka-font-mono);
  font-size: var(--ka-text-table-cell);
  color: var(--ka-color-ink-primary);
}

/* State is carried by a left rule, not by colour alone. */
.ka-rsm-source[data-state="EVIDENCE_PRESENT"] {
  border-left: 3px solid var(--ka-color-evidence-present-fill);
}
.ka-rsm-source[data-state="MAPPED_NO_RECORDS"] {
  border-left: 3px solid var(--ka-color-evidence-none-border);
}
.ka-rsm-source[data-state="OUTSIDE_SOURCE_SCOPE"] {
  border-left: 3px solid var(--ka-color-rule-strong);
}
.ka-rsm-source[data-state="NOT_COMPARABLE"] {
  border-left: 3px solid var(--ka-color-annotation-caution-border);
}
.ka-rsm-source[data-state="NOT_COMPARABLE"] .ka-rsm-source-detail,
.ka-rsm-source[data-state="OUTSIDE_SOURCE_SCOPE"] .ka-rsm-source-detail {
  color: var(--ka-color-ink-quiet);
}

.ka-rsm-multi {
  margin: 0;
  font-size: var(--ka-text-table-cell);
  line-height: 1.45;
  color: var(--ka-color-ink-secondary);
}

/* ── matrix ───────────────────────────────────────────────────────────── */
.ka-rsm-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--ka-text-table-cell);
  text-align: left;
}

.ka-rsm-table thead th {
  font-size: var(--ka-text-data-label);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: var(--ka-track-data-label);
  color: var(--ka-color-ink-quiet);
  background: var(--ka-color-paper-sunken);
  padding: var(--ka-space-8) var(--ka-space-8);
  border-bottom: 1px solid var(--ka-color-rule-subtle);
  white-space: nowrap;
}

.ka-rsm-table tbody th,
.ka-rsm-table tbody td {
  padding: var(--ka-space-8);
  border-bottom: 1px solid var(--ka-color-rule-hairline);
  vertical-align: baseline;
}

.ka-rsm-region {
  min-width: 0;
}

.ka-rsm-table tbody .ka-rsm-region {
  font-weight: 600;
  color: var(--ka-color-ink-primary);
}

.ka-rsm-region-en {
  display: block;
  white-space: nowrap;
  word-break: normal;
  overflow-wrap: normal;
}

.ka-rsm-region-ko {
  display: block;
  font-weight: 400;
  font-size: var(--ka-text-micro);
  color: var(--ka-color-ink-quiet);
  word-break: keep-all;
}

.ka-rsm-state {
  min-width: 112px;
  color: var(--ka-color-ink-secondary);
}

.ka-rsm-src-col,
.ka-rsm-cell,
.ka-rsm-count {
  text-align: center;
  width: 1%;
  white-space: nowrap;
}

.ka-rsm-cell {
  font-family: var(--ka-font-mono);
  color: var(--ka-color-ink-faint);
}

.ka-rsm-cell.is-present {
  color: var(--ka-color-evidence-present-fill);
  font-weight: 700;
}

.ka-rsm-count {
  font-family: var(--ka-font-mono);
  color: var(--ka-color-ink-secondary);
}

.ka-rsm-row:not(.is-evidenced) .ka-rsm-region-en,
.ka-rsm-row:not(.is-evidenced) .ka-rsm-state {
  color: var(--ka-color-ink-quiet);
}

.ka-rsm-row.is-selected {
  background: var(--ka-color-evidence-present-tint);
}

.ka-rsm-row.is-selected .ka-rsm-region-en {
  color: var(--ka-color-evidence-present-ink);
}

@media (max-width: 768px) {
  .ka-rsm-table thead th,
  .ka-rsm-table tbody th,
  .ka-rsm-table tbody td {
    padding: var(--ka-space-6) var(--ka-space-4);
  }

  .ka-rsm-state {
    display: none;
  }

  .ka-rsm-source {
    flex-basis: 100%;
  }

  .ka-rsm-table {
  }

  .ka-rsm-region {
    min-width: 0;
  }
}

/* ── row activation ───────────────────────────────────────────────────── */
/* The region name is the control. A whole-row click target would swallow
   text selection in a table meant to be read and copied. */
.ka-rsm-region-btn {
  display: block;
  width: 100%;
  min-height: 46px;
  box-sizing: border-box;
  padding: var(--ka-space-8) var(--ka-space-10);
  margin: 0;
  border: 0;
  border-radius: var(--ka-radius-sm);
  background: transparent;
  font: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.ka-rsm-region-btn:hover {
  background: var(--ka-color-paper-sunken);
}

.ka-rsm-region-btn:focus-visible {
  outline: 2px solid var(--ka-color-focus-ring);
  outline-offset: 1px;
}

/* Transient inspection from the map. The literal matches
   .interaction-highlight-overlay in evidenceMap.css and
   .region-master-row.is-linked-highlight in compare/styles.css — the dash and
   colour are what make the row and the polygon read as one gesture, so they
   are kept identical by hand rather than diverging behind a token only one of
   the three would use. */
.ka-rsm-region-btn.is-linked-highlight {
  outline: 1.5px dashed #205c9e;
  outline-offset: -1px;
}

/* The row carries the same inspection as a tint rather than a second outline:
   an outline on a <tr> renders as a broken dashed line across the cells. */
.ka-rsm-row.is-linked-highlight {
  background: rgba(32, 92, 158, 0.06);
}
.ka-region-source-matrix {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  -webkit-overflow-scrolling: touch;
}

/* Ownership: RegionSourceMatrix owns region matrix row controls. */
.ka-rsm-region-btn {
  border: 1px solid var(--ka-control-edge);
  box-shadow: var(--ka-control-press-inset);
  transition: var(--ka-control-transition);
}
.ka-rsm-region-btn:hover { border-color: var(--ka-control-edge-strong); }
.ka-rsm-region-btn:active { transform: translateY(1px); box-shadow: var(--ka-control-active-inset); }
