:root {
  /* surfaces / neutrals (green-ramp tints, Open City brand) */
  --bg:#f3fce8; --surface:#ffffff; --surface-2:#eef7e0; --inset:#e4f1d3;
  --ink:#1b2410; --muted:#54614a; --hint:#7f8d72;
  --line:rgba(27,36,16,.10); --line2:rgba(27,36,16,.18);

  /* brand green (primary / positive) */
  --green:#5e9b48; --green-d:#457a31; --green-soft:#dcf1c9; --green-ring:#c6eaa0;

  /* brand red (alert / bad) */
  --red:#d33a4c; --red-d:#b12a3a; --red-soft:#ffe7e6; --red-ring:#ffadac;

  /* brand yellow (highlighter mark / warn) */
  --yellow:#ffd527; --yellow-soft:#fff3c4; --yellow-ink:#6b5300; --yellow-line:#f0dd8a;

  /* brand lime accent — dark-background use only (near-invisible on white) */
  --lime:#c8e537;

  /* fixed-light chip behind partner logos — the logo art is theme-agnostic dark
     ink, so it needs a guaranteed-light backdrop in dark mode too (same value
     in both theme blocks, like --lime). The fallback-ink pairs with it for the
     onerror text fallback, which also sits on that fixed-light chip. */
  --footer-logo-bg:#ffffff;
  --footer-logo-fallback-ink:#1b2410;

  /* kept for back-compat, no longer brand-critical */
  --violet:#6d4bd6;

  /* Amenities benchmark badges/progress tiers only (categorical color-coding,
     confirmed with the requester) — --blue moves out of "back-compat only" to
     back this; the rest are new. Not for general reuse elsewhere in the app. */
  --blue:#2563c9; --teal:#0f8a7e; --indigo:#4b53c9; --cyan:#0891b2;
  --gray:#6b7280; --orange:#c2660a; --light-green:#7cb342;

  --radius:14px; --radius-m:11px; --radius-s:8px; --radius-l:18px;

  /* elevation scale (material) */
  --shadow-1:0 1px 2px rgba(27,36,16,.06), 0 1px 3px rgba(27,36,16,.10);
  --shadow-2:0 2px 6px rgba(27,36,16,.08), 0 8px 18px rgba(27,36,16,.12);
  --shadow-3:0 10px 24px rgba(27,36,16,.14), 0 18px 48px rgba(27,36,16,.18);
  --shadow:var(--shadow-2); --shadow-s:var(--shadow-1);

  /* spacing scale (4pt) */
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px;
  --space-5:24px; --space-6:32px; --space-7:48px;

  --ease-out:cubic-bezier(.2,.7,.2,1); --dur:.18s;

  /* font roles */
  --font-body:"PT Sans", system-ui, -apple-system, Roboto, Helvetica, Arial, sans-serif;
  --font-stat:"Manrope", var(--font-body);
  --font-display:"Manrope", system-ui, sans-serif;
}

[data-theme="dark"] {
  --bg:#10160b; --surface:#1a2113; --surface-2:#222c18; --inset:#2a3620;
  --ink:#eef3e6; --muted:#aab89a; --hint:#7d8b6d;
  --line:rgba(238,243,230,.10); --line2:rgba(238,243,230,.18);

  --green:#92c56e; --green-d:#c6eaa0; --green-soft:#233318; --green-ring:#3c5228;
  --red:#f56a6d; --red-d:#ffadac; --red-soft:#3a1c1d; --red-ring:#5a2b2c;
  --yellow:#ffd527; --yellow-soft:#3a3212; --yellow-ink:#f3dfa0; --yellow-line:#5a4d24;
  --lime:#c8e537;
  --footer-logo-bg:#ffffff;
  --footer-logo-fallback-ink:#1b2410;
  --violet:#9c85f0;
  --blue:#5b8fe0; --teal:#5fcfc0; --indigo:#9aa3f0; --cyan:#5fd0e8;
  --gray:#a3a9b3; --orange:#f0a860; --light-green:#a8d876;

  --shadow-1:0 1px 2px rgba(0,0,0,.35), 0 1px 3px rgba(0,0,0,.45);
  --shadow-2:0 2px 6px rgba(0,0,0,.40), 0 8px 18px rgba(0,0,0,.50);
  --shadow-3:0 10px 24px rgba(0,0,0,.55), 0 18px 48px rgba(0,0,0,.60);
  --shadow:var(--shadow-2); --shadow-s:var(--shadow-1);
}

[data-theme="dark"] mark { color:var(--yellow-ink); background:var(--yellow-soft); }
[data-theme="dark"] .candphoto {
  background: repeating-linear-gradient(135deg, var(--inset), var(--inset) 8px, #2c3830 8px, #2c3830 16px);
}
