/* Residency design tokens — design 08 "Poster". One source. The facility repo
   consumes this file as a versioned artifact; drift is a CI failure (hash
   compare). Interior variant at the bottom. See DESIGN.md for the ruling. */
:root {
  /* ground + ink — near-black, poster contrast */
  --r-ground: #111111;
  --r-ground-alt: #161616;
  --r-panel: #181818;
  --r-panel-deep: #1f1f1f;
  --r-ink: #f5f2ec;
  --r-ink-muted: #b8b6b0;
  --r-ink-strong: #ece8e0;
  --r-ink-secondary: #8c8c86;
  /* action — the accent doubles as the interactive color; there is no separate
     "action green" the way the old seafoam system had chrome vs. accent */
  --r-action: #edb0e6;
  --r-action-deep: #d34bbb;
  --r-action-surface: #281524;
  --r-action-selection: #382032;
  /* accent — the one color. #edb0e6 on #111 measures 10.8:1 (WCAG AAA);
     apps/public/test/contrast.test.ts reads this file and verifies it */
  --r-accent: #edb0e6;
  /* hairlines */
  --r-line: #333333;
  --r-line-soft: #242424;
  --r-line-translucent: rgba(245, 242, 236, 0.14);
  --r-line-soft-translucent: rgba(245, 242, 236, 0.08);
  --r-line-hair: rgba(245, 242, 236, 0.16);
  /* status — verified renders in the accent; anything else carries no color at
     all (text + icon only). Never hue-only regardless (dated-claim enforces
     icon + label alongside color). */
  --r-verified: #edb0e6;
  --r-attested: #8c8c86;
  --r-stale: #6e6e6a;
  /* the portrait treatment (bleeds right, 38% width, full height) */
  --r-portrait-filter: grayscale(1) contrast(1.25) brightness(0.72);
  --r-portrait-blend: luminosity;
  --r-portrait-opacity: 0.55;
  --r-shadow: 0 24px 60px -30px rgba(0, 0, 0, 0.6);
  --r-grain-opacity: 0.035;
  --r-grain-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");

  /* typography + measure — canonical names consumed by every surface */
  --r-font-display: "Archivo Black", "Arial Black", sans-serif;
  --r-font-ui: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --r-font-body: var(--r-font-ui);
  --r-content-max: 70rem;

  /* type scale (1.25 ratio) */
  --r-text-xs: 0.8rem;
  --r-text-sm: 0.9rem;
  --r-text-base: 1rem;
  --r-text-lg: 1.25rem;
  --r-text-xl: 1.563rem;
  --r-text-2xl: 1.953rem;
  --r-text-3xl: 2.441rem;

  /* spacing (4px base) */
  --r-space-1: 0.25rem;
  --r-space-2: 0.5rem;
  --r-space-3: 0.75rem;
  --r-space-4: 1rem;
  --r-space-6: 1.5rem;
  --r-space-8: 2rem;
  --r-space-12: 3rem;

  /* motion — reduced-motion collapses these to 0 */
  --r-ease: cubic-bezier(0.25, 0.6, 0.3, 1);
  --r-dur-quick: 140ms;
  --r-dur-gentle: 260ms;

  /* named breakpoints (min-widths); --r-bp-panel is the office-lens width */
  --r-bp-narrow: 28rem;
  --r-bp-panel: 38rem;
  --r-bp-wide: 64rem;

  /* touch + a11y floors (WCAG 2.2 AA) */
  --r-touch-min: 44px;
  --r-focus-ring: 2px solid var(--r-accent);
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --r-dur-quick: 0ms;
    --r-dur-gentle: 0ms;
  }
}

/* Interior variant — same system, slightly lifted ground, for the facility's
   rooms. The office panel keeps using the SAME components with these values.
   One accent, one ground family — the interior does not re-hue. */
[data-r-theme="interior"] {
  --r-ground: #1a1a1a;
  --r-panel: #212121;
  --r-panel-deep: #272727;
}
