/*
 * GENERATED FILE — DO NOT EDIT.
 *
 * Source: packages/design-tokens/src/tokens.css (@concierge/design-tokens)
 * Regenerate: npm run generate:design-tokens
 * Verify:     npm run check:design-tokens
 *
 * The Collector loads this copy with a plain <link> because it has no
 * bundler to resolve the package export the Admin uses.
 */

/**
 * Concierge brand tokens — the limestone/olive ramp AND the shared scale.
 *
 * Purpose: the single source of truth for the design vocabulary shared by the
 * Admin (Payload/Next) and the Collector. Colour values were extracted verbatim
 * from `apps/admin/src/styles/admin.css`; the scale (type, spacing, radius,
 * shadow) was extracted verbatim from the Collector's `styles/design-system.css`
 * so the Admin can stop inventing values (it had 16 distinct font sizes, 7
 * radii and ad-hoc shadows) and speak the same scale as the product's reference
 * surface.
 *
 * Responsibilities: declare shared vocabulary only — brand colours plus the
 * scale. Product-specific mappings (Payload's `--theme-*`, the Collector's
 * `--color-*`) belong to their own stylesheets and must not be declared here.
 *
 * Dependencies: none. This file is plain CSS so both a bundler (`@import
 * '@concierge/design-tokens/css'`) and a byte-for-byte generator can read it.
 *
 * The Collector receives this whole file through the generated copy
 * (`styles/tokens.generated.css`), including the scale it already declares
 * unprefixed in `design-system.css`. That is deliberate and safe: the names here
 * are namespaced (`--cms-*`) and never collide with the Collector's
 * `--color-*`/`--radius-*`/`--text-*`; the duplication costs ~2 KB of CSS and
 * buys one source of truth. The alternative — two hand-kept copies of the same
 * scale — is what the 16 font sizes in the Admin were made of.
 *
 * Consumers must not hand-edit the Collector's generated copy
 * (`styles/tokens.generated.css`); run `npm run generate:collector-tokens`.
 * `tests/test_design_tokens_parity.test.js` fails if a scale value here drifts
 * from the Collector's `styles/design-system.css`.
 */

:root {
  /* Limestone: warm paper surfaces, from lightest to the border tone. */
  --cms-limestone-50: #f8f6ee;
  --cms-limestone-100: #efeadb;
  --cms-limestone-200: #ded4bb;
  --cms-limestone-400: #a99f86;

  /* Olive: functional foreground, from the brightest accent to near-black. */
  --cms-olive-500: #596f42;
  --cms-olive-600: #4a5143;
  --cms-olive-700: #374636;
  --cms-olive-800: #273626;
  --cms-olive-900: #182618;

  /* Semantic colours: the Admin mapped "success" to olive and let Payload's
     defaults (blue/red/orange) handle the rest, so error/warning/info were off
     brand. These are the Collector's values, verbatim. */
  --cms-primary: #5c6b4a;
  --cms-secondary: #4a453d;
  --cms-bg: #f5f2ec;
  --cms-surface: #ffffff;
  --cms-success: #4a7c59;
  --cms-success-light: #e3ede5;
  --cms-success-dark: #2f5239;
  --cms-error: #b0433b;
  --cms-error-light: #f6e2df;
  --cms-error-dark: #7e2f29;
  --cms-warning: #9a5b1f;
  --cms-warning-light: #f5e8d5;
  --cms-warning-dark: #6e3f14;
  --cms-info: #3d5a80;
  --cms-info-light: #e3eaf2;
  --cms-info-dark: #27405f;

  /* Typography: families are self-hosted by each app (next/font in the Admin,
     the Collector's own <link>), so these are the stacks, not the loading. */
  --cms-font-sans: 'DM Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --cms-font-display: 'Cormorant Garamond', 'Times New Roman', Georgia, serif;
  --cms-font-mono: 'JetBrains Mono', 'SF Mono', 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace;

  /* Type scale */
  --cms-text-xs: 0.75rem;
  --cms-text-sm: 0.875rem;
  --cms-text-base: 1rem;
  --cms-text-lg: 1.125rem;
  --cms-text-xl: 1.25rem;
  --cms-text-2xl: 1.5rem;
  --cms-text-3xl: 1.875rem;
  --cms-text-4xl: 2.25rem;
  --cms-text-5xl: 3rem;

  /* Spacing (4px base) */
  --cms-spacing-px: 1px;
  --cms-spacing-0-5: 0.125rem;
  --cms-spacing-1: 0.25rem;
  --cms-spacing-1-5: 0.375rem;
  --cms-spacing-2: 0.5rem;
  --cms-spacing-2-5: 0.625rem;
  --cms-spacing-3: 0.75rem;
  --cms-spacing-3-5: 0.875rem;
  --cms-spacing-4: 1rem;
  --cms-spacing-5: 1.25rem;
  --cms-spacing-6: 1.5rem;
  --cms-spacing-7: 1.75rem;
  --cms-spacing-8: 2rem;
  --cms-spacing-9: 2.25rem;
  --cms-spacing-10: 2.5rem;
  --cms-spacing-11: 2.75rem;
  --cms-spacing-12: 3rem;
  --cms-spacing-14: 3.5rem;
  --cms-spacing-16: 4rem;
  --cms-spacing-20: 5rem;
  --cms-spacing-24: 6rem;
  --cms-spacing-32: 8rem;

  /* Radius — the steps plus the collection surfaces' semantic names. */
  --cms-radius-none: 0;
  --cms-radius-sm: 0.125rem;
  --cms-radius: 0.25rem;
  --cms-radius-md: 0.375rem;
  --cms-radius-lg: 0.5rem;
  --cms-radius-xl: 0.75rem;
  --cms-radius-2xl: 1rem;
  --cms-radius-3xl: 1.5rem;
  --cms-radius-full: 9999px;
  --cms-radius-card: 0.875rem;
  --cms-radius-card-inner: 0.75rem;
  --cms-radius-input: 0.75rem;

  /* Shadows */
  --cms-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  --cms-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
  --cms-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
  --cms-shadow-md: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  --cms-shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  --cms-shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  --cms-shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06);
  --cms-shadow-hover: 0 6px 12px -2px rgba(0, 0, 0, 0.15), 0 3px 6px -2px rgba(0, 0, 0, 0.08);
  --cms-shadow-active: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 1px 2px -1px rgba(0, 0, 0, 0.12);

  /* Motion: the Carbon "productive" set — three curves and four durations.
     Named by intent, not by value, so a surface can say "enter" instead of
     picking a bezier. Micro-interactions (hover, press) live in the 70-110ms
     band; a panel reveal in the 150-240ms band. */
  --cms-ease-standard: cubic-bezier(0.2, 0, 0.38, 0.9);
  --cms-ease-entrance: cubic-bezier(0, 0, 0.38, 0.9);
  --cms-ease-exit: cubic-bezier(0.2, 0, 1, 0.9);
  --cms-duration-fast: 70ms;
  --cms-duration-base: 110ms;
  --cms-duration-slow: 150ms;
  --cms-duration-slower: 240ms;

  /* Focus ring and control geometry. Shared because both surfaces must agree
     on what a focusable control looks like — the ring is the only affordance
     that survives every theme. */
  --cms-focus-ring-width: 2px;
  --cms-focus-ring-offset: 2px;
  --cms-control-height: 2.5rem;
  --cms-control-height-compact: 2rem;
}
