/* Explicit personal palette; semantic command/status roles remain centralized.
 * Brighter swatches match the reference; command ink is darker for white labels.
 * Only authenticated business pages receive data-app-color / data-app-contrast. */
[data-theme-swatch="gray"], html[data-app-color="gray"] { --app-swatch:#595d67; --app-color-ink:#555963; --app-color-bright:#aeb3c0; }
[data-theme-swatch="violet"], html[data-app-color="violet"] { --app-swatch:#8574f7; --app-color-ink:#6551cb; --app-color-bright:#b0a4ff; }
[data-theme-swatch="cyan"], html[data-app-color="cyan"] { --app-swatch:#1294e2; --app-color-ink:#0875b6; --app-color-bright:#60baff; }
[data-theme-swatch="pink"], html[data-app-color="pink"] { --app-swatch:#ef579c; --app-color-ink:#b92668; --app-color-bright:#ff8cbf; }
[data-theme-swatch="purple"], html[data-app-color="purple"] { --app-swatch:#b459dc; --app-color-ink:#8c35b3; --app-color-bright:#d39af3; }
[data-theme-swatch="blue"], html[data-app-color="blue"] { --app-swatch:#667dff; --app-color-ink:#006de9; --app-color-bright:#3b92ff; }
[data-theme-swatch="orange"], html[data-app-color="orange"] { --app-swatch:#e66a0f; --app-color-ink:#b84c00; --app-color-bright:#ffae68; }
[data-theme-swatch="teal"], html[data-app-color="teal"] { --app-swatch:#119ea1; --app-color-ink:#077c7f; --app-color-bright:#53d2d4; }
[data-theme-swatch="taupe"], html[data-app-color="taupe"] { --app-swatch:#ac8e82; --app-color-ink:#806052; --app-color-bright:#d8b6a6; }
[data-theme-swatch="green"], html[data-app-color="green"] { --app-swatch:#35b88d; --app-color-ink:#087e59; --app-color-bright:#67dfb0; }
html[data-app-color] {
  --app-theme-a-0:color-mix(in srgb,var(--app-theme-accent) 0%,transparent);
  --app-theme-a-350:color-mix(in srgb,var(--app-theme-accent) 3.5%,transparent);
  --app-theme-a-400:color-mix(in srgb,var(--app-theme-accent) 4%,transparent);
  --app-theme-a-500:color-mix(in srgb,var(--app-theme-accent) 5%,transparent);
  --app-theme-a-550:color-mix(in srgb,var(--app-theme-accent) 5.5%,transparent);
  --app-theme-a-600:color-mix(in srgb,var(--app-theme-accent) 6%,transparent);
  --app-theme-a-700:color-mix(in srgb,var(--app-theme-accent) 7%,transparent);
  --app-theme-a-780:color-mix(in srgb,var(--app-theme-accent) 7.8%,transparent);
  --app-theme-a-800:color-mix(in srgb,var(--app-theme-accent) 8%,transparent);
  --app-theme-a-900:color-mix(in srgb,var(--app-theme-accent) 9%,transparent);
  --app-theme-a-950:color-mix(in srgb,var(--app-theme-accent) 9.5%,transparent);
  --app-theme-a-1000:color-mix(in srgb,var(--app-theme-accent) 10%,transparent);
  --app-theme-a-1100:color-mix(in srgb,var(--app-theme-accent) 11%,transparent);
  --app-theme-a-1200:color-mix(in srgb,var(--app-theme-accent) 12%,transparent);
  --app-theme-a-1300:color-mix(in srgb,var(--app-theme-accent) 13%,transparent);
  --app-theme-a-1350:color-mix(in srgb,var(--app-theme-accent) 13.5%,transparent);
  --app-theme-a-1400:color-mix(in srgb,var(--app-theme-accent) 14%,transparent);
  --app-theme-a-1500:color-mix(in srgb,var(--app-theme-accent) 15%,transparent);
  --app-theme-a-1600:color-mix(in srgb,var(--app-theme-accent) 16%,transparent);
  --app-theme-a-1700:color-mix(in srgb,var(--app-theme-accent) 17%,transparent);
  --app-theme-a-1800:color-mix(in srgb,var(--app-theme-accent) 18%,transparent);
  --app-theme-a-2000:color-mix(in srgb,var(--app-theme-accent) 20%,transparent);
  --app-theme-a-2200:color-mix(in srgb,var(--app-theme-accent) 22%,transparent);
  --app-theme-a-2400:color-mix(in srgb,var(--app-theme-accent) 24%,transparent);
  --app-theme-a-2500:color-mix(in srgb,var(--app-theme-accent) 25%,transparent);
  --app-theme-a-2800:color-mix(in srgb,var(--app-theme-accent) 28%,transparent);
  --app-theme-a-3000:color-mix(in srgb,var(--app-theme-accent) 30%,transparent);
  --app-theme-a-3200:color-mix(in srgb,var(--app-theme-accent) 32%,transparent);
  --app-theme-a-3400:color-mix(in srgb,var(--app-theme-accent) 34%,transparent);
  --app-theme-a-3500:color-mix(in srgb,var(--app-theme-accent) 35%,transparent);
  --app-theme-a-3800:color-mix(in srgb,var(--app-theme-accent) 38%,transparent);
  --app-theme-a-4000:color-mix(in srgb,var(--app-theme-accent) 40%,transparent);
  --app-theme-a-4200:color-mix(in srgb,var(--app-theme-accent) 42%,transparent);
  --app-theme-a-4500:color-mix(in srgb,var(--app-theme-accent) 45%,transparent);
  --app-theme-a-5000:color-mix(in srgb,var(--app-theme-accent) 50%,transparent);
  --app-theme-a-5500:color-mix(in srgb,var(--app-theme-accent) 55%,transparent);
  --app-theme-a-6000:color-mix(in srgb,var(--app-theme-accent) 60%,transparent);
  --app-theme-a-8000:color-mix(in srgb,var(--app-theme-accent) 80%,transparent);
  --app-theme-a-8800:color-mix(in srgb,var(--app-theme-accent) 88%,transparent);
  --app-theme-a-9500:color-mix(in srgb,var(--app-theme-accent) 95%,transparent);
  /* Complete palette bridge. Local legacy blue literals use these roles with
   * their original values as fallbacks outside authenticated tenant pages. */
  --app-theme-fill:var(--app-color-ink);
  --app-theme-fill-hover:color-mix(in srgb,var(--app-color-ink) 85%,black);
  --app-theme-accent-hover:var(--ds-color-interactive-hover);
  --app-theme-wash-soft:color-mix(in srgb,var(--app-theme-accent) 4%,var(--ds-color-bg-canvas));
  --app-theme-wash:color-mix(in srgb,var(--app-theme-accent) 10%,var(--ds-color-bg-canvas));
  --app-theme-line:color-mix(in srgb,var(--app-theme-accent) 30%,var(--ds-color-bg-canvas));
  --app-theme-deep:color-mix(in srgb,var(--app-color-ink) 65%,black);
  --app-theme-mark-rim:color-mix(in srgb,var(--app-color-ink) 12%,white);
  --brand-50:var(--app-theme-wash-soft);
  --brand-100:var(--app-theme-wash);
  --brand-200:var(--app-theme-line);
  --brand-300:color-mix(in srgb,var(--app-theme-accent) 45%,var(--ds-color-bg-canvas));
  --brand-400:var(--app-color-bright);
  --brand-500:var(--app-theme-accent);
  --brand-600:var(--app-color-ink);
  --brand-700:var(--app-theme-fill-hover);
  --brand-800:color-mix(in srgb,var(--app-color-ink) 75%,black);
  --brand-900:var(--app-theme-deep);
  --brand-950:color-mix(in srgb,var(--app-color-ink) 45%,black);
  --focus-ring:var(--ds-color-focus-ring);
  --accent-sapphire:var(--app-theme-accent);
  --ods-accent:var(--app-theme-accent);
  --ods-accent-dark:var(--app-theme-accent);
  --ods-accent-bg:var(--app-theme-wash);
  --ods-accent-bg-dark:var(--accent-soft);
  --ods-accent-border:var(--ds-color-interactive-border);
  --ods-accent-border-dark:var(--ds-color-interactive-border);
  --ods-focus-color:var(--app-theme-accent);
  --ods-focus-ring-shadow:0 0 0 3px var(--ds-color-focus-ring);
  --ds-color-primary:var(--app-theme-accent);
  --ds-color-selection-fill:var(--app-color-ink);
  --ds-color-selection-shadow:var(--ds-color-focus-ring);
  /* Status badges, booking fills and rails keep the semantic palette from
   * design-tokens.css. Personal command colours must not repaint statuses. */
  --ds-color-status-in-progress:#006de9;
  --ds-color-surface:var(--ds-color-bg-canvas);
  --ds-color-surface-subtle:var(--ds-color-bg-subtle);
  --app-theme-accent:var(--app-color-ink);
  --accent:var(--app-theme-accent);
  --accent-hover:color-mix(in srgb, var(--app-theme-accent) 85%, black);
  --accent-soft:color-mix(in srgb, var(--app-theme-accent) 10%, transparent);
  --ds-color-interactive:var(--app-theme-accent);
  --ds-color-interactive-hover:var(--accent-hover);
  --ds-color-interactive-muted:var(--accent-soft);
  --ds-color-interactive-border:color-mix(in srgb, var(--app-theme-accent) 32%, transparent);
  --ds-color-primary-command-bg:var(--app-color-ink);
  --ds-color-primary-command-bg-hover:color-mix(in srgb, var(--app-color-ink) 85%, black);
  --ds-color-focus-ring:color-mix(in srgb, var(--app-theme-accent) 36%, transparent);
  --ds-color-focus-ring-ui:var(--app-theme-accent);
  --ds-color-bg-selected:var(--accent-soft);
  --ds-color-brand-logo-bg:var(--accent-soft);
  --ds-color-brand-bolt:var(--app-theme-accent);
  --ds-color-sapphire:var(--app-theme-accent);
  --ds-color-sapphire-black:var(--accent-hover);
  --ds-color-accent-blue-text:var(--app-theme-accent);
  --ds-color-accent-blue-bg:var(--accent-soft);
  --ds-color-accent-blue-border:var(--ds-color-interactive-border);
  --m-blue:var(--app-theme-accent);
}
html[data-app-color][data-app-theme="dark"] {
  --ds-color-status-in-progress:#3b92ff;
  --app-theme-accent:var(--app-color-bright);
  --accent-hover:color-mix(in srgb, var(--app-theme-accent) 85%, white);
}
html[data-app-color] .sb {
  --c-rail-active:var(--app-theme-accent);
  --c-rail-glow:var(--ds-color-focus-ring);
}
html[data-app-contrast="high"] {
  --text-secondary:#41444e;
  --ds-color-text-secondary:var(--text-secondary);
  --ds-color-text-tertiary:var(--text-secondary);
  --ds-color-text-quaternary:var(--text-secondary);
  --border-hairline:#747780;
  --ds-color-border:#747780;
  --ds-color-border-subtle:var(--ds-color-border);
  --ds-color-border-strong:#535761;
  --m-sub:#41444e;
  --m-line:#747780;
}
html[data-app-contrast="high"][data-app-theme="dark"] {
  --text-secondary:#d8dce5;
  --border-hairline:#9ba0ac;
  --ds-color-border:#9ba0ac;
  --ds-color-border-strong:#c0c5d0;
  --m-sub:#d8dce5;
  --m-line:#9ba0ac;
}
html[data-app-contrast="high"] .sb {
  --c-text-muted:var(--text-secondary);
  --c-text-soft:var(--text-secondary);
  --c-text-dim:var(--text-secondary);
  --c-divider:var(--ds-color-border);
}
