/* GridPoint Intelligence — color palette.
   Verbatim from repositories/phoenix/assets/colors.json (via gpi-tokens.js).
   The app OVERRIDES all default Tailwind colors; these are the only legal colors. */
:root{
  --gp-black:#000000;--gp-white:#FFFFFF;

  /* Grey — neutral scale. grey-1000 is the html default text color. */
  --gp-grey-25:#F9FAFB;--gp-grey-50:#F2F4F5;--gp-grey-100:#E1E2E3;--gp-grey-200:#CACBCC;
  --gp-grey-300:#B3B4B5;--gp-grey-400:#9D9E9F;--gp-grey-500:#88898A;--gp-grey-600:#737475;
  --gp-grey-700:#5F6060;--gp-grey-800:#4B4C4D;--gp-grey-900:#39393A;--gp-grey-1000:#18191A;

  /* Vibrant blue — primary interactive. Buttons, links, active nav, "active" badges. */
  --gp-vibrant-blue-25:#D2FCFF;--gp-vibrant-blue-30:#D7FFFF;--gp-vibrant-blue-50:#AFFAFF;
  --gp-vibrant-blue-50-40:#AFFAFF66;--gp-vibrant-blue-50-15:#AFFAFF26;
  --gp-vibrant-blue-100:#83EBFF;--gp-vibrant-blue-200:#27E1FF;--gp-vibrant-blue-300:#00CBE0;
  --gp-vibrant-blue-400:#35A9C0;--gp-vibrant-blue-500:#0793AA;--gp-vibrant-blue-600:#037E95;
  --gp-vibrant-blue-700:#006A80;--gp-vibrant-blue-700-20:#006A8033;
  --gp-vibrant-blue-800:#01576C;--gp-vibrant-blue-900:#014459;

  /* Vibrant red — critical / error. */
  --gp-vibrant-red-30:#FFE9E4;--gp-vibrant-red-50:#FFB7A5;--gp-vibrant-red-50-20:#FFB7A533;
  --gp-vibrant-red-100:#FFA090;--gp-vibrant-red-200:#FF897B;--gp-vibrant-red-300:#FF7167;
  --gp-vibrant-red-400:#FF5954;--gp-vibrant-red-500:#F74041;--gp-vibrant-red-600:#DE242F;
  --gp-vibrant-red-700:#C3001D;--gp-vibrant-red-800:#AA000C;--gp-vibrant-red-900:#900000;

  /* Vibrant green — success / positive. */
  --gp-vibrant-green-50:#BCFF88;--gp-vibrant-green-100:#A5F172;--gp-vibrant-green-100-20:#A5F17233;
  --gp-vibrant-green-200:#8FDA5D;--gp-vibrant-green-300:#78C348;--gp-vibrant-green-400:#62AD32;
  --gp-vibrant-green-500:#4B981A;--gp-vibrant-green-600:#398700;--gp-vibrant-green-600-10:#3987001A;
  --gp-vibrant-green-700:#186E00;--gp-vibrant-green-800:#005A00;--gp-vibrant-green-900:#004600;

  /* Vibrant orange — warning / override active. */
  --gp-vibrant-orange-50:#FFD571;--gp-vibrant-orange-50-20:#FFF7E3;--gp-vibrant-orange-100:#FFBF5B;
  --gp-vibrant-orange-200:#FFA946;--gp-vibrant-orange-300:#FF9330;--gp-vibrant-orange-400:#EC7E16;
  --gp-vibrant-orange-500:#E27608;--gp-vibrant-orange-500-10:#E276081A;--gp-vibrant-orange-600:#B95500;
  --gp-vibrant-orange-700:#A14100;--gp-vibrant-orange-800:#892D00;--gp-vibrant-orange-900:#731800;

  /* Information state — submitted / notice. */
  --gp-information-state-50:#BEF0FF;--gp-information-state-100:#A5D9FF;--gp-information-state-200:#8CC3FF;
  --gp-information-state-300:#71AEFF;--gp-information-state-400:#5599FF;--gp-information-state-500:#3484F7;
  --gp-information-state-600:#0074E4;--gp-information-state-600-10:#0074E41A;
  --gp-information-state-700:#005DC9;--gp-information-state-800:#004BB2;--gp-information-state-900:#00399C;

  /* Brand blue — logo, unauthenticated surfaces. */
  --gp-brand-blue-50:#C0EDFF;--gp-brand-blue-100:#8FDFFF;--gp-brand-blue-200:#00CFFF;
  --gp-brand-blue-300:#009BD1;--gp-brand-blue-400:#008FC1;--gp-brand-blue-500:#027BA5;
  --gp-brand-blue-600:#006896;--gp-brand-blue-700:#004972;--gp-brand-blue-800:#002C51;
  --gp-brand-blue-900:#001A33;

  /* Mint green — secondary accent. */
  --gp-mint-green-10:#ECF9F3;--gp-mint-green-50:#9AFFDB;--gp-mint-green-100:#00FFB3;
  --gp-mint-green-200:#00F2AD;--gp-mint-green-300:#00BE8D;--gp-mint-green-400:#00A076;
  --gp-mint-green-500:#048E6D;--gp-mint-green-600:#006D50;--gp-mint-green-700:#00624A;
  --gp-mint-green-800:#004C38;--gp-mint-green-900:#01382A;

  /* Navy — chrome; navy-800 is the Hummingbird kiosk body. */
  --gp-navy-25:#F8F9FA;--gp-navy-50:#F1F3F5;--gp-navy-100:#E6EAF0;--gp-navy-200:#CDD5E0;
  --gp-navy-300:#9BAAC4;--gp-navy-400:#6B7F9E;--gp-navy-500:#3B5578;--gp-navy-600:#2A4766;
  --gp-navy-700:#1A3A55;--gp-navy-800:#0B2C44;--gp-navy-900:#001A33;--gp-navy-1000:#000D1A;
}

/* ---- Semantic aliases: use these in components, not raw scale steps. ---- */
:root{
  --text-primary:var(--gp-grey-1000);
  --text-secondary:var(--gp-grey-800);
  --text-muted:var(--gp-grey-600);
  --text-link:var(--gp-vibrant-blue-600);
  --text-link-hover:var(--gp-vibrant-blue-900);
  --text-error:var(--gp-vibrant-red-300);
  --text-on-dark:var(--gp-white);
  --text-on-dark-secondary:var(--gp-vibrant-blue-100);

  --surface-page:var(--gp-white);
  --surface-page-auth:var(--gp-brand-blue-900);
  --surface-card:var(--gp-white);
  --surface-row:var(--gp-grey-50);
  --surface-input:var(--gp-grey-50);
  --surface-input-focus:var(--gp-white);
  --surface-kiosk:var(--gp-navy-800);
  --surface-kiosk-header:var(--gp-navy-900);
  --surface-topbar:var(--gp-grey-1000);
  --surface-overlay:rgba(57,57,58,0.5); /* grey-900 @ 50% */
  --surface-nav-active:var(--gp-vibrant-blue-50-40);
  --surface-row-hover:var(--gp-vibrant-blue-50-15);

  --border-subtle:var(--gp-grey-50);
  --border-default:var(--gp-grey-100);
  --border-strong:var(--gp-grey-200);
  --border-focus:var(--gp-vibrant-blue-500);
  --border-error:var(--gp-vibrant-red-300);

  --action-primary-bg:var(--gp-vibrant-blue-50);
  --action-primary-bg-hover:var(--gp-vibrant-blue-100);
  --action-primary-fg:var(--gp-vibrant-blue-600);
  --action-secondary-bg:var(--gp-grey-100);
  --action-secondary-bg-hover:var(--gp-grey-200);
  --action-secondary-fg:var(--gp-grey-1000);

  /* Badge semantics — map by MEANING, never by hue. */
  --badge-success-bg:var(--gp-vibrant-green-50);--badge-success-fg:var(--gp-vibrant-green-600);
  --badge-warning-bg:var(--gp-vibrant-orange-50);--badge-warning-fg:var(--gp-vibrant-orange-600);
  --badge-error-bg:var(--gp-vibrant-red-50);--badge-error-fg:var(--gp-vibrant-red-900);
  --badge-active-bg:var(--gp-vibrant-blue-50);--badge-active-fg:var(--gp-vibrant-blue-500);
  --badge-neutral-bg:var(--gp-grey-200);--badge-neutral-fg:var(--gp-grey-800);
  --badge-inactive-bg:var(--gp-grey-600);--badge-inactive-fg:var(--gp-grey-50);
  --badge-info-bg:var(--gp-information-state-600-10);--badge-info-fg:var(--gp-information-state-600);

  /* Flash banners */
  --flash-info-bg:var(--gp-vibrant-blue-50-40);--flash-info-fg:var(--gp-vibrant-blue-500);
  --flash-error-bg:var(--gp-vibrant-red-50-20);--flash-error-fg:var(--gp-vibrant-red-600);
  --flash-success-bg:var(--gp-vibrant-green-100-20);--flash-success-fg:var(--gp-vibrant-green-500);

  /* HVAC efficiency rating scale */
  --rating-optimal:var(--gp-vibrant-green-600);
  --rating-suboptimal:var(--gp-vibrant-orange-600);
  --rating-poor:var(--gp-vibrant-red-900);
}
