.client-report-page { max-width: 1100px; }
.client-report-hero { display: flex; justify-content: space-between; gap: 1rem; align-items: start; }
.hero-chip { padding: .75rem 1rem; border-radius: 999px; background: var(--forest); color: #fff; white-space: nowrap; }
.client-report-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem; }
.client-report-summary > div { padding: .85rem; border-radius: .55rem; background: #f2f5f2; }
.client-report-summary p { margin: .35rem 0 0; }
.client-report-primary { align-items: start; }
.allocation-chart-layout { display: grid; grid-template-columns: 15rem 1fr; gap: 1rem; align-items: center; }
.allocation-chart { width: 100%; max-width: 15rem; height: auto; display: block; }
.allocation-legend { display: grid; gap: .5rem; }
.legend-row { display: grid; grid-template-columns: .9rem 1fr auto; gap: .6rem; align-items: center; }
.legend-dot { width: .9rem; height: .9rem; border-radius: 50%; display: inline-block; }
.legend-label { min-width: 0; }
.client-report-table { width: 100%; margin-top: 1rem; border-collapse: collapse; }
.client-report-table th, .client-report-table td { padding: .65rem 0; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.client-report-table th:last-child, .client-report-table td:last-child { text-align: right; }
.client-report-duo { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin-top: 1rem; }
.client-report-exclusions { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.client-report-overview { margin-top: 1rem; }
@media print {
  .topbar, .evidence-actions, .button, .language { display: none !important; }
  .client-report-page { max-width: none; padding: 0; }
  .review-card { break-inside: avoid; box-shadow: none; }
  /* A grid item with break-inside: avoid can be taller than a PDF page for
     portfolios with several asset sections. WeasyPrint cannot place that item
     and can fail while attempting to create an empty page. Use ordinary block
     pagination for print and allow the allocation-table card to span pages. */
  .client-report-duo { display: block; }
  .client-report-duo > .review-card + .review-card { margin-top: 1rem; }
  .client-report-primary > .review-card:last-child { break-inside: auto; }
  .client-report-table { break-inside: auto; }
  .client-report-table thead { display: table-header-group; }
  .client-report-table tr { break-inside: avoid; }
  .allocation-chart-layout { grid-template-columns: 12rem 1fr; }
}
@media (max-width: 760px) {
  .client-report-summary, .client-report-duo, .allocation-chart-layout { grid-template-columns: 1fr; }
  .client-report-hero { display: grid; }
  .hero-chip { width: fit-content; }
  .allocation-chart { max-width: 12rem; margin: 0 auto; }
}
