/* Lora + Onest selected for local trial on 26.10.2026; other mappings remain Proposed.
   Proposed semantic mapping. Neutral values observed in Catalog/HMS; not platform approval. */
:root {
 --ds-ink:#161616; --ds-muted:#686868; --ds-line:#e4e4e4;
 --ds-paper:#fff; --ds-soft:#f6f6f6; --ds-canvas:#fbfbf9;
 --ds-accent:#315548; --ds-accent-soft:#eaf0ec;
 --ds-danger:#a32020; --ds-danger-soft:#fceeee;
 --ds-warning:#765400; --ds-warning-soft:#fff4d6;
 --ds-font:'Hatky Onest',system-ui,sans-serif; --ds-font-display:'Hatky Lora',Georgia,serif; --ds-mono:ui-monospace,SFMono-Regular,Consolas,monospace;
 --ds-space-1:4px; --ds-space-2:8px; --ds-space-3:12px; --ds-space-4:16px;
 --ds-space-6:24px; --ds-space-8:32px; --ds-space-12:48px;
 --ds-radius-control:var(--ds-radius-md); --ds-radius-panel:var(--ds-radius-lg); --ds-radius-action:30px;
 --ds-control-border:#8a8a8a; --ds-control-height:44px; --ds-focus:#315548;
}
/* v0.2 proposed dimensions, semantic tones, and overlay elevation. */
:root {
 --ds-control-sm:36px; --ds-control-md:44px; --ds-control-lg:52px;
 --ds-info:#245b83; --ds-info-soft:#edf4fa;
 --ds-overlay-shadow:0 8px 30px #1616161f,0 2px 6px #1616160a;
 --ds-overlay-backdrop:#16161666; --ds-overlay-z:30;
 --ds-media-stage:#000; --ds-on-media:#fff; --ds-on-media-muted:#ffffff59;
 --ds-motion-fast:150ms; --ds-motion-normal:200ms;
 --ds-density-compact:8px; --ds-density-comfortable:16px;
}
/* v0.3 calendar semantics: proposed UI values, not new occupancy rules. */
:root {--ds-calendar-day:44px;--ds-calendar-radius:50%;--ds-calendar-range:var(--ds-accent-soft);--ds-calendar-occupied:#ededeb;--ds-calendar-pending:#315548;}
/* v0.5 mobile-first policy; scope authorized, token/API values remain Proposed. */
:root{--ds-touch-target:44px;--ds-touch-gap:8px;--ds-mobile-gutter:16px;--ds-mobile-body:16px;--ds-mobile-label:14px;--ds-safe-top:env(safe-area-inset-top,0px);--ds-safe-right:env(safe-area-inset-right,0px);--ds-safe-bottom:env(safe-area-inset-bottom,0px);--ds-safe-left:env(safe-area-inset-left,0px)}
/* v0.14 role tokens, 29.10.2026: Proposed. Action = interactive/selected state; accent stays the brand
   and positive colour; status-* = booking states. Defaults reproduce the previous values exactly.
   Declared on each theme root too, so var() re-resolves against that theme's accent/ink. */
:where(:root,.ds-dashboard-theme,.ds-theme-warm){
 --ds-action:var(--ds-accent); --ds-action-soft:var(--ds-accent-soft); --ds-action-ink:var(--ds-paper);
 --ds-status-booked-bg:var(--ds-ink); --ds-status-booked-ink:var(--ds-paper); --ds-status-booked-line:transparent;
 --ds-status-pending-bg:var(--ds-paper); --ds-status-pending-ink:var(--ds-accent); --ds-status-pending-line:var(--ds-accent);
 --ds-status-held-bg:var(--ds-warning-soft); --ds-status-held-ink:var(--ds-warning); --ds-status-held-line:var(--ds-warning);
 --ds-status-blocked-bg:var(--ds-soft); --ds-status-blocked-ink:var(--ds-muted); --ds-status-blocked-line:var(--ds-line);
 --ds-divider:var(--ds-line);
 --ds-segment-track:var(--ds-soft); --ds-segment-border:0; --ds-segment-radius:var(--ds-radius-md); --ds-segment-item-radius:7px;
 --ds-segment-selected-bg:var(--ds-paper); --ds-segment-selected-ink:var(--ds-ink); --ds-segment-selected-shadow:0 1px 3px #00000012;
 --ds-button-primary-hover:#3a3a38; --ds-button-accent-hover:#3d6b5a;
}
/* v0.32 second accent, 02.11.2026: owner decision (catalog v0.1). Cosmic Orange for small warm accents where the
   green brand accent would be too much: saved heart, rating stars, counters, a discount label. Text on it is dark. */
:root{--ds-accent-2:#f26a1b;--ds-accent-2-soft:#fdeadf;--ds-accent-2-ink:#1c1b19}
/* Dashboard v1 reference theme, owner-supplied HTML/PNGs on 26.10.2026.
   Scoped consumer approval only; other products retain their existing mappings. */
:root{--ds-dashboard-page:#F6F7F3}
.ds-dashboard-theme{
 --ds-canvas:var(--ds-dashboard-page);--ds-paper:#fff;--ds-ink:#25392C;--ds-muted:#68796D;
 --ds-accent:#315D4A;--ds-accent-soft:#EAF0EA;--ds-line:#E7ECE5;
 --ds-font:Inter,'Noto Sans',system-ui,sans-serif;--ds-font-display:var(--ds-font);
 --ds-focus:var(--ds-accent);--ds-radius-control:11px;--ds-radius-panel:17px;--ds-radius-action:11px;
 --ds-dashboard-canvas:var(--ds-dashboard-page);--ds-dashboard-secondary:#809084;--ds-dashboard-brand-muted:#85958B;
 --ds-dashboard-booked:#CFE5D4;--ds-dashboard-booked-line:#C6DFCC;--ds-dashboard-booked-ink:#337653;
 --ds-dashboard-held:#F4E4BF;--ds-dashboard-held-line:#EBD9A9;--ds-dashboard-held-ink:#957230;
 --ds-dashboard-free:#F3F5F1;--ds-dashboard-free-line:#E7EBE4;
 --ds-dashboard-blocked:#E5E7E4;--ds-dashboard-blocked-line:#D6DBD5;
 --ds-dashboard-task:#E7F0E8;--ds-dashboard-task-ink:#416A4F;
 --ds-dashboard-task-amber:#F5EDDC;--ds-dashboard-task-amber-ink:#896938;
 --ds-dashboard-pill:#F7F0E3;--ds-dashboard-pill-ink:#956D32;
 --ds-dashboard-arrival:#6EA281;--ds-dashboard-departure:#C8A16F;
 --ds-dashboard-link:#EFF3ED;--ds-dashboard-arrow:#93A197;--ds-dashboard-dot:#C18E51;
 --ds-dashboard-shadow:0 1px 2px rgba(42,64,47,.025);
}
/* v0.13 scales, 29.10.2026: Proposed. Steps follow observed component usage; existing values are unchanged.
   Type: 12 is the minimum UI size; display 32–48 follows DD-21 roles. Spacing stays on the 4px grid. */
:root{
 --ds-text-xs:12px; --ds-text-sm:14px; --ds-text-md:16px; --ds-text-lg:18px;
 --ds-text-xl:24px; --ds-text-2xl:32px; --ds-text-3xl:48px;
 --ds-leading-tight:1.12; --ds-leading-snug:1.35; --ds-leading-body:1.6;
 --ds-weight-regular:400; --ds-weight-medium:500; --ds-weight-semibold:600;
 --ds-space-0:0px; --ds-space-5:20px; --ds-space-10:40px; --ds-space-16:64px;
 --ds-radius-sm:6px; --ds-radius-md:10px; --ds-radius-lg:18px; --ds-radius-pill:999px;
}
/* Warm theme v0.14, 29.10.2026: Proposed, from Moodboards/HMS. Opt-in via class="ds-theme-warm";
   docs site only until approved (HMS serves this file as /setup-tokens.css).
   Warm neutrals, near-black actions, green kept for brand/positive, pastel booking states.
   Text pairs ≥4.5:1 (ink 17.2, muted 5.5–6.0, status 5.6–8.4); control border 3.4:1 on paper. */
.ds-theme-warm,.ds-theme-warm .ds-dashboard-theme{
 --ds-ink:#1c1b19; --ds-muted:#67635c; --ds-line:#e2ded6;
 --ds-dashboard-page:#f7f6f2;
 --ds-divider:#d6d1c7;
 --ds-paper:#fff; --ds-soft:#ece9e3; --ds-canvas:#f7f6f2;
 --ds-accent:#315548; --ds-accent-soft:#e6eee8;
 --ds-control-border:#8e8a82; --ds-focus:#1c1b19;
 --ds-radius-control:12px; --ds-radius-panel:22px; --ds-radius-action:var(--ds-radius-pill);
 --ds-action:var(--ds-ink); --ds-action-soft:var(--ds-soft); --ds-action-ink:var(--ds-paper);
 --ds-calendar-range:var(--ds-soft); --ds-calendar-occupied:#e7e4de; --ds-calendar-pending:#3f3577;
 --ds-status-booked-bg:#d8eedf; --ds-status-booked-ink:#1f4d33; --ds-status-booked-line:#8cc4a0;
 --ds-status-pending-bg:#e6e2f8; --ds-status-pending-ink:#3f3577; --ds-status-pending-line:#a9a0de;
 --ds-status-held-bg:#fbe7c6; --ds-status-held-ink:#6b4a0a; --ds-status-held-line:#e3b866;
 --ds-status-blocked-bg:#ece9e3; --ds-status-blocked-ink:#5f5b54; --ds-status-blocked-line:#e2ded6;
 --ds-overlay-shadow:0 12px 32px #1c1b1914,0 1px 3px #1c1b190a;
 --ds-segment-track:var(--ds-paper); --ds-segment-border:1px solid var(--ds-control-border); --ds-segment-radius:var(--ds-radius-pill);
 --ds-button-primary-hover:#3b3935;
 --ds-segment-item-radius:var(--ds-radius-pill); --ds-segment-selected-bg:var(--ds-action); --ds-segment-selected-ink:var(--ds-action-ink); --ds-segment-selected-shadow:none;
}
/* Dashboard theme inside the warm theme (HMS, 29.10.2026, owner decision): the warm palette above wins over
   the Dashboard v1 values; Dashboard-only tokens become aliases of warm roles. Without .ds-theme-warm on an
   ancestor the Dashboard v1 theme is unchanged, so removing the class rolls HMS back. */
.ds-theme-warm .ds-dashboard-theme{
 --ds-font:'Hatky Onest',system-ui,sans-serif; --ds-font-display:'Hatky Lora',Georgia,serif;
 --ds-dashboard-page:var(--ds-canvas); --ds-dashboard-canvas:var(--ds-canvas);
 --ds-dashboard-secondary:var(--ds-muted); --ds-dashboard-brand-muted:var(--ds-muted);
 --ds-dashboard-booked:var(--ds-status-booked-bg); --ds-dashboard-booked-line:var(--ds-status-booked-line); --ds-dashboard-booked-ink:var(--ds-status-booked-ink);
 --ds-dashboard-held:var(--ds-status-held-bg); --ds-dashboard-held-line:var(--ds-status-held-line); --ds-dashboard-held-ink:var(--ds-status-held-ink);
 --ds-dashboard-free:var(--ds-canvas); --ds-dashboard-free-line:var(--ds-line);
 --ds-dashboard-blocked:var(--ds-status-blocked-bg); --ds-dashboard-blocked-line:var(--ds-status-blocked-line);
 --ds-dashboard-task:var(--ds-status-booked-bg); --ds-dashboard-task-ink:var(--ds-status-booked-ink);
 --ds-dashboard-task-amber:var(--ds-status-held-bg); --ds-dashboard-task-amber-ink:var(--ds-status-held-ink);
 --ds-dashboard-pill:var(--ds-status-held-bg); --ds-dashboard-pill-ink:var(--ds-status-held-ink);
 --ds-dashboard-arrival:var(--ds-accent); --ds-dashboard-departure:#8a5a12;
 --ds-dashboard-link:var(--ds-soft); --ds-dashboard-arrow:var(--ds-muted); --ds-dashboard-dot:var(--ds-danger);
 --ds-dashboard-shadow:none;
}
/* v0.30 motion, 01.11.2026: owner decision. One calm motion language in two profiles (design-system/MOTION.md).
   :root is the product profile (Хатки Ґазда, Booking Page): the calmest — short, no scroll reveals, no loops.
   .ds-motion-landing is the marketing profile: slower pen-line drawing and one-time reveals.
   Durations stay multiples of --ds-motion-normal; prefers-reduced-motion turns all motion off. */
:root {
 --ds-motion-ease:cubic-bezier(0.2,0.7,0.2,1);
 --ds-motion-slow:300ms; --ds-motion-draw:800ms; --ds-motion-shift:8px;
}
.ds-motion-landing {
 --ds-motion-slow:600ms; --ds-motion-draw:1400ms; --ds-motion-shift:16px;
}
