:root{
  /* --- Base ramps ------------------------------------------------- */
  /* Canopy — deep rainforest green, the primary brand colour */
  --canopy-900:#0C2116;
  --canopy-800:#12301F;
  --canopy-700:#1B4430;
  --canopy-600:#2A6141;
  --canopy-500:#3B7C55;
  --canopy-300:#8FB79B;
  --canopy-100:#DCE8DE;

  /* Mangrove — brackish teal, secondary habitat colour */
  --mangrove-800:#0B3F3E;
  --mangrove-600:#12726E;
  --mangrove-400:#4FA39D;
  --mangrove-100:#D6E9E6;

  /* Laterite — Malaysian red earth / trail clay, warm accent */
  --laterite-700:#8C3B1E;
  --laterite-600:#B4552F;
  --laterite-400:#D98A5F;
  --laterite-100:#F6E2D5;

  /* Hornbill — casque yellow, used sparingly for highlight */
  --hornbill-600:#C98A17;
  --hornbill-500:#E0A32E;
  --hornbill-200:#F7E3B4;

  /* Kingfisher — flash blue, links and informational states */
  --kingfisher-700:#1F5183;
  --kingfisher-500:#2C6FA6;
  --kingfisher-200:#CFE0EF;

  /* Neutrals — warm parchment through ink, never pure grey */
  --ink-900:#1A1712;
  --ink-800:#211E18;
  --ink-600:#4A4539;
  --ink-500:#5C574B;
  --ink-400:#877F6C;
  --line-300:#DDD5C2;
  --line-200:#E9E2D2;
  --paper-100:#FBF8F0;
  --paper-200:#F6F1E4;
  --paper-300:#EFE8D7;
  --white:#FFFFFF;

  /* --- Semantic aliases ------------------------------------------ */
  --text-body:var(--ink-800);
  --text-heading:var(--canopy-800);
  --text-muted:var(--ink-500);
  --text-faint:var(--ink-400);
  --text-inverse:var(--paper-200);
  --text-link:var(--kingfisher-700);
  --text-link-hover:var(--laterite-600);
  --text-on-accent:var(--paper-100);

  --surface-page:var(--paper-200);
  --surface-card:var(--paper-100);
  --surface-sunken:var(--paper-300);
  --surface-raised:var(--white);
  --surface-canopy:var(--canopy-800);
  --surface-canopy-deep:var(--canopy-900);
  --surface-mangrove:var(--mangrove-800);
  --surface-tint:var(--canopy-100);

  --border-hairline:var(--line-300);
  --border-soft:var(--line-200);
  --border-strong:var(--canopy-600);
  --border-inverse:rgba(251,248,240,.24);

  --accent-primary:var(--canopy-700);
  --accent-primary-hover:var(--canopy-600);
  --accent-primary-press:var(--canopy-800);
  --accent-warm:var(--laterite-600);
  --accent-warm-hover:var(--laterite-700);
  --accent-highlight:var(--hornbill-500);

  --focus-ring:var(--hornbill-500);

  --status-success:var(--canopy-600);
  --status-success-bg:var(--canopy-100);
  --status-info:var(--kingfisher-500);
  --status-info-bg:var(--kingfisher-200);
  --status-warning:var(--hornbill-600);
  --status-warning-bg:var(--hornbill-200);
  --status-danger:#A32E22;
  --status-danger-bg:#F6DAD5;

  /* Habitat coding — used on tour cards, filters, map keys */
  --habitat-rainforest:var(--canopy-600);
  --habitat-wetland:var(--mangrove-600);
  --habitat-coastal:var(--kingfisher-500);
  --habitat-montane:#5C6B8A;
  --habitat-nocturnal:var(--canopy-900);

  /* Overlays & protection gradients over photography */
  --overlay-scrim:rgba(12,33,22,.55); /* @kind color */
  --overlay-scrim-strong:rgba(12,33,22,.74); /* @kind color */
    --protect-bottom:linear-gradient(to top,rgba(12,33,22,.88) 0%,rgba(12,33,22,.55) 38%,rgba(12,33,22,0) 78%); /* @kind other */
    --protect-top:linear-gradient(to bottom,rgba(12,33,22,.65) 0%,rgba(12,33,22,0) 70%); /* @kind other */
}
