/**
 * Theme: data-heavy
 *
 * Reference: financial / analytics reporting — Bloomberg terminals,
 * McKinsey decks, FT Lex columns. Tight spacing, gridded backgrounds,
 * monospace numerals, restrained accents, lots of small data labels.
 * Reads as "rigorous" and "trustworthy".
 *
 * Best fit: KPI reviews, earnings reports, research summaries, any
 * deck where the numbers ARE the message.
 */
import { buildScale } from '../typography.js';

export default {
  id: 'data-heavy',
  family: 'data',
  description: 'Analyst-style: tight grid, monospace numerals, gridded backgrounds, restrained accents.',
  defaults: {
    palette:    'finch',
    spacing:    'tight',
    shape:      'sharp',
    background: 'grid',
  },
  typography: buildScale({
    display: 'Calibri',
    body:    'Calibri',
    mono:    'Consolas',
    // Data-heavy stays tighter than the other two themes — readers are
    // closer to the page (printable analyst report posture) — but the
    // sizes still need to be conference-readable. Old scale was too
    // close to "Word document"; this is "FT print spread".
    sizes: {
      display:  80,
      title:    38,
      subtitle: 22,
      body:     17,
      caption:  12,
      stat:     176,
      eyebrow:  12,
    },
    weights: { display: 'bold', title: 'bold', subtitle: 'normal' },
    letterSpacing: { display: -2, title: -0.5, eyebrow: 2 },
  }),
  archetypes: {
    hero: {
      align: 'left',
      reportMeta: true,             // small "Q4 2026 · Report" line over title
    },
    statCallout: {
      statColor: 'primary',
      labelStyle: 'mono',           // mono labels feel "data"
      sourceFootnote: true,         // source line at bottom
    },
    quote: {
      bigQuotes: false,
      attributionStyle: 'block',
    },
    twoColChart: {
      gridlinesOnChart: true,
      smallMultiples: true,
    },
    table: {
      striped: true,
      monospaceNumbers: true,
    },
  },
  decoration: {
    grid: {
      lineColor: 'subtle',
      lineOpacity: 8,
      spacing: 0.5,                  // grid line every 0.5"
    },
    geometric: {
      style: 'data',
      density: 'minimal',
    },
    noiseOpacity: 0,
    mesh: {
      stops: 2,
      saturation: 'muted',
    },
  },
};
