/* Module review split diagram (module_review_split / module_spec_checks).
   Base colors, radii, and shadows come from the shared tokens in styles.css;
   zone tints are derived here, scoped to the component. */

.module-review-split {
  --zone-gap: 1.15rem;
  --zone-authoritative-bg: color-mix(in srgb, var(--accent) 11%, transparent);
  --zone-authoritative-border: color-mix(in srgb, var(--accent) 40%, transparent);
  --zone-generated-bg: color-mix(in srgb, var(--copper) 10%, transparent);
  --zone-generated-border: color-mix(in srgb, var(--copper) 36%, transparent);

  color: var(--text);
  margin: 1.6rem 0;
  max-width: 42rem;
}

.module-review-split__source,
.module-review-split__checks {
  background: var(--bg-code);
  border: 1px solid var(--surface-border);
  border-radius: var(--radius-l);
  box-shadow: var(--shadow-raised);
  overflow: hidden;
}

.module-review-split__header,
.module-review-split figcaption {
  color: var(--muted);
  font-size: 0.9rem;
  line-height: 1.45;
  padding: 0.85rem 1rem;
}

.module-review-split__header {
  align-items: baseline;
  border-bottom: 1px solid var(--surface-divider);
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.75rem;
}

.module-review-split figcaption {
  padding-inline: 0.15rem;
}

.module-review-split__surfaces {
  display: grid;
  gap: var(--zone-gap);
  padding: 1rem;
  padding-bottom: 0.8rem;
}

.module-review-split__zone,
.module-review-split__checks {
  padding: 0.85rem;
}

.module-review-split__zone {
  border: 1px solid var(--control-border);
  border-radius: var(--radius-m);
  display: grid;
  gap: 0.85rem;
}

.module-review-split__zone--authoritative {
  background: var(--zone-authoritative-bg);
  border-color: var(--zone-authoritative-border);
}

.module-review-split__zone--generated {
  background: var(--zone-generated-bg);
  border-color: var(--zone-generated-border);
  position: relative;
}

/* The generated zone hangs off the authoritative zone: a short trace
   with a via bridges the grid gap, drawing the derivation direction. */
.module-review-split__zone--generated::before {
  background: var(--trace);
  content: "";
  height: calc(var(--zone-gap) + 2px);
  left: 1.35rem;
  position: absolute;
  top: calc(-1 * var(--zone-gap) - 1px);
  width: 1px;
}

.module-review-split__zone--generated::after {
  background: var(--bg-code);
  border: 1px solid var(--accent);
  border-radius: 50%;
  content: "";
  height: var(--node-size);
  left: calc(1.35rem - var(--node-size) / 2 + 0.5px);
  position: absolute;
  top: calc(var(--zone-gap) / -2 - var(--node-size) / 2);
  width: var(--node-size);
}

.module-review-split__checks {
  background: var(--bg);
  border-color: var(--surface-border);
  border-style: solid;
  display: grid;
  gap: 0.75rem;
}

.module-review-split__label {
  color: var(--text);
  font-family: var(--font-code);
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  line-height: 1.3;
  margin: 0;
  text-transform: uppercase;
}

.module-review-split__note {
  color: var(--muted);
  font-size: 0.88rem;
  line-height: 1.35;
  margin: 0.18rem 0 0;
}

.module-review-split__files {
  display: grid;
  gap: 0.45rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.module-review-split__files li {
  align-items: baseline;
  display: grid;
  gap: 0.35rem;
  grid-template-columns: minmax(9rem, 0.82fr) 1fr;
  margin: 0;
}

.module-review-split__files li+li {
  margin-top: 0;
}

.module-review-split__files code,
.module-review-split__header code,
.module-review-split figcaption code,
.module-review-split__rule-label code,
.module-review-split__rules code {
  background: transparent;
  border: 0;
  color: var(--text-code-inline);
  padding: 0;
}

.module-review-split__files span {
  color: var(--muted);
  font-size: 0.86rem;
  line-height: 1.3;
}

.module-review-split__nested code {
  padding-left: 1.1rem;
}

.module-review-split__rule-groups {
  display: grid;
  gap: 0.8rem;
}

.module-review-split__rule-group {
  border-top: 1px solid var(--surface-divider);
  display: grid;
  gap: 0.45rem;
  padding-top: 0.8rem;
}

.module-review-split__rule-group:first-child {
  border-top: 0;
  padding-top: 0;
}

.module-review-split__rule-label {
  font-family: var(--font-code);
  font-size: 0.8rem;
  line-height: 1.3;
  margin: 0;
}

.module-review-split__rules {
  display: grid;
  gap: 0.45rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.module-review-split__rules li {
  color: var(--muted);
  font-size: 0.88rem;
  line-height: 1.35;
  margin: 0;
  padding-left: 1rem;
  position: relative;
}

/* Rule bullets are small via rings, matching the site ornament language. */
.module-review-split__rules li::before {
  border: 1px solid var(--accent);
  border-radius: 50%;
  content: "";
  height: 0.34rem;
  left: 0.02rem;
  position: absolute;
  top: 0.44rem;
  width: 0.34rem;
}

@supports not (background: color-mix(in srgb, white 50%, black)) {
  .module-review-split__zone--authoritative {
    background: rgba(111, 217, 200, 0.1);
    border-color: rgba(111, 217, 200, 0.32);
  }

  .module-review-split__zone--generated {
    background: rgba(217, 160, 108, 0.1);
    border-color: rgba(217, 160, 108, 0.3);
  }
}
