:root{
  /* Brand red — sampled from the company mark (assets/logo-mark.jpg) */
  --red-50:#FFF1F0;
  --red-100:#FFDCDA;
  --red-200:#FFB3AE;
  --red-300:#FF7A72;
  --red-400:#FF3B30;
  --red-500:#E60012;  /* primary · 正红 */
  --red-600:#C4000F;  /* hover/press */
  --red-700:#A5000C;
  --red-900:#5E0007;

  /* Neutrals — warm-free, near-pure greys on white */
  --white:#FFFFFF;
  --grey-25:#FAFAFA;
  --grey-50:#F5F6F7;
  --grey-100:#EDEFF1;
  --grey-200:#E1E4E7;
  --grey-300:#C9CED3;
  --grey-400:#9AA1A8;
  --grey-500:#6E767E;
  --grey-600:#4C545B;
  --grey-700:#33393F;
  --grey-800:#22262A;
  --grey-900:#14171A;

  /* Support hues — used sparingly, never as decoration */
  --ink-blue:#1B4F8A;
  --success-500:#1E9E62;
  --warning-500:#E08A00;
  --danger-500:#E60012;

  /* Semantic aliases */
  --brand:var(--red-500);
  --brand-strong:var(--red-600);
  --brand-soft:var(--red-50);
  --brand-line:var(--red-100);

  --text-title:var(--grey-900);
  --text-body:var(--grey-700);
  --text-muted:var(--grey-500);
  --text-faint:var(--grey-400);
  --text-on-brand:var(--white);
  --text-link:var(--red-500);
  --text-link-hover:var(--red-600);

  --surface-page:var(--grey-50);
  --surface-card:var(--white);
  --surface-sunken:var(--grey-100);
  --surface-brand:var(--red-500);
  --surface-brand-soft:var(--red-50);
  --surface-dark:var(--grey-900);

  --border-hairline:var(--grey-200);
  --border-strong:var(--grey-300);
  --border-brand:var(--red-500);

  /* Brand gradient — flat red to deep red, only on banners/CTA bars */
  --grad-brand:linear-gradient(135deg,var(--red-500) 0%,var(--red-700) 100%); /* @kind color */
  --grad-brand-soft:linear-gradient(180deg,var(--red-50) 0%,var(--white) 100%);
  /* Protection scrim for text over photography */
  --scrim-photo:linear-gradient(180deg,rgba(20,23,26,0) 0%,rgba(20,23,26,.72) 100%); /* @kind other */
}