/* ==========================================================================
   PIKNIKK.IN — DESIGN TOKENS
   Visual direction: NATURAL EDITORIAL OUTDOOR
   Single source of truth for colour, type, spacing, radius, shadow, motion.
   Never write raw hex/px values in component styles — use these tokens.
   ========================================================================== */

:root {
  /* ---------------------------------------------------------------- */
  /* COLOUR                                                           */
  /* ---------------------------------------------------------------- */
  --color-bg: #f7f5ef;
  --color-surface: #ffffff;
  --color-sand: #ede7da;
  --color-sand-deep: #e3dbc9;
  --color-primary: #314638;
  --color-primary-dark: #23352a;
  --color-text: #1e211f;
  --color-text-muted: #6f746f;
  --color-border: #dcddd7;
  --color-success: #477a58;
  --color-warning: #b28a4a;
  --color-danger: #9b4a3f;

  /* Derived / functional */
  --color-on-primary: #f7f5ef;
  --color-focus-ring: #314638;
  --color-overlay: rgba(30, 33, 31, 0.55);
  --color-success-soft: #e6efe8;
  --color-warning-soft: #f5ecdc;
  --color-danger-soft: #f4e5e2;

  /* ---------------------------------------------------------------- */
  /* TYPOGRAPHY                                                       */
  /* Modern editorial sans-serif; system stack = zero network cost.    */
  /* ---------------------------------------------------------------- */
  --font-sans: "Inter", "Segoe UI", system-ui, -apple-system, "Helvetica Neue",
    Arial, sans-serif;
  --font-display: "Inter Tight", "Inter", "Segoe UI", system-ui, -apple-system,
    sans-serif;

  /* Fluid type scale — mobile-first, scales with viewport, capped on desktop */
  --text-display: clamp(2.5rem, 8vw, 4.5rem);
  --text-h1: clamp(2rem, 6vw, 3rem);
  --text-h2: clamp(1.5rem, 4.5vw, 2.125rem);
  --text-h3: clamp(1.125rem, 3vw, 1.375rem);
  --text-body-lg: clamp(1.0625rem, 2.2vw, 1.1875rem);
  --text-body: 1rem;
  --text-small: 0.875rem;
  --text-label: 0.75rem;
  --text-cta: 0.9375rem;

  --leading-tight: 1.05;
  --leading-snug: 1.2;
  --leading-normal: 1.5;
  --leading-relaxed: 1.65;

  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;

  --tracking-display: -0.03em;
  --tracking-heading: -0.02em;
  --tracking-label: 0.12em;

  /* ---------------------------------------------------------------- */
  /* SPACING SCALE — 4 / 8 / 12 / 16 / 24 / 32 / 48 / 64 / 80 / 120    */
  /* ---------------------------------------------------------------- */
  --space-1: 0.25rem;   /* 4  */
  --space-2: 0.5rem;    /* 8  */
  --space-3: 0.75rem;   /* 12 */
  --space-4: 1rem;      /* 16 */
  --space-6: 1.5rem;    /* 24 */
  --space-8: 2rem;      /* 32 */
  --space-12: 3rem;     /* 48 */
  --space-16: 4rem;     /* 64 */
  --space-20: 5rem;     /* 80 */
  --space-30: 7.5rem;   /* 120 */

  /* Section rhythm: smaller on mobile, generous on desktop */
  --section-y: var(--space-12);
  --section-y-lg: var(--space-20);

  /* ---------------------------------------------------------------- */
  /* RADIUS — restrained, mature. Not "everything is a pill".          */
  /* ---------------------------------------------------------------- */
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-input: 12px;
  --radius-button: 12px;
  --radius-lg: 18px;
  --radius-image: 20px;
  --radius-pill: 999px;

  /* ---------------------------------------------------------------- */
  /* ELEVATION — subtle only. No heavy drop shadows.                   */
  /* ---------------------------------------------------------------- */
  --shadow-xs: 0 1px 2px rgba(30, 33, 31, 0.05);
  --shadow-sm: 0 2px 8px rgba(30, 33, 31, 0.06);
  --shadow-md: 0 8px 24px rgba(30, 33, 31, 0.08);

  /* ---------------------------------------------------------------- */
  /* LAYOUT                                                           */
  /* ---------------------------------------------------------------- */
  --container-max: 1200px;
  --container-narrow: 720px;
  --container-pad: var(--space-4);
  --navbar-h: 60px;

  /* ---------------------------------------------------------------- */
  /* MOTION — feel alive, not distracting.                            */
  /* ---------------------------------------------------------------- */
  --ease-out: cubic-bezier(0.22, 0.61, 0.36, 1);
  --duration-fast: 140ms;
  --duration-base: 220ms;
  --duration-slow: 380ms;

  --z-sticky: 100;
  --z-nav: 200;
  --z-drawer: 300;
  --z-toast: 400;
}

@media (min-width: 768px) {
  :root {
    --container-pad: var(--space-8);
    --section-y: var(--space-16);
    --navbar-h: 72px;
  }
}
