/* Villa Real Escapes — locked tokens
 * Palette taken from the live site, per the design call: "Colour: same as original".
 * Navy #021032 · ink #16292f · champagne gold #d0b38a · cream #f8f7f1 / #faf8f5
 * Playfair Display (display, roman only) + Plus Jakarta Sans (body).
 * Nothing in the stylesheets may declare a raw colour or font-family — use these.
 */

:root {
  /* Primitives — locked, do not substitute */
  --navy: #021032;
  --ink: #16292f;
  --gold: #d0b38a;
  --gold-deep: #a8865b;
  --cream: #f8f7f1;
  --cream-warm: #faf8f5;
  --cream-deep: #efe9dc;
  --slate: #5d6a6e;

  /* Semantic */
  --color-primary: var(--navy);
  --color-on-primary: var(--cream);
  --color-secondary: var(--ink);
  --color-accent: var(--gold);
  --color-accent-deep: var(--gold-deep);
  --color-on-accent: var(--navy);
  --color-background: var(--cream);
  --color-paper-2: var(--cream-warm);
  --color-paper-3: var(--cream-deep);
  --color-foreground: var(--ink);
  --color-muted: var(--slate);
  --color-rule: color-mix(in oklab, var(--gold) 38%, var(--cream));
  --color-rule-strong: color-mix(in oklab, var(--gold) 70%, var(--cream));
  --color-border: color-mix(in oklab, var(--gold) 55%, var(--navy) 12%);
  --color-focus: var(--gold-deep);
  --color-veil: color-mix(in oklab, var(--navy) 52%, transparent);
  --color-veil-strong: color-mix(in oklab, var(--navy) 74%, transparent);
  --color-glass: color-mix(in oklab, var(--cream) 14%, transparent);
  --color-glass-border: color-mix(in oklab, var(--cream) 34%, transparent);
  --color-header-solid: color-mix(in oklab, var(--cream-warm) 96%, transparent);

  /* Type */
  --font-display: "Playfair Display", "Iowan Old Style", "Times New Roman", serif;
  --font-body: "Plus Jakarta Sans", "Segoe UI", system-ui, sans-serif;

  --text-display: clamp(2.1rem, 6.6vw, 6.25rem);
  --text-display-s: clamp(2rem, 4.4vw, 3.9rem);
  --text-4xl: clamp(1.8rem, 3vw, 2.9rem);
  --text-3xl: clamp(1.45rem, 2.2vw, 2.05rem);
  --text-2xl: clamp(1.2rem, 1.7vw, 1.55rem);
  --text-xl: clamp(1.05rem, 1.2vw, 1.2rem);
  --text-lg: 1.0625rem;
  --text-md: 1rem;
  --text-sm: 0.875rem;
  --text-xs: 0.75rem;
  --text-numeral: clamp(2.6rem, 5vw, 4.6rem);

  --track-wide: 0.18em;
  --track-mid: 0.1em;
  --leading-tight: 1.04;
  --leading-snug: 1.28;
  --leading-body: 1.68;
  --measure: 58ch;

  /* Space — density dial 3 (spacious) */
  --space-2xs: 4px;
  --space-xs: 8px;
  --space-sm: 14px;
  --space-md: 24px;
  --space-lg: 34px;
  --space-xl: 52px;
  --space-2xl: 76px;
  --space-3xl: clamp(72px, 9vw, 132px);
  --page-gutter: clamp(20px, 5vw, 72px);
  --band: min(1280px, calc(100% - 2 * var(--page-gutter)));

  /* Motion */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-fast: 160ms;
  --dur: 240ms;
  --dur-slow: 460ms;

  /* Shape + depth */
  --radius-pill: 999px;
  --radius-tight: 2px;
  --radius-control: 4px;
  --rule-hair: 1px;
  --header-h: 88px;

  --shadow-sm: 0 1px 2px color-mix(in oklab, var(--navy) 8%, transparent);
  --shadow-md: 0 10px 28px color-mix(in oklab, var(--navy) 10%, transparent);
  --shadow-lg: 0 22px 52px color-mix(in oklab, var(--navy) 15%, transparent);
  --shadow-xl: 0 34px 74px color-mix(in oklab, var(--navy) 22%, transparent);
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --dur-fast: 1ms;
    --dur: 1ms;
    --dur-slow: 1ms;
  }
}
