:root {
  /* Philosophy: Algarve retreat digital companion (light mode) */

  /* Color */
  --color-bg-primary: #f8f5ef;
  --color-bg-secondary: #fffaf2;
  --color-bg-tertiary: #f2ece2;
  --color-bg-inverse: #1f3a44;

  --color-text-primary: #1f2d33;
  --color-text-secondary: #415963;
  --color-text-tertiary: #6f848d;
  --color-text-inverse: #f8f5ef;
  --color-text-link: #0b6f8a;

  --color-border-primary: #d8d2c6;
  --color-border-secondary: #e7e1d6;
  --color-border-focus: #0b6f8a;

  --color-accent-primary: #0b6f8a;
  --color-accent-primary-hover: #095b72;
  --color-accent-primary-active: #074a5d;
  --color-accent-secondary: #c66a3a;

  --color-status-success: #2b7a58;
  --color-status-warning: #b6771f;
  --color-status-error: #b5443c;
  --color-status-info: #2f7395;

  --color-surface-overlay: rgba(28, 39, 45, 0.45);

  /* Booking-specific semantic states */
  --color-availability-4: #4f8d68;
  --color-availability-3: #6ba579;
  --color-availability-2: #d8a64c;
  --color-availability-1: #c97538;
  --color-availability-full: #b5443c;
  --color-availability-blocked: #6a7680;
  --color-booking-mine: #0b6f8a;
  --color-booking-family: #9db9c4;

  /* Spacing (8px base) */
  --space-0: 0;
  --space-1: 2px;
  --space-2: 4px;
  --space-3: 6px;
  --space-4: 8px;
  --space-5: 12px;
  --space-6: 16px;
  --space-7: 24px;
  --space-8: 32px;
  --space-9: 48px;
  --space-10: 64px;
  --space-11: 96px;
  --space-12: 128px;

  /* Typography */
  --font-family-display: "Fraunces", "Times New Roman", serif;
  --font-family-body: "Source Sans 3", "Segoe UI", sans-serif;
  --font-family-mono: "JetBrains Mono", "SFMono-Regular", monospace;

  --font-size-xs: 0.75rem;
  --font-size-sm: 0.875rem;
  --font-size-base: 1rem;
  --font-size-md: 1.125rem;
  --font-size-lg: 1.25rem;
  --font-size-xl: 1.5rem;
  --font-size-2xl: 1.875rem;
  --font-size-3xl: 2.25rem;
  --font-size-4xl: 3rem;

  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;

  --line-height-tight: 1.2;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.7;

  --letter-spacing-tight: -0.015em;
  --letter-spacing-normal: 0;
  --letter-spacing-wide: 0.06em;

  /* Layout */
  --max-width-content: 72ch;
  --max-width-wide: 1100px;
  --max-width-page: 1280px;

  --border-radius-sm: 8px;
  --border-radius-md: 14px;
  --border-radius-lg: 22px;
  --border-radius-full: 9999px;

  --shadow-sm: 0 1px 3px rgba(31, 45, 51, 0.08), 0 1px 2px rgba(31, 45, 51, 0.05);
  --shadow-md: 0 8px 20px rgba(31, 45, 51, 0.1), 0 2px 8px rgba(31, 45, 51, 0.07);
  --shadow-lg: 0 18px 40px rgba(31, 45, 51, 0.14), 0 6px 18px rgba(31, 45, 51, 0.1);
  --shadow-focus: 0 0 0 3px rgba(11, 111, 138, 0.35);

  /* Motion */
  --duration-instant: 50ms;
  --duration-fast: 150ms;
  --duration-normal: 250ms;
  --duration-slow: 400ms;
  --duration-slower: 600ms;

  --easing-default: cubic-bezier(0.4, 0, 0.2, 1);
  --easing-in: cubic-bezier(0.4, 0, 1, 1);
  --easing-out: cubic-bezier(0, 0, 0.2, 1);
  --easing-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);

  /* Responsive breakpoints */
  --breakpoint-sm: 375px;
  --breakpoint-md: 768px;
  --breakpoint-lg: 1024px;
  --breakpoint-xl: 1280px;
  --breakpoint-2xl: 1536px;
}

[data-theme="dark"] {
  /* Philosophy-preserving dark mode: warm coastal dusk */
  --color-bg-primary: #13232a;
  --color-bg-secondary: #19313a;
  --color-bg-tertiary: #24404a;
  --color-bg-inverse: #f1e7d7;

  --color-text-primary: #edf1ef;
  --color-text-secondary: #c3d0cc;
  --color-text-tertiary: #98ada7;
  --color-text-inverse: #1f2d33;
  --color-text-link: #5fb7cc;

  --color-border-primary: #31505a;
  --color-border-secondary: #3b5f6a;
  --color-border-focus: #5fb7cc;

  --color-accent-primary: #3a9eb6;
  --color-accent-primary-hover: #5fb7cc;
  --color-accent-primary-active: #2f8397;
  --color-accent-secondary: #dd8b5d;

  --color-status-success: #5fb98a;
  --color-status-warning: #d7a450;
  --color-status-error: #dd7b74;
  --color-status-info: #74bbd7;

  --color-surface-overlay: rgba(9, 18, 22, 0.65);

  --color-availability-4: #67b58d;
  --color-availability-3: #86c89c;
  --color-availability-2: #dfb561;
  --color-availability-1: #df9356;
  --color-availability-full: #dd7b74;
  --color-availability-blocked: #82939b;
  --color-booking-mine: #5fb7cc;
  --color-booking-family: #5d7f8d;

  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.32), 0 1px 2px rgba(0, 0, 0, 0.24);
  --shadow-md: 0 8px 20px rgba(0, 0, 0, 0.36), 0 2px 8px rgba(0, 0, 0, 0.24);
  --shadow-lg: 0 18px 40px rgba(0, 0, 0, 0.44), 0 6px 18px rgba(0, 0, 0, 0.3);
  --shadow-focus: 0 0 0 3px rgba(95, 183, 204, 0.38);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --color-bg-primary: #13232a;
    --color-bg-secondary: #19313a;
    --color-bg-tertiary: #24404a;
    --color-bg-inverse: #f1e7d7;

    --color-text-primary: #edf1ef;
    --color-text-secondary: #c3d0cc;
    --color-text-tertiary: #98ada7;
    --color-text-inverse: #1f2d33;
    --color-text-link: #5fb7cc;

    --color-border-primary: #31505a;
    --color-border-secondary: #3b5f6a;
    --color-border-focus: #5fb7cc;

    --color-accent-primary: #3a9eb6;
    --color-accent-primary-hover: #5fb7cc;
    --color-accent-primary-active: #2f8397;
    --color-accent-secondary: #dd8b5d;

    --color-status-success: #5fb98a;
    --color-status-warning: #d7a450;
    --color-status-error: #dd7b74;
    --color-status-info: #74bbd7;

    --color-surface-overlay: rgba(9, 18, 22, 0.65);

    --color-availability-4: #67b58d;
    --color-availability-3: #86c89c;
    --color-availability-2: #dfb561;
    --color-availability-1: #df9356;
    --color-availability-full: #dd7b74;
    --color-availability-blocked: #82939b;
    --color-booking-mine: #5fb7cc;
    --color-booking-family: #5d7f8d;

    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.32), 0 1px 2px rgba(0, 0, 0, 0.24);
    --shadow-md: 0 8px 20px rgba(0, 0, 0, 0.36), 0 2px 8px rgba(0, 0, 0, 0.24);
    --shadow-lg: 0 18px 40px rgba(0, 0, 0, 0.44), 0 6px 18px rgba(0, 0, 0, 0.3);
    --shadow-focus: 0 0 0 3px rgba(95, 183, 204, 0.38);
  }
}
