using SkiaSharp;
namespace HC_APTBS.Services.Impl
{
///
/// Centralised visual constants for the PDF test report.
/// All colours, font sizes, spacing, and chart dimensions live here
/// so the report look-and-feel can be adjusted in one place.
///
internal static class ReportTheme
{
// ── Colour palette (hex strings for QuestPDF, SKColor for charts) ─────
/// Dark navy for section header bars.
public const string HeaderNavy = "#1B2A4A";
/// Secondary grey for sub-headers and muted text.
public const string HeaderGrey = "#4A4A4A";
/// Accent blue for highlights.
public const string AccentBlue = "#2E5090";
/// Pass result — dark green text.
public const string PassGreen = "#2E7D32";
/// Pass result — light green background.
public const string PassGreenLight = "#E8F5E9";
/// Fail result — dark red text.
public const string FailRed = "#C62828";
/// Fail result — light red background.
public const string FailRedLight = "#FFEBEE";
/// Alternating table row stripe.
public const string TableAltRow = "#F5F7FA";
/// Thin divider lines.
public const string DividerLine = "#BDBDBD";
/// Error/warning row background.
public const string WarningBg = "#FFF3E0";
/// Error/warning text.
public const string WarningText = "#E65100";
// ── Chart-specific SKColors ───────────────────────────────────────────
/// Semi-transparent blue tolerance band.
public static readonly SKColor ToleranceBand = new(46, 80, 144, 50);
/// Amber dashed target line.
public static readonly SKColor TargetLine = new(255, 111, 0);
/// Blue data polyline.
public static readonly SKColor SampleLine = new(21, 101, 192);
/// Light grey chart gridlines and border.
public static readonly SKColor ChartGrid = new(224, 224, 224);
/// Chart background.
public static readonly SKColor ChartBackground = SKColors.White;
/// Green average line (pass).
public static readonly SKColor AvgPassLine = new(46, 125, 50);
/// Red average line (fail).
public static readonly SKColor AvgFailLine = new(198, 40, 40);
/// Chart axis label colour.
public static readonly SKColor AxisLabel = new(97, 97, 97);
// ── Font sizes (points) ───────────────────────────────────────────────
/// Report title.
public const float TitleSize = 16f;
/// Section header text (e.g. "PUMP IDENTIFICATION").
public const float SectionHeaderSize = 11f;
/// Body / table cell text.
public const float BodySize = 9f;
/// Small captions and chart labels.
public const float CaptionSize = 7f;
/// Footer text.
public const float FooterSize = 7f;
// ── Spacing (points) ─────────────────────────────────────────────────
/// Gap between major sections.
public const float SectionGap = 10f;
/// Gap between sub-sections (e.g. chart caption).
public const float SubsectionGap = 6f;
/// Table cell padding.
public const float CellPad = 3f;
// ── Chart dimensions (points) ─────────────────────────────────────────
/// Chart render height inside the PDF.
public const float ChartHeight = 160f;
}
}