/**
 * PetSpot Ecosystem - Design System
 * Base Design Tokens
 * 
 * This file defines the core design system used across all PetSpot sites.
 * Do NOT edit this file per-site. Use site-theme.css for customization.
 */

:root {
  /* ============================================
     TYPOGRAPHY - CONSISTENT ACROSS ALL SITES
     ============================================ */
  
  /* Font Families */
  --font-family-base: 'Inter', system-ui, -apple-system, sans-serif;
  --font-family-display: var(--font-family-heading); /* Uses per-site heading font */
  
  /* Font Sizes - Mobile First */
  --font-size-xs: 0.75rem;      /* 12px */
  --font-size-sm: 0.875rem;     /* 14px */
  --font-size-base: 1rem;       /* 16px */
  --font-size-lg: 1.125rem;     /* 18px */
  --font-size-xl: 1.25rem;      /* 20px */
  --font-size-2xl: 1.5rem;      /* 24px */
  --font-size-3xl: 1.875rem;    /* 30px */
  --font-size-4xl: 2.25rem;     /* 36px */
  --font-size-5xl: 3rem;        /* 48px */
  
  /* Font Weights */
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  
  /* Line Heights */
  --line-height-tight: 1.25;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.75;
  
  /* Letter Spacing */
  --letter-spacing-tight: -0.02em;
  --letter-spacing-normal: 0;
  --letter-spacing-wide: 0.02em;
  
  
  /* ============================================
     COLORS - BASE PALETTE
     Per-site colors defined in site-theme.css
     ============================================ */
  
  /* Grayscale - Consistent across all sites */
  --color-white: #FFFFFF;
  --color-black: #000000;
  --color-gray-50: #F9FAFB;
  --color-gray-100: #F3F4F6;
  --color-gray-200: #E5E7EB;
  --color-gray-300: #D1D5DB;
  --color-gray-400: #9CA3AF;
  --color-gray-500: #6B7280;
  --color-gray-600: #4B5563;
  --color-gray-700: #374151;
  --color-gray-800: #1F2937;
  --color-gray-900: #111827;
  
  /* Brand Colors - Override in site-theme.css */
  --color-primary: #10B981;         /* Default: Emerald */
  --color-primary-dark: #059669;
  --color-primary-light: #34D399;
  --color-accent: #6EE7B7;
  
  /* Semantic Colors - Consistent across all sites */
  --color-success: #10B981;
  --color-warning: #F59E0B;
  --color-error: #EF4444;
  --color-info: #3B82F6;
  
  /* Background Colors */
  --color-background: var(--color-white);
  --color-surface: var(--color-gray-50);
  --color-surface-elevated: var(--color-white);
  
  /* Text Colors */
  --color-text-primary: var(--color-gray-900);
  --color-text-secondary: var(--color-gray-600);
  --color-text-tertiary: var(--color-gray-400);
  
  /* Border Colors */
  --color-border: var(--color-gray-200);
  --color-border-dark: var(--color-gray-300);

  /* Ecosystem family-thread surface — used by the shared Footer's Part 2 across all sites */
  --color-ecosystem-surface: #121417;


  /* ============================================
     APP SHELL / NAVIGATION SEMANTIC TOKENS
     Derived from --color-primary so they auto-adapt per site.
     ============================================ */

  /* Sidebar / nav active state */
  --color-nav-active-bg: color-mix(in srgb, var(--color-primary) 10%, white);
  --color-nav-active-text: var(--color-primary-dark);
  --color-nav-active-icon: var(--color-primary);

  /* Sidebar / nav hover state */
  --color-nav-hover-bg: var(--color-gray-50);
  --color-nav-hover-text: var(--color-gray-900);

  /* Sidebar / nav inactive state */
  --color-nav-inactive-text: var(--color-gray-600);
  --color-nav-inactive-icon: #B5BCC2;

  /* Tab active state */
  --color-tab-active-border: var(--color-primary);
  --color-tab-active-text: var(--color-primary-dark);
  
  
  /* ============================================
     SPACING
     ============================================ */
  
  --spacing-unit: 4px;
  --spacing-0: 0;
  --spacing-1: calc(var(--spacing-unit) * 1);   /* 4px */
  --spacing-2: calc(var(--spacing-unit) * 2);   /* 8px */
  --spacing-3: calc(var(--spacing-unit) * 3);   /* 12px */
  --spacing-4: calc(var(--spacing-unit) * 4);   /* 16px */
  --spacing-5: calc(var(--spacing-unit) * 5);   /* 20px */
  --spacing-6: calc(var(--spacing-unit) * 6);   /* 24px */
  --spacing-8: calc(var(--spacing-unit) * 8);   /* 32px */
  --spacing-10: calc(var(--spacing-unit) * 10); /* 40px */
  --spacing-12: calc(var(--spacing-unit) * 12); /* 48px */
  --spacing-16: calc(var(--spacing-unit) * 16); /* 64px */
  --spacing-20: calc(var(--spacing-unit) * 20); /* 80px */
  --spacing-24: calc(var(--spacing-unit) * 24); /* 96px */
  
  
  /* ============================================
     BORDER RADIUS
     ============================================ */
  
  --radius-none: 0;
  --radius-sm: 4px;     /* Inputs, small cards */
  --radius-md: 8px;     /* Cards, modals */
  --radius-lg: 16px;    /* Large cards */
  --radius-xl: 24px;    /* Hero sections */
  --radius-full: 9999px; /* Pills, buttons */
  
  
  /* ============================================
     SHADOWS
     ============================================ */
  
  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  
  
  /* ============================================
     TRANSITIONS
     ============================================ */
  
  --transition-fast: 150ms ease-in-out;
  --transition-base: 200ms ease-in-out;
  --transition-slow: 300ms ease-in-out;
  
  
  /* ============================================
     BREAKPOINTS (for reference)
     Use with media queries
     ============================================ */
  
  --breakpoint-sm: 640px;   /* Mobile landscape */
  --breakpoint-md: 768px;   /* Tablet */
  --breakpoint-lg: 1024px;  /* Desktop */
  --breakpoint-xl: 1280px;  /* Wide desktop */
  
  
  /* ============================================
     Z-INDEX SCALE
     ============================================ */
  
  --z-index-dropdown: 100;
  --z-index-sticky: 200;
  --z-index-header: 300;
  --z-index-modal-backdrop: 400;
  --z-index-modal: 500;
  --z-index-toast: 600;
  --z-index-tooltip: 700;
}


/* ============================================
   RESPONSIVE TYPOGRAPHY
   ============================================ */

@media (min-width: 768px) {
  :root {
    /* Slightly larger on tablet */
    --font-size-3xl: 2rem;      /* 32px */
    --font-size-4xl: 2.5rem;    /* 40px */
    --font-size-5xl: 3.5rem;    /* 56px */
  }
}

@media (min-width: 1024px) {
  :root {
    /* Even larger on desktop */
    --font-size-4xl: 3rem;      /* 48px */
    --font-size-5xl: 4rem;      /* 64px */
  }
}


/* ============================================
   BASE STYLES
   Applied to all sites automatically
   ============================================ */

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  font-size: 16px; /* Base font size */
}

body {
  font-family: var(--font-family-base);
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
  color: var(--color-text-primary);
  background-color: var(--color-background);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Typography Elements */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-family-heading); /* Per-site heading font */
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
  letter-spacing: var(--letter-spacing-tight);
  color: var(--color-text-primary);
  margin-bottom: var(--spacing-4);
}

h1 {
  font-size: var(--font-size-5xl);
}

h2 {
  font-size: var(--font-size-4xl);
}

h3 {
  font-size: var(--font-size-3xl);
}

h4 {
  font-size: var(--font-size-2xl);
}

h5 {
  font-size: var(--font-size-xl);
}

h6 {
  font-size: var(--font-size-lg);
}

p {
  margin-bottom: var(--spacing-4);
}

a {
  color: var(--color-primary);
  text-decoration: none;
  transition: color var(--transition-fast);
}

a:hover {
  color: var(--color-primary-dark);
}

strong, b {
  font-weight: var(--font-weight-semibold);
}

/* Remove default list styling */
ul, ol {
  list-style: none;
}


/* ============================================
   COMPONENT STYLES
   ============================================ */

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-2);
  padding: var(--spacing-3) var(--spacing-6);
  font-family: var(--font-family-base);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-medium);
  line-height: 1;
  border: none;
  border-radius: var(--radius-full);
  cursor: pointer;
  transition: all var(--transition-fast);
  white-space: nowrap;
}

.btn-primary {
  background-color: var(--color-primary);
  color: var(--color-white);
}

.btn-primary:hover {
  background-color: var(--color-primary-dark);
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}

.btn-primary:active {
  transform: translateY(0);
}

.btn-secondary {
  background-color: var(--color-white);
  color: var(--color-primary);
  border: 2px solid var(--color-primary);
}

.btn-secondary:hover {
  background-color: var(--color-primary);
  color: var(--color-white);
}

.btn-ghost {
  background-color: transparent;
  color: var(--color-text-primary);
}

.btn-ghost:hover {
  background-color: var(--color-gray-100);
}

/* Button Sizes */
.btn-sm {
  padding: var(--spacing-2) var(--spacing-4);
  font-size: var(--font-size-sm);
}

.btn-lg {
  padding: var(--spacing-4) var(--spacing-8);
  font-size: var(--font-size-lg);
}

/* Disabled State */
.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none !important;
}

/* Input Fields */
.input {
  width: 100%;
  padding: var(--spacing-3) var(--spacing-4);
  font-family: var(--font-family-base);
  font-size: var(--font-size-base);
  color: var(--color-text-primary);
  background-color: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  transition: border-color var(--transition-fast);
}

.input:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.1);
}

.input::placeholder {
  color: var(--color-text-tertiary);
}

/* Cards */
.card {
  background-color: var(--color-surface-elevated);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--spacing-6);
  transition: box-shadow var(--transition-base);
}

.card-hover:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-2px);
}

/* Badges */
.badge {
  display: inline-flex;
  align-items: center;
  padding: var(--spacing-1) var(--spacing-3);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-medium);
  border-radius: var(--radius-full);
}

.badge-success {
  /*background-color: #D1FAE5;*/
  background-color: #D3E9C3;
  color: #5E9537;
}

.badge-warning {
  background-color: #FEF3C7;
  color: #D67C0F;
}

.badge-error {
  background-color: #FEE2E2;
  color: #991B1B;
}

.badge-info {
  background-color: #DBEAFE;
  color: #1E40AF;
}


/* ============================================
   UTILITY CLASSES
   ============================================ */

/* Text Utilities */
.text-primary { color: var(--color-text-primary); }
.text-secondary { color: var(--color-text-secondary); }
.text-tertiary { color: var(--color-text-tertiary); }

/* Font Weights */
.font-normal { font-weight: var(--font-weight-normal); }
.font-medium { font-weight: var(--font-weight-medium); }
.font-semibold { font-weight: var(--font-weight-semibold); }
.font-bold { font-weight: var(--font-weight-bold); }

/* Max Width Container */
.container {
  width: 100%;
  max-width: 1280px;
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--spacing-4);
  padding-right: var(--spacing-4);
}

@media (min-width: 768px) {
  .container {
    padding-left: var(--spacing-6);
    padding-right: var(--spacing-6);
  }
}
