/* v2 tokens for theme "gather-earth" v2.1.0 */
:root {
  /* colours */
  --sage-50: #F0F5EE;
  --sage-100: #DCE8D6;
  --sage-200: #B8D1AD;
  --sage-300: #8DB57E;
  --sage-500: #4A8C3F;
  --sage-700: #2B5F2B;
  --sage-800: #1F4520;
  --sage-900: #143015;
  --terra-50: #FDF1EB;
  --terra-100: #F9DDC9;
  --terra-500: #E08B4A;
  --terra-700: #C4652A;
  --terra-800: #A24F1C;
  --neutral-0: #FFFFFF;
  --neutral-50: #FAFAF8;
  --neutral-100: #F5F2EC;
  --neutral-200: #EAE5DA;
  --neutral-300: #D4CFC2;
  --neutral-400: #A8A294;
  --neutral-500: #7A7568;
  --neutral-600: #5C5849;
  --neutral-800: #2C2C2C;
  --neutral-900: #1A1A1A;
  --success-bg: #E8F5E9;
  --success-fg: #2E7D32;
  --warn-bg: #FFF4E5;
  --warn-fg: #C77700;
  --error-bg: #FDECEC;
  --error-fg: #B54343;
  --info-bg: #E3F2FD;
  --info-fg: #1565C0;
  --surface-page: var(--cream, #FAF6F0);
  --surface-card: var(--neutral-0);
  --surface-raised: var(--neutral-0);
  --surface-overlay: rgba(0,0,0,0.4);
  --surface-inverse: var(--neutral-900);
  --surface-rail: #EFEADE;
  --surface-2: rgba(76,55,30,0.05);
  --border-subtle: #DDD3BB;
  --border-strong: #C7BDA1;
  --focus-ring: 0 0 0 3px rgba(43,95,43,0.15);
  --focus-ring-terra: 0 0 0 3px rgba(196,101,42,0.22);
  --green: #2B5F2B;
  --green-light: #4A8C3F;
  --green-pale: #e8f0e4;
  --terracotta: #C4652A;
  --terracotta-light: #e07a3a;
  --cream: #FAF6F0;
  --beige: #E8D5B5;
  --brown: #5C3D2E;
  --text: #2C2C2C;
  --text-light: #6B6457;
  --white: #FFFFFF;
  /* typography */
  --font-display: 'Cabinet Grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  --font-body: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  --font-mono: ui-monospace, 'SF Mono', Monaco, Consolas, 'Liberation Mono', monospace;
  --fs-xs: 0.75rem;
  --fs-sm: 0.875rem;
  --fs-base: 1rem;
  --fs-lg: 1.125rem;
  --fs-xl: 1.375rem;
  --fs-2xl: 1.75rem;
  --fs-3xl: 2.25rem;
  --fs-display: 3rem;
  --leading-tight: 1.15;
  --leading-snug: 1.35;
  --leading-normal: 1.55;
  --leading-relaxed: 1.7;
  --tracking-tight: -0.02em;
  --tracking-normal: 0;
  --tracking-wide: 0.05em;
  --tracking-widest: 0.14em;
  --font-weight-regular: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  /* spacing */
  --space-xs: 4px;
  --space-sm: 8px;
  --space-md: 12px;
  --space-lg: 16px;
  --space-xl: 24px;
  --space-2xl: 32px;
  --space-3xl: 48px;
  --space-4xl: 64px;
  /* radius */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 12px;
  --radius-xl: 24px;
  --radius-full: 9999px;
  /* shadow */
  --shadow-sm: 0 1px 2px rgba(76,55,30,0.08), 0 0 0 1px rgba(76,55,30,0.02);
  --shadow-md: 0 6px 16px rgba(76,55,30,0.09), 0 2px 4px rgba(76,55,30,0.05);
  --shadow-lg: 0 16px 40px rgba(76,55,30,0.10), 0 4px 8px rgba(76,55,30,0.05);
  --shadow-xl: 0 28px 72px rgba(43,38,28,0.22), 0 6px 16px rgba(43,38,28,0.10);
  /* motion */
  --duration-instant: 100ms;
  --duration-fast: 150ms;
  --duration-base: 200ms;
  --duration-slow: 250ms;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.45, 0, 0.55, 1);
  --ease-spring: cubic-bezier(0.32, 0.72, 0, 1);
  --transition: 250ms cubic-bezier(0.16, 1, 0.3, 1);
  /* layout */
  --touch-min: 48px;
  --max-content-width: 900px;
  --max-content-width-wide: 1200px;
  --sidebar-width: 240px;
  --sidebar-width-compact: 64px;
  --header-height: 52px;
  --bottom-nav-height: 64px;
  /* z */
  --z-base: 0;
  --z-sticky: 20;
  --z-nav: 100;
  --z-bottom-nav: 150;
  --z-overlay: 199;
  --z-side-nav: 200;
  --z-modal: 1000;
  --z-sheet: 1999;
  --z-toast: 9999;
  /* avatar */
  --avatar-xs: 22px;
  --avatar-sm: 32px;
  --avatar-md: 40px;
  --avatar-lg: 64px;
  --avatar-xl: 96px;
  /* icon */
  --icon-style: svg;
  --icon-size-sm: 16px;
  --icon-size-md: 20px;
  --icon-size-lg: 24px;
  --icon-stroke: 1.5px;
}

/* theme.css */
/* ── GatherOS Theme: Earth (Default) — v2 ─────────────────────────
   Token values live in theme.json (the v2 contract). This file is
   reserved for behaviour beyond tokens (animations, gradients,
   component-specific overrides). The default theme doesn't need any
   — the migrated tokens render the entire app — so this file ships
   intentionally empty.

   Author note: anything you'd be tempted to put here that's a colour,
   size, radius, shadow, or motion VALUE belongs in theme.json. CSS
   here is for component selectors that need behaviour beyond what
   tokens can express (e.g. dark-mode component overrides, anime
   sparkles, brand-specific gradients).
   ──────────────────────────────────────────────────────────────── */
