/**
 * THE TOKEN CONTRACT = the shadcn/ui theme variables. Every component styles
 * itself through them (`bg-primary`, `text-muted-foreground`, `border-border`,
 * `rounded-xl` over `--radius`, …) and nothing else, so a shadcn site already
 * satisfies the contract with its own `:root` / `.dark` blocks and needs
 * NOTHING from this file. Import it only in a site without a shadcn theme; it
 * is the neutral default set, in a layer below the site's own styles.
 *
 * VERSIONED API: the variable set is shadcn's; a component may add one only
 * with a default here, and that is a minor of this package.
 *
 * AXES. Beyond the shadcn set the package reads a few optional variables, each
 * WITH ITS FALLBACK at the point of use, so an unset axis renders the default.
 * They are deliberately not declared here: a value set on :root would freeze
 * a fallback such as var(--primary) at the root, and a site's `.dark` block
 * could no longer reach it. A site sets an axis where it sets its theme.
 *   --selection / --selection-foreground  picked days, active chips and
 *       toggles, selected options. Fallback --primary / --primary-foreground;
 *       set it where the CTA colour must stay exclusive.
 *   --primary-hover   the hover step of the one conversion action. Fallback
 *       color-mix(in oklab, var(--primary) 90%, transparent).
 *   --offer / --offer-foreground  offer badges (never a price). Fallback a
 *       green pair at >= 4.5:1.
 *   --mark / --mark-foreground  a map pin highlighted from the list. Fallback
 *       --foreground / --background (never --primary).
 *   --accent-text     field labels and accent captions. Fallback
 *       --muted-foreground.
 *   --radius-card     containers (cards, panels, dialogs). Fallback
 *       calc(var(--radius) * 1.4); any border-radius value works.
 *   --radius-pill     labelled one-line controls (the search submit, filter
 *       pills and chips, tabs). Fallback 9999px.
 *   --radius-label    labels, never pressed: card pills and photo badges, fact
 *       pills, the offer chip, map price pins, calendar days and the nights
 *       badge, photo counters, the filter count. Fallback --radius-pill, so
 *       "buttons square, labels round" is `--radius-pill: 0.25rem;
 *       --radius-label: 9999px`.
 *   --radius-control  icon-only controls. Fallback 9999px.
 *   --radius-badge    rating badges. Fallback calc(var(--radius) * 0.8).
 *   --shadow-card     card and popup elevation; `none` removes every package
 *       shadow (the overlays fall back to it). Fallback a soft shadow.
 *   --shadow-overlay  floating layers: picker popovers, select lists, the
 *       calendar's bubbles. Fallback --shadow-card, then each layer's own
 *       shadow; set it where overlays and cards differ.
 *   --text-caption    the smallest text the package renders. Fallback 0.75rem.
 *   --card-image-aspect     card photos. Fallback 5 / 3.
 *   --showcase-item-width   a showcase carousel item. Fallback min(30rem, 82vw).
 *   --results-card-min      the results grid's minimum card width. Fallback 18rem.
 *   --search-hero-label-weight, --search-hero-value-size  the hero search
 *       bar's field labels and values.
 *   --search-panel-offset-top  the room a picker popover keeps above itself
 *       (a sticky nav: calc(var(--nav-h) + 8px)), read at its anchor when it
 *       opens: top collision padding and scroll margin. Fallback 0px.
 *   --cal-months-gap, --cal-nav-duration  the calendar's month gap and its
 *       month-paging animation.
 * Hover motions (--card-fav-hover, --img-arrow-hover-scale, --press-scale)
 * are read by css/motion.css only.
 */
@layer properties, theme, base, voffice-tokens, voffice-components, components, utilities;

@layer voffice-tokens {
  :root {
    --background: oklch(1 0 0);
    --foreground: oklch(0.145 0 0);
    --card: oklch(1 0 0);
    --card-foreground: oklch(0.145 0 0);
    --popover: oklch(1 0 0);
    --popover-foreground: oklch(0.145 0 0);
    --primary: oklch(0.205 0 0);
    --primary-foreground: oklch(0.985 0 0);
    --secondary: oklch(0.97 0 0);
    --secondary-foreground: oklch(0.205 0 0);
    --muted: oklch(0.97 0 0);
    --muted-foreground: oklch(0.556 0 0);
    --accent: oklch(0.97 0 0);
    --accent-foreground: oklch(0.205 0 0);
    --destructive: oklch(0.577 0.245 27.325);
    --border: oklch(0.922 0 0);
    --input: oklch(0.922 0 0);
    --ring: oklch(0.708 0 0);
    --radius: 0.625rem;
    /* Headings inherit the body font unless the site sets its own. */
    --font-heading: var(--font-sans, system-ui, sans-serif);
  }
}
