@layer components {
  /* Period selector — sits at top of content area */
  .perf-period-selector {
    display: flex;
    gap: 8px;
    padding: 0 var(--content-padding) 16px;
  }

  .perf-period-pill {
    padding: 6px 14px;
    border-radius: var(--radius-pill);
    font-size: var(--text-caption);
    font-weight: var(--font-weight-medium);
    color: var(--color-muted);
    text-decoration: none;
    background: var(--color-bg-secondary);
    transition: background 0.15s, color 0.15s;

    &.active {
      background: var(--color-primary-selected);
      color: white;
    }
  }

  /* Sections */
  .perf-revenue,
  .perf-occupancy {
    padding: 0 var(--content-padding);

    .page-section-label {
      padding: 0;
    }
  }

  /* Revenue headline — quiet neutral number */
  .perf-big-number {
    font-size: var(--text-3xl);
    font-weight: var(--font-weight-bold);
    color: var(--color-text);
    line-height: var(--line-height-sm);
  }

  .perf-comparison {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 4px;
    font-size: var(--text-caption);
    color: var(--color-muted);
  }

  /* Change indicators — neutral by default, amber only on down-trends */
  .perf-change {
    font-size: var(--text-caption);
    font-weight: var(--font-weight-semibold);

    &.change-positive,
    &.change-neutral {
      color: var(--color-muted);
    }

    &.change-negative {
      color: var(--color-accent-amber-dark);
    }
  }

  /* Column chart — CSS bars over a hairline baseline, labels underneath */
  .perf-chart {
    margin-top: 20px;
  }

  .perf-chart-bars {
    display: flex;
    align-items: flex-end;
    gap: 4px;
    height: 96px;
    border-bottom: 1px solid var(--color-border);
  }

  .perf-chart-bar {
    flex: 1;
    min-height: 3px;
    border-radius: 3px 3px 0 0;
    background: rgba(var(--color-primary-rgb), 0.25);

    &.perf-chart-bar--peak {
      background: var(--color-primary);
    }

    &.perf-chart-bar--empty {
      background: var(--color-bg-tertiary);
    }
  }

  .perf-chart-labels {
    display: flex;
    gap: 4px;
    margin-top: 6px;

    span {
      flex: 1;
      text-align: center;
      font-size: var(--text-xs);
      color: var(--color-muted);
    }
  }

  /* Sub-metrics — label/value rows */
  .perf-metrics {
    display: flex;
    flex-direction: column;
    margin-top: 16px;
    background: var(--color-bg-secondary);
    border-radius: var(--radius-md);
    overflow: hidden;
  }

  .perf-metric {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 14px;

    &:not(:last-child) {
      border-bottom: 1px solid var(--color-border);
    }

    .label {
      font-size: var(--text-caption);
      color: var(--color-muted);
    }

    .value {
      font-size: var(--text-caption);
      font-weight: var(--font-weight-semibold);
      color: var(--color-text);
    }
  }

  /* Outstanding payments — amber row linking to pending payments */
  .perf-outstanding {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 16px;
    padding: 12px 14px;
    background: var(--color-accent-amber-light);
    border-radius: var(--radius-md);
    font-size: var(--text-caption);
    color: var(--color-accent-amber-dark);
    text-decoration: none;

    svg {
      width: 18px;
      height: 18px;
      flex-shrink: 0;
    }

    svg:last-child {
      width: 14px;
      height: 14px;
      margin-left: auto;
    }
  }

  /* Occupancy */
  .perf-occupancy-headline {
    font-size: var(--text-lg);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text);
  }

  .perf-occupancy-detail {
    font-size: var(--text-caption);
    color: var(--color-muted);
    margin-top: 8px;
  }

  .perf-weak-days {
    margin-top: 12px;
    padding: 10px 14px;
    background: var(--color-bg-secondary);
    border-radius: var(--radius-md);
    font-size: var(--text-caption);
    color: var(--color-muted);

    svg {
      width: 14px;
      height: 14px;
      vertical-align: -2px;
      margin-right: 4px;
    }
  }
}
