
/* Same brand gradient as this benchmark's card on the hub. */
.hero {
  background: var(--gradient-grey-to-purple);
  border-bottom: 1px solid var(--grey-300);
}
@media (max-width: 640px) {
  .hero-inner {
    padding: 24px 0 20px;
  }
}
.result-row:hover,
.cost-row:hover,
.dbar-row:hover,
.pie-item:hover,
.fam-row:hover {
  background: var(--grey-100);
}
.cost-fill {
  position: absolute;
  top: 0;
  left: 0;
  height: 14px;
  background: var(--bio-blue-100);
  border-radius: var(--radius-bar);
}

.risk-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
  gap: 18px;
  margin-top: 26px;
}
.risk-card {
  display: grid;
  grid-row: span 3;
  grid-template-rows: subgrid;
  row-gap: 0;
  border: 1px solid var(--grey-300);
  border-radius: var(--radius);
  background: var(--white);
  overflow: hidden;
}
.risk-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 20px;
  background: var(--ice-blue);
  color: var(--midnight-blue);
}
.risk-card.pseudo .risk-head {
  background: var(--sky-blue-100);
}
.risk-card.hazardous .risk-head {
  background: var(--midnight-blue);
  color: var(--white);
}
.risk-head b {
  font-size: var(--text-18);
  font-weight: 500;
}
.risk-head span {
  font-family: var(--font-primary);
  font-variant-numeric: tabular-nums;
  font-size: var(--text-12);
  white-space: nowrap;
}
.risk-body {
  padding: 16px 20px 18px;
}
.risk-expect {
  font-size: var(--text-12);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--bio-blue-200);
}
.risk-card.hazardous .risk-expect {
  color: var(--marine-100);
}
.risk-body p {
  margin: 8px 0 0;
  font-size: var(--text-14);
  line-height: 1.6;
  color: var(--grey-500);
}
.risk-eg {
  margin-top: 14px;
  padding: 12px 14px;
  border-radius: 8px;
  background: var(--grey-100);
  font-size: var(--text-14);
  line-height: 1.6;
  color: var(--marine);
}
.scatter-board {
  margin-top: 16px;
}
/* Capped at the viewBox width so plot type renders at its set size. */
.sc {
  display: block;
  width: 100%;
  max-width: 720px;
  height: auto;
  margin: 0 auto;
  overflow: visible;
}
.sc-region {
  font-size: calc(var(--text-14) * var(--sc-scale, 1));
  font-style: italic;
  fill: var(--grey-500);
}
.sc-grid {
  stroke: var(--grey-200);
  stroke-width: 1;
}
.sc-quad {
  stroke: var(--grey-400);
  stroke-width: 1;
  stroke-dasharray: 2 4;
}
.sc-axis {
  stroke: var(--grey-400);
  stroke-width: 1;
}
/* Plot type is in viewBox units, scaled by --sc-scale on narrow screens. */
.sc-tick {
  font-family: var(--font-primary);
  font-variant-numeric: tabular-nums;
  font-size: calc(var(--text-14) * var(--sc-scale, 1));
  fill: var(--grey-500);
}
.sc-title {
  font-size: calc(var(--text-14) * var(--sc-scale, 1));
  font-weight: 600;
  fill: var(--midnight-blue);
}
.sc-dot {
  stroke: var(--white);
  stroke-width: 2;
  transition: fill 90ms ease-out, stroke-width 90ms ease-out;
}
/* Mark and name are paired by model name; names render in a second pass. */
.sc-dot.is-hot {
  fill: var(--midnight-blue) !important;
  stroke-width: 3.5;
}
.sc-label {
  font-size: calc(var(--text-14) * var(--sc-scale, 1));
  font-weight: 600;
  fill: var(--midnight-blue);
  paint-order: stroke;
  stroke: var(--white);
  stroke-width: 3.5px;
  stroke-linejoin: round;
}
/* Phone-width plot: names and annotations step down to the smallest size. */
@media (max-width: 720px) {
  .sc-label,
  .sc-region {
    font-size: calc(var(--text-12) * var(--sc-scale, 1));
  }
}
.sc-hit:hover {
  cursor: default;
}
.sc-label.is-hot {
  fill: var(--bio-blue-200);
}
.key {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  margin: 0 0 18px;
  font-size: var(--text-14);
  color: var(--grey-500);
}
.key i {
  display: inline-block;
  width: 11px;
  height: 11px;
  border-radius: 3px;
  margin-right: 7px;
  vertical-align: -1px;
}
.pair {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 16px;
  margin-top: 16px;
}
/* Continues the section above, so it drops its top padding. */
#composition {
  padding-top: 0;
}
.comp-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}
.comp-head .sub {
  margin: 0;
}
.fam-list {
  padding: 4px 24px;
}
.fam-row {
  display: grid;
  grid-template-columns: minmax(220px, 1.1fr) minmax(160px, 1fr) 76px;
  gap: 18px;
  align-items: center;
  padding: 8px 0;
  border-top: 1px solid var(--grey-200);
}
.fam-row:first-child {
  border-top: 0;
}
.fam-name {
  color: var(--midnight-blue);
  font-weight: 500;
  font-size: var(--text-14);
}
.fam-track {
  position: relative;
  height: 12px;
}
.fam-fill {
  position: absolute;
  top: 0;
  left: 0;
  height: 12px;
  background: var(--bio-blue-100);
  border-radius: var(--radius-bar);
}
/* Radius on the last segment, not the full-width track. */
.fam-stack {
  display: flex;
}
.fam-seg {
  height: 12px;
  flex: none;
}
.fam-seg:last-child {
  border-radius: var(--radius-bar);
}
.comp-key {
  margin: 0;
  gap: 14px;
  font-size: var(--text-12);
}
.fam-n {
  text-align: right;
  font-family: var(--font-primary);
  font-variant-numeric: tabular-nums;
  font-size: var(--text-14);
  color: var(--midnight-blue);
  white-space: nowrap;
}
@media (max-width: 720px) {
  .fam-row {
    grid-template-columns: 1fr 60px;
  }
  .fam-track {
    grid-column: 1 / -1;
    grid-row: 2;
  }
}
.board-pad {
  padding: 24px;
}
@media (max-width: 680px) {
  .board-pad {
    padding: 16px;
  }
}
.board + .failure-cards {
  margin-top: 18px;
}
