:root {
  color-scheme: light;

  /* Color foundations: the only raw palette source for City Guide UI. */
  --ctm-bg: #fbf8f2;
  --ctm-surface: #fffdf9;
  --ctm-surface-muted: #f3ede2;
  --ctm-surface-sage: #dfe9e2;
  --ctm-surface-accent: #fff0eb;
  --ctm-surface-drawer: #fbfaf6;
  --ctm-surface-skeleton: #eee9e1;
  --ctm-surface-skeleton-highlight: #f9f6f0;
  --ctm-text: #0d2e29;
  --ctm-text-muted: #5f6d69;
  --ctm-text-subtle: #66746f;
  --ctm-text-faint: #7f8985;
  --ctm-text-placeholder: #929c98;
  --ctm-text-inverse: #ffffff;
  --ctm-forest: #174b3e;
  --ctm-forest-dark: #0b342d;
  --ctm-forest-soft: #dce8e1;
  --ctm-forest-soft-hover: #cbded2;
  --ctm-terracotta: #d3482b;
  --ctm-terracotta-dark: #ab351f;
  --ctm-terracotta-action: #cf452a;
  --ctm-sand: #e8dccb;
  --ctm-gold: #ad7a26;
  --ctm-border: #ded8cd;
  --ctm-border-subtle: #eee8df;
  --ctm-border-strong: #c8bdae;
  --ctm-success: #237453;
  --ctm-warning: #9b651d;
  --ctm-warning-text: #6f5535;
  --ctm-error: #b4382d;

  /* Transparent colors and image treatments. */
  --ctm-overlay: rgba(10, 25, 21, 0.52);
  --ctm-overlay-mobile: rgba(5, 30, 25, 0.5);
  --ctm-overlay-image: rgba(5, 28, 24, 0.78);
  --ctm-surface-translucent: rgba(255, 253, 249, 0.78);
  --ctm-surface-header: rgba(255, 253, 249, 0.96);
  --ctm-surface-drawer-header: rgba(251, 250, 246, 0.96);
  --ctm-inverse-border: rgba(255, 255, 255, 0.58);
  --ctm-inverse-border-strong: rgba(255, 255, 255, 0.7);
  --ctm-hero-panel-border: rgba(255, 255, 255, 0.32);
  --ctm-inverse-surface: rgba(7, 36, 30, 0.24);
  --ctm-hero-panel-surface: rgba(7, 31, 27, 0.28);
  --ctm-text-inverse-strong: rgba(255, 255, 255, 0.9);
  --ctm-focus-ring-color: rgba(211, 72, 43, 0.45);
  --ctm-control-focus-color: rgba(23, 75, 62, 0.1);
  --ctm-accent-border: rgba(211, 72, 43, 0.25);
  --ctm-accent-border-medium: rgba(211, 72, 43, 0.42);
  --ctm-accent-border-strong: rgba(211, 72, 43, 0.48);
  --ctm-forest-border: rgba(23, 75, 62, 0.48);
  --ctm-forest-border-soft: rgba(23, 75, 62, 0.16);
  --ctm-inverse-border-soft: rgba(255, 255, 255, 0.18);
  --ctm-inverse-border-faint: rgba(255, 255, 255, 0.14);
  --ctm-inverse-surface-soft: rgba(255, 255, 255, 0.06);
  --ctm-inverse-surface-faint: rgba(255, 255, 255, 0.08);
  --ctm-inverse-surface-medium: rgba(255, 255, 255, 0.1);
  --ctm-inverse-surface-strong: rgba(255, 255, 255, 0.12);
  --ctm-text-inverse-muted: rgba(255, 255, 255, 0.82);
  --ctm-text-inverse-subtle: rgba(255, 255, 255, 0.65);
  --ctm-text-inverse-faint: rgba(255, 255, 255, 0.62);
  --ctm-border-header: rgba(222, 216, 205, 0.7);
  --ctm-surface-tabs: rgba(255, 253, 249, 0.86);
  --ctm-surface-translucent-soft: rgba(255, 253, 249, 0.76);
  --ctm-surface-translucent-faint: rgba(255, 253, 249, 0.68);
  --ctm-surface-page-sticky: rgba(251, 248, 242, 0.96);
  --ctm-surface-section-overlay: rgba(248, 244, 237, 0.94);
  --ctm-text-nav-muted: #9caaa5;

  /* Stable visual treatments owned by the system, not individual pages. */
  --ctm-hero-bg: #173931;
  --ctm-hero-eyebrow: #ffc1b2;
  --ctm-hero-eyebrow-muted: #f2b39f;
  --ctm-hero-gradient: linear-gradient(90deg, rgba(5, 37, 31, 0.93) 0%, rgba(8, 44, 37, 0.75) 50%, rgba(8, 35, 31, 0.35) 100%);
  --ctm-hero-image-overlay: linear-gradient(90deg, rgba(11, 52, 45, 0.42), transparent 44%), linear-gradient(0deg, rgba(7, 31, 26, 0.72), transparent 42%);
  --ctm-image-caption-gradient: linear-gradient(transparent, var(--ctm-overlay-image));
  --ctm-itinerary-image-gradient: linear-gradient(transparent, rgba(7, 38, 31, 0.38));
  --ctm-surface-row-open: #fff8f1;
  --ctm-surface-warm: #faf6ef;
  --ctm-surface-warm-muted: #f7f3ec;
  --ctm-surface-warm-strong: #efe9df;
  --ctm-surface-neutral: #f1ece3;
  --ctm-surface-accent-soft: #fff3ee;
  --ctm-surface-gold-soft: #f3e6d1;
  --ctm-text-gold-dark: #775017;
  --ctm-border-warm: #ece6dc;
  --ctm-border-warm-muted: #d5cdc1;
  --ctm-toggle-track: #d8d8d1;
  --ctm-calendar-ring: #d8a247;
  --ctm-score-track: #e6ddd0;
  --ctm-map-surface: #dfe8df;
  --ctm-map-pattern: rgba(23, 75, 62, 0.08);
  --ctm-map-road: rgba(255, 255, 255, 0.85);
  --ctm-map-label: rgba(255, 253, 249, 0.92);
  --ctm-surface-gallery-placeholder: #d9d4ca;
  --ctm-media-overlay: rgba(6, 36, 30, 0.85);
  --ctm-surface-drawer-footer: rgba(251, 250, 246, 0.97);
  --ctm-success-surface: #e8f3ec;
  --ctm-success-border: rgba(35, 116, 83, 0.22);
  --ctm-success-text: #075b39;
  --ctm-error-text: #7b2d27;
  --ctm-error-surface: #f7e7e3;
  --ctm-warning-surface: #fff5d8;
  --ctm-warning-border: #d9b66f;
  --ctm-warning-ink: #503d19;
  --ctm-itinerary-accent-muted: #d8b39e;

  /* Destination Landing compatibility treatments. */
  --ctm-landing-texture: rgba(86, 74, 61, 0.045);
  --ctm-landing-rule: rgba(227, 219, 207, 0.82);
  --ctm-landing-rule-strong: rgba(227, 219, 207, 0.92);
  --ctm-landing-surface: rgba(255, 253, 249, 0.94);
  --ctm-landing-surface-control: rgba(255, 253, 249, 0.93);
  --ctm-landing-surface-card: rgba(255, 253, 249, 0.9);
  --ctm-landing-surface-card-strong: rgba(255, 253, 249, 0.91);
  --ctm-landing-image-placeholder: #d9c8ad;
  --ctm-landing-hero-gradient: linear-gradient(90deg, rgba(251, 244, 232, 0.96) 0%, rgba(251, 244, 232, 0.84) 32%, rgba(251, 244, 232, 0.22) 62%, rgba(35, 39, 31, 0.08) 100%), linear-gradient(0deg, rgba(36, 43, 34, 0.14), transparent 35%);
  --ctm-landing-hero-mobile-gradient: linear-gradient(90deg, rgba(251, 244, 232, 0.94), rgba(251, 244, 232, 0.65)), linear-gradient(0deg, rgba(35, 39, 31, 0.25), transparent 40%);
  --ctm-landing-control-border: rgba(211, 200, 185, 0.9);
  --ctm-landing-focus-ring: rgba(182, 84, 59, 0.13);
  --ctm-landing-focus-ring-soft: rgba(182, 84, 59, 0.1);
  --ctm-landing-sage-border: rgba(96, 116, 95, 0.45);
  --ctm-landing-inverse-border: rgba(255, 255, 255, 0.25);
  --ctm-landing-inverse-border-faint: rgba(255, 255, 255, 0.15);
  --ctm-landing-card-overlay: linear-gradient(180deg, rgba(30, 28, 24, 0.02) 30%, rgba(28, 26, 23, 0.9) 100%);
  --ctm-landing-category-overlay: linear-gradient(180deg, rgba(20, 20, 18, 0.02) 24%, rgba(24, 23, 20, 0.85) 100%);
  --ctm-landing-feature-overlay: linear-gradient(135deg, rgba(99, 116, 91, 0.2), rgba(182, 84, 59, 0.15));
  --ctm-landing-accent-surface: #fff5f1;
  --ctm-landing-gold-text: #8a6232;
  --ctm-landing-footer-text: #d9d1c6;
  --ctm-landing-footer-muted: #c6bdb1;
  --ctm-landing-footer-faint: #bcb2a6;
  --ctm-landing-footer-accent: rgba(212, 170, 112, 0.14);
  --ctm-landing-footer-rule: rgba(255, 255, 255, 0.12);
  --ctm-landing-footer-bar: rgba(27, 25, 23, 0.54);

  /* Saved-preview compatibility treatments. */
  --ctm-preview-ink-token: #1f2523;
  --ctm-preview-muted-token: #65706b;
  --ctm-preview-line-token: #dedfd9;
  --ctm-preview-paper-token: #fffdf8;
  --ctm-preview-bg: #f4f1e9;
  --ctm-preview-hero: #263732;
  --ctm-preview-placeholder: #eceae4;
  --ctm-preview-inverse-border: rgb(255 255 255 / 45%);
  --ctm-preview-inverse-surface: rgb(0 0 0 / 20%);

  /* Component-state colors. */
  --ctm-action-primary-bg: var(--ctm-forest);
  --ctm-action-primary-bg-hover: var(--ctm-forest-dark);
  --ctm-action-primary-text: var(--ctm-text-inverse);
  --ctm-action-accent-bg: var(--ctm-terracotta-action);
  --ctm-action-accent-bg-hover: var(--ctm-terracotta-dark);
  --ctm-action-accent-text: var(--ctm-text-inverse);
  --ctm-action-secondary-bg: var(--ctm-surface);
  --ctm-action-secondary-bg-hover: var(--ctm-surface-muted);
  --ctm-action-secondary-text: var(--ctm-forest-dark);
  --ctm-control-bg: var(--ctm-surface);
  --ctm-control-border: var(--ctm-border);
  --ctm-control-border-hover: var(--ctm-border-strong);
  --ctm-control-border-focus: var(--ctm-forest);
  --ctm-focus-color: var(--ctm-terracotta-dark);
  --ctm-focus-outline: 3px solid var(--ctm-focus-color);
  --ctm-disabled-bg: var(--ctm-surface-muted);
  --ctm-disabled-text: var(--ctm-text-muted);
  --ctm-disabled-opacity: 0.58;

  /* Typography. */
  --ctm-font-serif: "Iowan Old Style", Baskerville, "Times New Roman", Georgia, serif;
  --ctm-font-sans: "Avenir Next", Avenir, "Segoe UI", Helvetica, Arial, sans-serif;
  --ctm-font-weight-regular: 400;
  --ctm-font-weight-medium: 600;
  --ctm-font-weight-semibold: 700;
  --ctm-font-weight-bold: 800;
  --ctm-font-weight-black: 900;
  --ctm-font-size-micro: 0.66rem;
  --ctm-font-size-xs: 0.72rem;
  --ctm-font-size-sm: 0.78rem;
  --ctm-font-size-eyebrow: 0.76rem;
  --ctm-font-size-body: 1rem;
  --ctm-font-size-lede: clamp(1.04rem, 1.6vw, 1.25rem);
  --ctm-font-size-h4: 1.08rem;
  --ctm-font-size-h3: clamp(1.35rem, 2vw, 1.85rem);
  --ctm-font-size-h2: clamp(2rem, 3.3vw, 3.25rem);
  --ctm-font-size-hero: clamp(2.45rem, 4.3vw, 4.15rem);
  --ctm-font-size-page-title: clamp(2.6rem, 5.2vw, 4.9rem);
  --ctm-line-height-tight: 1.08;
  --ctm-line-height-heading: 1.2;
  --ctm-line-height-body: 1.55;
  --ctm-line-height-relaxed: 1.7;
  --ctm-letter-spacing-tight: -0.025em;
  --ctm-letter-spacing-label: 0.06em;
  --ctm-letter-spacing-eyebrow: 0.17em;

  /* Spacing. */
  --ctm-space-0: 0;
  --ctm-space-1: 4px;
  --ctm-space-2: 8px;
  --ctm-space-3: 12px;
  --ctm-space-4: 16px;
  --ctm-space-5: 20px;
  --ctm-space-6: 24px;
  --ctm-space-7: 32px;
  --ctm-space-8: 40px;
  --ctm-space-9: 56px;
  --ctm-space-10: 72px;
  --ctm-space-11: 96px;

  /* Radius and elevation. */
  --ctm-radius-xs: 4px;
  --ctm-radius-sm: 6px;
  --ctm-radius-control: 9px;
  --ctm-radius-md: 10px;
  --ctm-radius-lg: 16px;
  --ctm-radius-xl: 24px;
  --ctm-radius-full: 999px;
  --ctm-shadow-soft: 0 12px 32px rgba(25, 40, 34, 0.08);
  --ctm-shadow-float: 0 18px 50px rgba(7, 38, 31, 0.15);
  --ctm-shadow-control-hover: 0 9px 24px rgba(9, 52, 44, 0.16);
  --ctm-shadow-panel: 0 14px 34px rgba(16, 44, 37, 0.055);
  --ctm-shadow-drawer: -24px 0 64px rgba(10, 31, 25, 0.22);
  --ctm-shadow-focus: 0 0 0 3px var(--ctm-control-focus-color);
  --ctm-shadow-header: 0 8px 22px rgba(21, 38, 33, 0.04);
  --ctm-shadow-site-header: 0 4px 20px rgba(65, 52, 42, 0.04);
  --ctm-shadow-sticky-panel: 0 10px 24px rgba(65, 52, 42, 0.05);
  --ctm-shadow-mobile-sheet: 0 -20px 54px rgba(10, 31, 25, 0.23);
  --ctm-shadow-accent-soft: 0 14px 34px rgba(211, 72, 43, 0.12);
  --ctm-shadow-control-active: 0 5px 14px rgba(23, 75, 62, 0.16);
  --ctm-shadow-calendar-active: 0 8px 18px rgba(23, 75, 62, 0.17);
  --ctm-shadow-toggle: 0 2px 6px rgba(10, 35, 29, 0.18);
  --ctm-shadow-accent-faint: 0 10px 24px rgba(211, 72, 43, 0.08);
  --ctm-shadow-segmented-active: 0 2px 7px rgba(20, 43, 37, 0.08);
  --ctm-shadow-guide: 0 16px 42px rgba(18, 52, 43, 0.06);
  --ctm-shadow-guide-card: 0 10px 28px rgba(14, 46, 38, 0.04);
  --ctm-shadow-guide-featured: 0 18px 40px rgba(87, 48, 31, 0.1);
  --ctm-shadow-guide-focus: 0 12px 26px rgba(14, 48, 39, 0.08);
  --ctm-shadow-guide-tab: 0 7px 18px rgba(23, 75, 62, 0.16);
  --ctm-shadow-guide-tab-active: 0 8px 20px rgba(13, 52, 43, 0.16);
  --ctm-shadow-landing-button: 0 9px 22px rgba(182, 84, 59, 0.2);
  --ctm-shadow-landing-header: 0 5px 24px rgba(47, 43, 39, 0.05);
  --ctm-shadow-landing-card: 0 7px 18px rgba(47, 43, 39, 0.06);
  --ctm-shadow-landing-text: 0 2px 8px rgba(0, 0, 0, 0.35);
  --ctm-shadow-landing-text-strong: 0 2px 9px rgba(0, 0, 0, 0.55);

  /* Layout contracts. */
  --ctm-content-width: 1380px;
  --ctm-content-width-narrow: 1240px;
  --ctm-readable-width: 760px;
  --ctm-drawer-width: 750px;
  --ctm-sidebar-width: 230px;
  --ctm-sidebar-width-compact: 210px;
  --ctm-sidebar-width-tablet: 180px;
  --ctm-header-height: 76px;
  --ctm-header-height-compact: 64px;
  --ctm-header-height-landing-compact: 68px;
  --ctm-gutter: 24px;
  --ctm-gutter-tablet: 18px;
  --ctm-gutter-mobile: 14px;
  --ctm-section-gap: 56px;
  --ctm-section-gap-mobile: 44px;

  /* Named responsive contracts. Media queries use these exact values. */
  --ctm-breakpoint-wide: 1200px;
  --ctm-breakpoint-desktop: 1024px;
  --ctm-breakpoint-tablet: 768px;
  --ctm-breakpoint-mobile: 600px;
  --ctm-breakpoint-small: 480px;

  /* Motion. */
  --ctm-duration-instant: 0.01ms;
  --ctm-duration-fastest: 130ms;
  --ctm-duration-brief: 150ms;
  --ctm-duration-fast: 160ms;
  --ctm-duration-base: 180ms;
  --ctm-duration-content: 190ms;
  --ctm-duration-calm: 200ms;
  --ctm-duration-moderate: 220ms;
  --ctm-duration-medium: 240ms;
  --ctm-duration-slow: 260ms;
  --ctm-duration-panel-content: 300ms;
  --ctm-duration-panel-transform: 320ms;
  --ctm-duration-drawer-backdrop: 210ms;
  --ctm-duration-drawer-exit: 330ms;
  --ctm-duration-drawer-enter: 420ms;
  --ctm-duration-expand: 420ms;
  --ctm-duration-image: 500ms;
  --ctm-duration-loading: 1100ms;
  --ctm-duration-image-slow: 650ms;
  --ctm-duration-image-slower: 700ms;
  --ctm-delay-drawer-content-opacity: 85ms;
  --ctm-delay-drawer-content-transform: 70ms;
  --ctm-ease-standard: ease;
  --ctm-ease-linear: linear;
  --ctm-ease-emphasized: cubic-bezier(0.4, 0, 0.2, 1);
  --ctm-ease-decelerate: cubic-bezier(0.16, 1, 0.3, 1);
  --ctm-ease-decelerate-soft: cubic-bezier(0.22, 1, 0.36, 1);
  --ctm-ease-enter: cubic-bezier(0.2, 0.7, 0.2, 1);
  --ctm-ease-spring: cubic-bezier(0.22, 0.72, 0.24, 1);
  --ctm-motion-fast: var(--ctm-duration-fast) var(--ctm-ease-standard);
  --ctm-motion-base: var(--ctm-duration-base) var(--ctm-ease-standard);
  --ctm-motion-moderate: var(--ctm-duration-moderate) var(--ctm-ease-standard);

  /* Legacy aliases: consumers may migrate without creating another palette. */
  --ctm-bg-page: var(--ctm-bg);
  --ctm-bg-section: var(--ctm-surface-muted);
  --ctm-bg-card: var(--ctm-surface);
  --ctm-bg-card-muted: var(--ctm-surface-muted);
  --ctm-bg-overlay: var(--ctm-surface-header);
  --ctm-primary: var(--ctm-terracotta);
  --ctm-primary-hover: var(--ctm-terracotta-dark);
  --ctm-primary-soft: #f1d8cd;
  --ctm-primary-softest: var(--ctm-surface-accent);
  --ctm-secondary: #60745f;
  --ctm-secondary-hover: #435645;
  --ctm-secondary-soft: var(--ctm-forest-soft);
  --ctm-secondary-softest: #eef3e9;
  --ctm-accent-sand: #d4aa70;
  --ctm-accent-sand-soft: #eee0cb;
  --ctm-warning-soft: #f0d8cc;
  --ctm-text-heading: var(--ctm-text);
  --ctm-text-body: #4a4640;
  --ctm-text-light: var(--ctm-text-inverse);
  --ctm-border-light: #ebe4da;
  --ctm-content-max: var(--ctm-content-width);
  --ctm-readable-max: 980px;
  --ctm-footer-bg: #2f2b27;
  --ctm-footer-text: #d9d1c6;
  --ctm-shadow-sm: 0 4px 16px rgba(65, 52, 42, 0.06);
  --ctm-shadow-md: 0 10px 30px rgba(65, 52, 42, 0.09);
  --ctm-red: var(--ctm-primary);
  --ctm-ink: var(--ctm-text-heading);
  --ctm-muted: var(--ctm-text-muted);
  --ctm-line: var(--ctm-border-light);
  --ctm-soft: var(--ctm-bg-page);
  --ctm-panel: var(--ctm-bg-card);
  --ctm-radius: var(--ctm-radius-sm);
  --ctm-shadow: var(--ctm-shadow-md);

  --e-global-color-primary: var(--ctm-primary);
  --e-global-color-secondary: var(--ctm-secondary);
  --e-global-color-text: var(--ctm-text-body);
  --e-global-color-accent: var(--ctm-primary);
  --wp--preset--color--primary: var(--ctm-primary);
  --wp--preset--color--secondary: var(--ctm-secondary);
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --ctm-duration-fastest: var(--ctm-duration-instant);
    --ctm-duration-brief: var(--ctm-duration-instant);
    --ctm-duration-fast: var(--ctm-duration-instant);
    --ctm-duration-base: var(--ctm-duration-instant);
    --ctm-duration-content: var(--ctm-duration-instant);
    --ctm-duration-calm: var(--ctm-duration-instant);
    --ctm-duration-moderate: var(--ctm-duration-instant);
    --ctm-duration-medium: var(--ctm-duration-instant);
    --ctm-duration-slow: var(--ctm-duration-instant);
    --ctm-duration-panel-content: var(--ctm-duration-instant);
    --ctm-duration-panel-transform: var(--ctm-duration-instant);
    --ctm-duration-drawer-backdrop: var(--ctm-duration-instant);
    --ctm-duration-drawer-exit: var(--ctm-duration-instant);
    --ctm-duration-drawer-enter: var(--ctm-duration-instant);
    --ctm-duration-expand: var(--ctm-duration-instant);
    --ctm-duration-image: var(--ctm-duration-instant);
    --ctm-duration-loading: var(--ctm-duration-instant);
    --ctm-duration-image-slow: var(--ctm-duration-instant);
    --ctm-duration-image-slower: var(--ctm-duration-instant);
    --ctm-delay-drawer-content-opacity: 0ms;
    --ctm-delay-drawer-content-transform: 0ms;
  }
}
