Based on the data, I'll create a December KPI scorecard showing actual vs. target performance with status indicators.

```html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>December 2025 KPI Scorecard</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    body {
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
      background: #f8f9fa;
      padding: 32px 20px;
      color: #2c3e50;
    }

    .container {
      max-width: 1200px;
      margin: 0 auto;
    }

    .header {
      margin-bottom: 32px;
    }

    .header h1 {
      font-size: 28px;
      font-weight: 600;
      margin-bottom: 4px;
    }

    .header p {
      font-size: 14px;
      color: #7f8c8d;
    }

    .scorecard {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
      gap: 16px;
    }

    .kpi-card {
      background: white;
      border-radius: 8px;
      padding: 20px;
      border-left: 4px solid #bdc3c7;
      transition: box-shadow 0.2s;
    }

    .kpi-card:hover {
      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
    }

    .kpi-card.on-track {
      border-left-color: #27ae60;
    }

    .kpi-card.warning {
      border-left-color: #e74c3c;
    }

    .kpi-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      margin-bottom: 16px;
    }

    .kpi-name {
      font-size: 13px;
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: 0.5px;
      color: #7f8c8d;
      flex: 1;
    }

    .status-badge {
      display: flex;
      align-items: center;
      gap: 6px;
      font-size: 11px;
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: 0.5px;
      padding: 4px 8px;
      border-radius: 4px;
    }

    .status-badge.on-track {
      background: #d5f4e6;
      color: #27ae60;
    }

    .status-badge.warning {
      background: #fadbd8;
      color: #c0392b;
    }

    .status-dot {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      display: inline-block;
    }

    .status-dot.on-track {
      background: #27ae60;
    }

    .status-dot.warning {
      background: #e74c3c;
    }

    .kpi-values {
      margin-bottom: 12px;
    }

    .value-row {
      display: flex;
      justify-content: space-between;
      align-items: baseline;
      margin-bottom: 8px;
      font-size: 14px;
    }

    .value-label {
      color: #7f8c8d;
      font-size: 12px;
    }

    .value {
      font-size: 18px;
      font-weight: 600;
      color: #2c3e50;
    }

    .variance {
      font-size: 12px;
      margin-top: 8px;
      padding-top: 8px;
      border-top: 1px solid #ecf0f1;
      display: flex;
      justify-content: space-between;
    }

    .variance-label {
      color: #95a5a6;
    }

    .variance-value {
      font-weight: 600;
      color: #2c3e50;
    }

    .variance-value.positive {
      color: #27ae60;
    }

    .variance-value.negative {
      color: #e74c3c;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="header">
      <h1>December 2025 KPI Scorecard</h1>
      <p>Performance against monthly targets</p>
    </div>

    <div class="scorecard">
      <!-- Revenue -->
      <div class="kpi-card on-track">
        <div class="kpi-header">
          <div class="kpi-name">Revenue</div>
          <div class="status-badge on-track">
            <span class="status-dot on-track"></span>
            On Track
          </div>
        </div>
        <div class="kpi-values">
          <div class="value-row">
            <span class="value-label">Actual</span>
            <span class="value">$826,751</span>
          </div>
          <div class="value-row">
            <span class="value-label">Target</span>
            <span class="value">$823,600</span>
          </div>
        </div>
        <div class="variance">
          <span class="variance-label">vs Target</span>
          <span class="variance-value positive">+$3,151 (+0.4%)</span>
        </div>
      </div>

      <!-- Gross Margin % -->
      <div class="kpi-card on-track">
        <div class="kpi-header">
          <div class="kpi-name">Gross Margin %</div>
          <div class="status-badge on-track">
            <span class="status-dot on-track"></span>
            On Track
          </div>
        </div>
        <div class="kpi-values">
          <div class="value-row">
            <span class="value-label">Actual</span>
            <span class="value">26.06%</span>
          </div>
          <div class="value-row">
            <span class="value-label">Target</span>
            <span class="value">26.00%</span>
          </div>
        </div>
        <div class="variance">
          <span class="variance-label">vs Target</span>
          <span class="variance-value positive">+0.06%</span>
        </div>
      </div>

      <!-- DSO Days -->
      <div class="kpi-card warning">
        <div class="kpi-header">
          <div class="kpi-name">Days Sales Outstanding</div>
          <div class="status-badge warning">
            <span class="status-dot warning"></span>
            Below Target
          </div>
        </div>
        <div class="kpi-values">
          <div class="value-row">
            <span class="value-label">Actual</span>
            <span class="value">51.2</span>
          </div>
          <div class="value-row">
            <span class="value-label">Target</span>
            <span class="value">45.0</span>
          </div>
        </div>
        <div class="variance">
          <span class="variance-label">vs Target</span>
          <span class="variance-value negative">+6.2 days</span>
        </div>
      </div>

      <!-- On-Time Delivery % -->
      <div class="kpi-card warning">
        <div class="kpi-header">
          <div class="kpi-name">On-Time Delivery %</div>
          <div class="status-badge warning">
            <span class="status-dot warning"></span>
            Below Target
          </div>
        </div>
        <div class="kpi-values">
          <div class="value-row">
            <span class="value-label">Actual</span>
            <span class="value">93.30%</span>
          </div>
          <div class="value-row">
            <span class="value-label">Target</span>
            <span class="value">95.00%</span>
          </div>
        </div>
        <div class="variance">
          <span class="variance-label">vs Target</span>
          <span class="variance-value negative">-1.70%</span>
        </div>
      </div>

      <!-- Order Fill Rate % -->
      <div class="kpi-card on-track">
        <div class="kpi-header">
          <div class="kpi-name">Order Fill Rate %</div>
          <div class="status-badge on-track">
            <span class="status-dot on-track"></span>
            On Track
          </div>
        </div>
        <div class="kpi-values">
          <div class="value-row">
            <span class="value-label">Actual</span>
            <span class="value">97.60%</span>
          </div>
          <div class="value-row">
            <span class="value-label">Target</span>
            <span class="value">97.00%</span>
          </div>
        </div>
        <div class="variance">
          <span class="variance-label">vs Target</span>
          <span class="variance-value positive">+0.60%</span>
        </div>
      </div>

      <!-- Active Customers -->
      <div class="kpi-card warning">
        <div class="kpi-header">
          <div class="kpi-name">Active Customers</div>
          <div class="status-badge warning">
            <span class="status-dot warning"></span>
            Below Target
          </div>
        </div>
        <div class="kpi-values">
          <div class="value-row">
            <span class="value-label">Actual</span>
            <span class="value">40</span>
          </div>
          <div class="value-row">
            <span class="value-label">Target</span>
            <span class="value">42</span>
          </div>
        </div>
        <div class="variance">
          <span class="variance-label">vs Target</span>
          <span class="variance-value negative">-2 customers</span>
        </div>
      </div>

      <!-- Inventory Turns -->
      <div class="kpi-card warning">
        <div class="kpi-header">
          <div class="kpi-name">Inventory Turns</div>
          <div class="status-badge warning">
            <span class="status-dot warning"></span>
            Below Target
          </div>
        </div>
        <div class="kpi-values">
          <div class="value-row">
            <span class="value-label">Actual</span>
            <span class="value">5.33</span>
          </div>
          <div class="value-row">
            <span class="value-label">Target</span>
            <span class="value">6.50</span>
          </div>
        </div>
        <div class="variance">
          <span class="variance-label">vs Target</span>
          <span class="variance-value negative">-1.17 turns</span>
        </div>
      </div>

      <!-- Opex % of Revenue -->
      <div class="kpi-card on-track">
        <div class="kpi-header">
          <div class="kpi-name">Opex % of Revenue</div>
          <div class="status-badge on-track">
            <span class="status-dot on-track"></span>
            On Track
          </div>
        </div>
        <div class="kpi-values">
          <div class="value-row">
            <span class="value-label">Actual</span>
            <span class="value">25.11%</span>
          </div>
          <div class="value-row">
            <span class="value-label">Target</span>
            <span class="value">25.25%</span>
          </div>
        </div>
        <div class="variance">
          <span class="variance-label">vs Target</span>
          <span class="variance-value positive">-0.14%</span>
        </div>
      </div>
    </div>
  </div>
</body>
</html>
```

**December 2025 KPI Summary:**

**On Track (4):**
- Revenue: $826.8K (+0.4% vs target)
- Gross Margin: 26.06% (+0.06%)
- Order Fill Rate: 97.60% (+0.60%)
- Opex % Revenue: 25.11% (-0.14%, better)

**Below Target (4):**
- DSO Days: 51.2 (+6.2 days, receivables slower)
- On-Time Delivery: 93.30% (-1.70%)
- Active Customers: 40 (-2 vs target)
- Inventory Turns: 5.33 (-1.17, elevated inventory at year-end)

The scorecard shows mixed performance in December—solid revenue and margin results, but supply chain and customer activity gaps that likely reflect year-end seasonality.