/* Hallmark · pre-emit critique: P5 H5 E4 S5 R5 V4 */
/* Hallmark · genre: modern-minimal · macrostructure: mobile workbench / long document · design-system: design.md · designed-as-app
 * theme: custom · vibe: "calm pet-care, soft organic, clear" · paper: oklch(98.43% 0.0040 106.47) · accent: oklch(53.51% 0.0223 147.62)
 * display: Yuanti SC / SF Pro Rounded · body: system / PingFang SC · axes: light / rounded-sans / chromatic-sage
 * studied: no · context: explicit · nav: N5 solid top-left · footer: Ft2 · contrast: pass (40–41)
 * slop: pass (42–45) · honest: pass (46) · chrome: pass (47) · tokens: pass (48)
 * responsive: pass (49) · icons: pass (30) · mobile: pass (34, 49, 50–57) · v1.0.0
 */

:root {
  /* Primitive colour tokens. Source anchors: #9BCDD8 #D9E9DF #F6E3D2
     #EABFAC #CCD3C3 #657166 #FAFAF7 #FFFFFF #383430. */
  --primitive-mist-blue: oklch(81.70% 0.0542 212.69);
  --primitive-mint-soft: oklch(91.93% 0.0216 158.57);
  --primitive-cream: oklch(92.66% 0.0309 64.29);
  --primitive-peach-soft: oklch(83.74% 0.0561 45.12);
  --primitive-sage-soft: oklch(85.70% 0.0230 126.27);
  --primitive-sage-deep: oklch(53.51% 0.0223 147.62);
  --primitive-sage-ink: oklch(47.37% 0.0224 162.19);
  --primitive-paper: oklch(98.43% 0.0040 106.47);
  --primitive-white: oklch(100% 0 0);
  --primitive-ink: oklch(32.78% 0.0090 67.51);
  --primitive-ink-secondary: oklch(48.11% 0.0114 72.54);
  --primitive-border: oklch(89.33% 0.0095 100);
  --primitive-danger: oklch(46.87% 0.1028 22.59);
  --primitive-danger-soft: oklch(96.15% 0.0150 20.00);

  /* Semantic colours. */
  --color-bg: var(--primitive-paper);
  --color-surface: var(--primitive-white);
  --color-surface-soft: oklch(97.30% 0.0080 120);
  --color-text-primary: var(--primitive-ink);
  --color-text-secondary: var(--primitive-ink-secondary);
  --color-text-tertiary: oklch(55% 0.0100 80);
  --color-border: var(--primitive-border);
  --color-primary: var(--primitive-sage-deep);
  --color-primary-strong: var(--primitive-sage-ink);
  --color-primary-soft: var(--primitive-sage-soft);
  --color-info: var(--primitive-mist-blue);
  --color-success: var(--primitive-mint-soft);
  --color-reminder: var(--primitive-cream);
  --color-warning-soft: var(--primitive-peach-soft);
  --color-danger: var(--primitive-danger);
  --color-danger-soft: var(--primitive-danger-soft);
  --color-focus: var(--primitive-sage-deep);
  --color-on-primary: var(--primitive-white);
  --color-primary-hover: oklch(47.37% 0.0224 162.19);
  --color-primary-tint: oklch(94.50% 0.0140 132);
  --color-info-tint: oklch(95.00% 0.0190 213);
  --color-success-tint: oklch(96.00% 0.0120 159);
  --color-reminder-tint: oklch(97.00% 0.0140 64);
  --color-warning-tint: oklch(95.50% 0.0220 45);
  --color-header-glass: oklch(100% 0 0 / 0.94);
  --color-surface-glass: oklch(100% 0 0 / 0.92);
  --color-disabled-bg: oklch(94% 0.0060 100);
  --color-disabled-text: oklch(55% 0.0100 80);
  --color-selection: oklch(85.70% 0.0230 126.27 / 0.48);
  --color-focus-ring: oklch(81.70% 0.0542 212.69 / 0.45);
  --color-rule-soft: oklch(89.33% 0.0095 100 / 0.72);

  /* Type. */
  --font-display: "Yuanti SC", "STYuanti-SC-Bold", "SF Pro Rounded", "PingFang SC", "Microsoft YaHei", ui-rounded, system-ui, sans-serif;
  --font-body: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  --font-mono: "SFMono-Regular", Consolas, monospace;
  --font-outlier: var(--font-mono);
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-md: 1.125rem;
  --text-lg: 1.375rem;
  --text-xl: 1.75rem;
  --text-2xl: 2.25rem;
  --text-display: clamp(2rem, 8vw, 2.5rem);

  /* 4-point spacing scale. */
  --space-3xs: 0.25rem;
  --space-2xs: 0.5rem;
  --space-xs: 0.75rem;
  --space-sm: 1rem;
  --space-md: 1.5rem;
  --space-lg: 2rem;
  --space-xl: 3rem;
  --space-2xl: 4.5rem;
  --space-3xl: 6rem;
  --space-4xl: 8rem;
  --space-5xl: 12rem;

  /* Component primitives. */
  --radius-xs: 0.625rem;
  --radius-input: 0.875rem;
  --radius-control: 1rem;
  --radius-card: 1.5rem;
  --radius-pill: 999px;
  --shadow-card: 0 0.5rem 1.5rem oklch(32.78% 0.0090 67.51 / 0.06);
  --shadow-overlay: 0 1rem 2.5rem oklch(32.78% 0.0090 67.51 / 0.12);
  --control-min-size: 2.75rem;
  --focus-ring: 0 0 0 3px var(--color-focus-ring);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --duration-press: 160ms;
  --duration-state: 200ms;
  --dur-micro: 120ms;
  --dur-short: var(--duration-state);
  --dur-long: 420ms;
  --rule-hair: 1px;
  --rule-fine: 2px;

  /* Canonical Hallmark role aliases for portable exports. */
  --color-paper: var(--color-bg);
  --color-paper-2: var(--color-surface);
  --color-paper-3: var(--color-surface-soft);
  --color-ink: var(--color-text-primary);
  --color-ink-2: var(--color-text-secondary);
  --color-rule: var(--color-border);
  --color-rule-2: var(--color-primary-soft);
  --color-muted: var(--color-text-secondary);
  --color-neutral: var(--color-primary-strong);
  --color-accent: var(--color-primary);
  --color-accent-ink: var(--color-on-primary);

  /* Backward-compatible public aliases used by existing modules. */
  --accent-mist-blue: var(--color-info);
  --accent-mint: var(--color-success);
  --accent-apricot: var(--color-reminder);
  --accent-peach: var(--color-warning-soft);
  --accent-sage: var(--color-primary-soft);
  --accent-olive: var(--color-primary);
}
