.capm-app {
  --capm-market: var(--ab-navy);
  --capm-residual: #aeb4bd;
}

.capm-equation {
  display: grid;
  gap: 0.55rem;
  margin: 1.5rem 0 1rem;
}

.capm-equation > div {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  margin: 0;
  padding-top: 0.6rem;
  border-top: 1px solid var(--ab-rule);
}

.capm-equation dt {
  color: var(--ab-muted);
  font-size: 0.75rem;
}

.capm-equation dd,
.capm-risk__metrics dd {
  margin: 0;
  font-family: var(--ab-mono);
  font-variant-numeric: tabular-nums;
}

.capm-equation .capm-equation__result {
  padding-top: 0.8rem;
  border-color: var(--ab-gold);
}

.capm-equation__result dd {
  color: var(--ab-gold-text);
  font-size: 1.12rem;
}

.capm-sml {
  stroke: var(--ab-gold);
  stroke-width: 3;
}

.capm-risk-free-point {
  fill: var(--ab-navy);
  stroke: var(--ab-paper);
  stroke-width: 2;
}

.capm-risk-free-label rect {
  fill: var(--ab-paper);
  stroke: var(--ab-rule);
}

.capm-risk-free-label text {
  fill: var(--ab-ink);
  font-family: var(--ab-sans);
  font-size: 11px;
  font-weight: 650;
}

.capm-market-point {
  fill: var(--ab-paper);
  stroke: var(--ab-navy);
  stroke-width: 3;
}

.capm-selected-point {
  fill: var(--ab-gold);
  stroke: var(--ab-paper);
  stroke-width: 3;
}

.capm-selected-guide {
  stroke: var(--ab-muted);
  stroke-width: 1;
  stroke-dasharray: 4 5;
}

.ef-legend .capm-legend__market {
  background: var(--ab-paper);
  border: 2px solid var(--ab-navy);
}

.ef-legend .capm-legend__risk-free {
  background: var(--ab-navy);
  box-shadow: 0 0 0 2px var(--ab-paper), 0 0 0 3px var(--ab-rule-strong);
}

.capm-risk {
  margin-top: 1.5rem;
  padding: clamp(1.25rem, 3vw, 2rem);
  border: 1px solid var(--ab-rule-strong);
  background: var(--ab-paper);
  box-shadow: var(--ab-shadow);
}

.capm-risk__head {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem 2rem;
  align-items: end;
  justify-content: space-between;
}

.capm-risk h2 {
  margin: 0;
  font-family: var(--ab-sans);
  font-size: 1.15rem;
  letter-spacing: 0;
}

.capm-eyebrow {
  margin: 0 0 0.25rem;
  color: var(--ab-gold-text);
  font-family: var(--ab-mono);
  font-size: 0.7rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.capm-risk__metrics {
  display: flex;
  gap: 1.5rem;
  margin: 0;
}

.capm-risk__metrics > div {
  margin: 0;
}

.capm-risk__metrics dt {
  color: var(--ab-muted);
  font-size: 0.7rem;
  text-transform: uppercase;
}

.capm-risk__metrics dd {
  color: var(--ab-navy);
  font-size: 1.05rem;
}

.capm-risk-bar {
  display: flex;
  width: 100%;
  height: 1rem;
  margin: 1.5rem 0 0.7rem;
  overflow: hidden;
  background: var(--ab-rule);
}

.capm-risk-bar__systematic {
  background: var(--ab-navy);
}

.capm-risk-bar__residual {
  background: var(--capm-residual);
}

.capm-risk-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem 1.5rem;
  color: var(--ab-muted);
  font-size: 0.78rem;
}

.capm-risk-legend span {
  display: inline-flex;
  gap: 0.4rem;
  align-items: center;
}

.capm-risk-legend i {
  width: 0.75rem;
  height: 0.75rem;
}

.capm-risk-legend__systematic {
  background: var(--ab-navy);
}

.capm-risk-legend__residual {
  background: var(--capm-residual);
}

.capm-risk-legend strong {
  color: var(--ab-ink);
  font-family: var(--ab-mono);
  font-weight: 500;
}

.capm-risk > p:last-child {
  max-width: 48rem;
  margin: 0.85rem 0 0;
  color: var(--ab-warm-grey);
  font-size: 0.8rem;
}

.capm-diversification-app {
  margin-top: 1.75rem;
}

.capm-diversification-layout {
  display: grid;
  grid-template-columns: minmax(17rem, 21rem) minmax(0, 1fr);
  gap: clamp(1.25rem, 3vw, 2.5rem);
  align-items: start;
}

.capm-div-metrics {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
  margin: 1.5rem 0 1rem;
}

.capm-div-metrics > div {
  margin: 0;
  padding-top: 0.7rem;
  border-top: 1px solid var(--ab-rule);
}

.capm-div-metrics dt {
  color: var(--ab-muted);
  font-size: 0.7rem;
  text-transform: uppercase;
}

.capm-div-metrics dd {
  margin: 0.15rem 0 0;
  color: var(--ab-navy);
  font-family: var(--ab-mono);
  font-variant-numeric: tabular-nums;
}

.capm-div-total-line {
  fill: none;
  stroke: var(--ab-gold);
  stroke-width: 3;
}

.capm-div-market-line {
  stroke: var(--ab-navy);
  stroke-width: 2;
  stroke-dasharray: 7 5;
}

.capm-div-gap {
  stroke: var(--ab-muted);
  stroke-width: 2;
  stroke-dasharray: 4 4;
}

.capm-div-market-label {
  fill: var(--ab-navy);
  font-family: var(--ab-sans);
  font-size: 11px;
  font-weight: 650;
}

.ef-legend .capm-div-legend__total {
  width: 1.2rem;
  height: 0.18rem;
  background: var(--ab-gold);
  border-radius: 0;
}

.ef-legend .capm-div-legend__market {
  width: 1.2rem;
  height: 0;
  background: transparent;
  border-top: 2px dashed var(--ab-navy);
  border-radius: 0;
}

@media (max-width: 820px) {
  .capm-risk__head {
    align-items: flex-start;
  }

  .capm-diversification-layout {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 560px) {
  .capm-risk__metrics {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem;
    width: 100%;
  }
}
