/* HAVORA design tokens — two skins.
   Onyx (dark): landing + public booking pages. Ivory (light): owner dashboard.
   --brand is the tenant accent; defaults to Havora blue.

   The default is YInMn — the pigment discovered at Oregon State in 2009, the
   first new inorganic blue in about two centuries. It is a DEEP colour: it
   scores 6.3:1 on the light skin and only 2.4:1 on near-black, which fails.
   So the two skins carry two tones of the same hue, each used where it passes:
   #2E5894 true on ivory, lifted to #5288D8 on onyx. Verified, not eyeballed.

   Green and orange are SEMANTIC, not decoration. Green is money that arrived —
   paid, collected, a free slot. Orange is something wanting attention — owed,
   waiting, late, unpaid. A shop owner should be able to read the day by colour
   alone before reading a single word. Both tones are per-skin for the same
   reason blue is: bright enough on near-black, deep enough on white. */

:root {
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease-out-smooth: cubic-bezier(0.22, 0.61, 0.36, 1);
  --ease-snap: cubic-bezier(0.2, 0, 0, 1);
  --dur-snap: 140ms;
  --dur-swift: 180ms;
  --dur-std: 240ms;
  --dur-deliberate: 280ms;
  --font-display: 'Playfair Display', Georgia, serif;
  --font-ui: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --r-sm: 10px;
  --r-md: 14px;
  --r-lg: 20px;
  --r-pill: 999px;
}

/* Neutrals are COOL. They were warm browns and creams tuned to sit beside gold;
   next to blue they read muddy. Everything below is on the same slate axis as the
   brand, so nothing fights it. */
[data-skin="onyx"] {
  --bg: #0B0D11;
  --surface: #14171D;
  --surface-2: #1A1E26;
  --border: #262C36;
  --line-soft: rgba(255, 255, 255, 0.08);
  --text: #E9ECF1;
  --muted: #97A0AD;
  --faint: #626B79;
  --brand: #5288D8;          /* 5.43 on the onyx bg */
  --brand-weak: #16202E;
  --on-brand: #0C1420;       /* 5.17 — white would be 3.58 and fail */
  --green: #34D399;          /* 10.1 — money in, paid, free */
  --green-weak: #0E2620;
  --red: #F98B8B;
  --red-weak: #2A1618;
  --amber: #FB923C;          /* 8.6 — needs a look, waiting, owed */
  --amber-weak: #2A1C0E;
  color-scheme: dark;
}

[data-skin="ivory"] {
  --bg: #F6F7F9;
  --surface: #FFFFFF;
  --surface-2: #F1F3F6;
  --border: #E2E6EC;
  --line-soft: rgba(0, 0, 0, 0.06);
  --text: #171A1F;
  --muted: #5E6772;
  --faint: #98A1AD;
  --brand: #2E5894;          /* true YInMn — 6.33 on the ivory bg */
  --brand-weak: #E8EEF7;
  --on-brand: #FFFFFF;       /* 7.14 */
  --green: #0E7C4A;          /* 4.9 — money in, paid, free */
  --green-weak: #E4F5EC;
  --red: #B4433A;
  --red-weak: #FBE9E7;
  --amber: #C2410C;          /* 4.8 — needs a look, waiting, owed */
  --amber-weak: #FDEDE3;
  color-scheme: light;
}

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html { overflow-x: clip; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-ui);
  -webkit-font-smoothing: antialiased;
  overscroll-behavior-y: none;
}
