import 'package:flutter/material.dart';

class SojornColors {
  const SojornColors._();

  // ── Basic theme palette ──────────────────────────────
  static const Color basicNavyBlue = Color(0xFF000383);
  static const Color basicNavyText = Color(0xFF000383);
  static const Color basicEgyptianBlue = Color(0xFF0E38AE);
  static const Color basicBrightNavy = Color(0xFF1974D1);
  static const Color basicRoyalPurple = Color(0xFF7751A8);
  static const Color basicKsuPurple = Color(0xFF512889);
  static const Color basicQueenPink = Color(0xFFE5C0DD);
  static const Color basicQueenPinkLight = Color(0xFFF9F2F7);
  static const Color basicWhite = Color(0xFFFFFFFF);
  static const Color basicBlack = Color(0xFF000000);

  // ── Pop theme palette ────────────────────────────────
  static const Color popNavyBlue = Color(0xFF000383);
  static const Color popNavyText = Color(0xFF0D1050);
  static const Color popEgyptianBlue = Color(0xFF0E38AE);
  static const Color popBrightNavy = Color(0xFF1974D1);
  static const Color popRoyalPurple = Color(0xFF7751A8);
  static const Color popKsuPurple = Color(0xFF512889);
  static const Color popScaffoldBg = Color(0xFFF9F6F9);
  static const Color popCardSurface = Color(0xFFFFFFFF);
  static const Color popHighlight = Color(0xFFE5C0DD);

  // ── Semantic ─────────────────────────────────────────
  static const Color error = Color(0xFFD32F2F);
  static const Color destructive = Color(0xFFD32F2F);
  static const Color warning = Color(0xFFFBC02D);
  static const Color info = Color(0xFF2196F3);
  static const Color textDisabled = Color(0xFF9E9E9E);
  static const Color textOnAccent = Color(0xFFFFFFFF);

  // ── Post content ─────────────────────────────────────
  static const Color postContent = Color(0xFF1A1A1A);
  static const Color postContentLight = Color(0xFF4A4A4A);

  // ── Navigation ───────────────────────────────────────
  static const Color bottomNavUnselected = Color(0xFF9EA3B0);

  // ── Trust tiers ──────────────────────────────────────
  static const Color tierNew = Color(0xFF9E9E9E);

  // ── NSFW / Sensitive content ─────────────────────────
  static const Color nsfwWarningBg = Color(0x26EF6C00);       // amber.800 @ 15%
  static const Color nsfwWarningBorder = Color(0x4DF57C00);   // amber.700 @ 30%
  static const Color nsfwWarningIcon = Color(0xFFF57C00);     // amber.700
  static const Color nsfwWarningText = Color(0xFFF57C00);     // amber.700
  static const Color nsfwWarningSubText = Color(0xFFFB8C00);  // amber.600
  static const Color nsfwRevealText = Color(0xCCFB8C00);      // amber.600 @ 80%

  // ── Sponsored / Ad ───────────────────────────────────
  static const Color sponsoredBadgeBg = Color(0x1A7751A8);    // royalPurple @ 10%
  static const Color sponsoredBadgeText = Color(0xB37751A8);  // royalPurple @ 70%

  // ── Overlays ─────────────────────────────────────────
  static const Color overlayDark = Color(0x80000000);          // black @ 50%
  static const Color overlayLight = Color(0x4DFFFFFF);         // white @ 30%
  static const Color overlayScrim = Color(0x33000000);         // black @ 20%
  static const Color transparent = Color(0x00000000);

  // ── Surface states ───────────────────────────────────
  static const Color surfacePressed = Color(0x14000383);       // navyBlue @ 8%
  static const Color surfaceHover = Color(0x0A000383);         // navyBlue @ 4%
  static const Color mediaErrorBg = Color(0x4DD32F2F);         // error @ 30%
  static const Color mediaLoadingBg = Color(0x4DE5C0DD);       // queenPink @ 30%

  // ── Feed palettes ────────────────────────────────────
  static const Color feedNavyTop = Color(0xFF0B1023);
  static const Color feedNavyBottom = Color(0xFF1B2340);
  static const Color feedNavyPanel = Color(0xFF0E1328);
  static const Color feedNavyText = Color(0xFFF8FAFF);
  static const Color feedNavySubText = Color(0xFFB9C3E6);
  static const Color feedNavyAccent = Color(0xFF70A7FF);

  static const Color feedForestTop = Color(0xFF0E1A16);
  static const Color feedForestBottom = Color(0xFF1E3A2D);
  static const Color feedForestPanel = Color(0xFF12261F);
  static const Color feedForestText = Color(0xFFF5FFF8);
  static const Color feedForestSubText = Color(0xFFB7D7C6);
  static const Color feedForestAccent = Color(0xFF5FD7A1);

  static const Color feedRoseTop = Color(0xFF1B0E16);
  static const Color feedRoseBottom = Color(0xFF3A1B2B);
  static const Color feedRosePanel = Color(0xFF24101A);
  static const Color feedRoseText = Color(0xFFFFF6F9);
  static const Color feedRoseSubText = Color(0xFFE0B9C6);
  static const Color feedRoseAccent = Color(0xFFF28FB3);

  static const Color feedSkyTop = Color(0xFF0B1720);
  static const Color feedSkyBottom = Color(0xFF193547);
  static const Color feedSkyPanel = Color(0xFF10212D);
  static const Color feedSkyText = Color(0xFFEFF7FF);
  static const Color feedSkySubText = Color(0xFFAFC6D9);
  static const Color feedSkyAccent = Color(0xFF6FD3FF);

  static const Color feedAmberTop = Color(0xFF201A12);
  static const Color feedAmberBottom = Color(0xFF3A2C1B);
  static const Color feedAmberPanel = Color(0xFF221B13);
  static const Color feedAmberText = Color(0xFFFFF7ED);
  static const Color feedAmberSubText = Color(0xFFD9C8AE);
  static const Color feedAmberAccent = Color(0xFFFFC074);
}

class SojornSpacing {
  const SojornSpacing._();

  static const double xxs = 2.0;
  static const double xs = 4.0;
  static const double sm = 12.0;
  static const double md = 16.0;
  static const double lg = 24.0;
  static const double xl = 32.0;

  // Granular steps for fine-tuning
  static const double s6 = 6.0;
  static const double s8 = 8.0;

  static const double postShort = 16.0;
  static const double postMedium = 24.0;
  static const double postLong = 32.0;

  // Card-level margins
  static const double cardGap = 16.0;
  static const double cardGapThread = 4.0;
}

class SojornRadii {
  const SojornRadii._();

  static const double xs = 2.0;
  static const double sm = 4.0;
  static const double md = 8.0;
  static const double lg = 12.0;
  static const double xl = 20.0;
  static const double full = 36.0;
}

class SojornLines {
  const SojornLines._();

  static const double borderThin = 1.0;
  static const double border = 1.5;
  static const double borderStrong = 2.0;
  static const double divider = 1.0;
  static const double dividerStrong = 2.0;
  static const double flow = 3.0;
}

class SojornNav {
  const SojornNav._();

  // Shell bottom nav
  static const double bottomBarHeight = 58.0;
  static const double bottomBarIconSize = 34.0;
  static const double bottomBarVerticalPadding = 0.0;
  static const double bottomFabGap = 48.0;
  static const double bottomBarLabelSize = 10.0;
  static const double bottomBarLabelTopGap = 1.0;

  // Beacon top tab icons
  static const double beaconTabIconSize = 18.0;
}
