/**
 * oddjobs.im � dashboard themes + chrome (nav accent / icons)
 * Light: (default)
 * Envisage: <html class="envisage"> dusk mid-theme, no white surfaces
 * Night: <html class="dark">
 * Chrome: data-oj-accent / data-oj-icons / data-oj-rail + --oj-nav-accent
 * data-oj-theme: light|plain|mono|fuchsia|clinic(Calm)|sand|ocean|slate|envisage|graphite|dark
 */

:root {
  --oj-nav-accent: #0ea5e9;
  --oj-nav-active-fg: #e0f2fe;
  /* Left menu / rail — themes override these */
  --oj-sidebar-bg: #0f172a;
  --oj-sidebar-bg-end: #0b1220;
  --oj-sidebar-border: #1e2937;
  --oj-sidebar-text: #e2e8f0;
  --oj-sidebar-muted: #94a3b8;
  --oj-sidebar-hover: #1e2937;
  --oj-sidebar-active: #1e2937;
  --oj-sidebar-sub-border: #334155;
  --oj-sidebar-icon: var(--oj-nav-accent);
}

html.dark {
  color-scheme: dark;
}

/* Accent presets (also set via JS --oj-nav-accent) */
html[data-oj-accent="teal"]    { --oj-nav-accent: #0f766e; --oj-nav-active-fg: #ccfbf1; }
html[data-oj-accent="emerald"] { --oj-nav-accent: #10b981; --oj-nav-active-fg: #d1fae5; }
html[data-oj-accent="sky"]     { --oj-nav-accent: #0ea5e9; --oj-nav-active-fg: #e0f2fe; }
html[data-oj-accent="cyan"]    { --oj-nav-accent: #22d3ee; --oj-nav-active-fg: #cffafe; }
html[data-oj-accent="violet"]  { --oj-nav-accent: #8b5cf6; --oj-nav-active-fg: #ede9fe; }
html[data-oj-accent="rose"]    { --oj-nav-accent: #f43f5e; --oj-nav-active-fg: #ffe4e6; }
html[data-oj-accent="amber"]   { --oj-nav-accent: #f59e0b; --oj-nav-active-fg: #fef3c7; }
html[data-oj-accent="blue"]    { --oj-nav-accent: #2563eb; --oj-nav-active-fg: #dbeafe; }
html[data-oj-accent="orange"]  { --oj-nav-accent: #ea580c; --oj-nav-active-fg: #ffedd5; }
html[data-oj-accent="fuchsia"] { --oj-nav-accent: #c026d3; --oj-nav-active-fg: #fae8ff; }

/* ---------- Theme → left menu (rail) tokens ---------- */
html[data-oj-theme="light"] {
  --oj-sidebar-bg: #1e293b;
  --oj-sidebar-bg-end: #0f172a;
  --oj-sidebar-border: #334155;
  --oj-sidebar-text: #e2e8f0;
  --oj-sidebar-muted: #94a3b8;
  --oj-sidebar-hover: #334155;
  --oj-sidebar-active: #334155;
  --oj-sidebar-sub-border: #475569;
}
html.plain,
html[data-oj-theme="plain"] {
  --oj-nav-accent: #737373 !important;
  --oj-nav-accent-vivid: #525252 !important;
  --oj-nav-accent-soft: #404040 !important;
  --oj-nav-active-fg: #f5f5f5 !important;
  --oj-header-accent: #404040 !important;
  --oj-header-accent-vivid: #404040 !important;
  --oj-sidebar-bg: #2a2a2a;
  --oj-sidebar-bg-end: #171717;
  --oj-sidebar-border: #404040;
  --oj-sidebar-text: #e5e5e5;
  --oj-sidebar-muted: #a3a3a3;
  --oj-sidebar-hover: #3f3f3f;
  --oj-sidebar-active: #404040;
  --oj-sidebar-sub-border: #525252;
  --oj-sidebar-icon: #d4d4d4;
}
/* Mono: pure white rail, black type — zero chroma */
html.mono,
html[data-oj-theme="mono"] {
  --oj-nav-accent: #000000 !important;
  --oj-nav-accent-vivid: #000000 !important;
  --oj-nav-accent-soft: #000000 !important;
  --oj-nav-active-fg: #ffffff !important;
  --oj-header-accent: #000000 !important;
  --oj-header-accent-vivid: #000000 !important;
  --oj-sidebar-bg: #ffffff;
  --oj-sidebar-bg-end: #ffffff;
  --oj-sidebar-border: #000000;
  --oj-sidebar-text: #000000;
  --oj-sidebar-muted: #000000;
  --oj-sidebar-hover: #f0f0f0;
  --oj-sidebar-active: #e8e8e8;
  --oj-sidebar-sub-border: #000000;
  --oj-sidebar-icon: #000000;
}
html.clinic,
html[data-oj-theme="clinic"] {
  --oj-sidebar-bg: #0f2926;
  --oj-sidebar-bg-end: #0a1f1c;
  --oj-sidebar-border: #134e4a;
  --oj-sidebar-text: #ccfbf1;
  --oj-sidebar-muted: #5eead4;
  --oj-sidebar-hover: #115e59;
  --oj-sidebar-active: #0f766e;
  --oj-sidebar-sub-border: #0d9488;
}
html.sand,
html[data-oj-theme="sand"] {
  --oj-sidebar-bg: #292218;
  --oj-sidebar-bg-end: #1c1917;
  --oj-sidebar-border: #44403c;
  --oj-sidebar-text: #fef3c7;
  --oj-sidebar-muted: #d6d3d1;
  --oj-sidebar-hover: #44403c;
  --oj-sidebar-active: #57534e;
  --oj-sidebar-sub-border: #78716c;
}
html.ocean,
html[data-oj-theme="ocean"] {
  --oj-sidebar-bg: #0c2340;
  --oj-sidebar-bg-end: #0a192f;
  --oj-sidebar-border: #1e3a5f;
  --oj-sidebar-text: #e0f2fe;
  --oj-sidebar-muted: #7dd3fc;
  --oj-sidebar-hover: #164e7a;
  --oj-sidebar-active: #0c4a6e;
  --oj-sidebar-sub-border: #0369a1;
}
html.nebula,
html[data-oj-theme="nebula"] {
  --oj-sidebar-bg: #1e1b4b;
  --oj-sidebar-bg-end: #0f0a2a;
  --oj-sidebar-border: #4c1d95;
  --oj-sidebar-text: #ede9fe;
  --oj-sidebar-muted: #c4b5fd;
  --oj-sidebar-hover: #4c1d95;
  --oj-sidebar-active: #5b21b6;
  --oj-sidebar-sub-border: #7c3aed;
}
html.slate,
html[data-oj-theme="slate"] {
  --oj-sidebar-bg: #334155;
  --oj-sidebar-bg-end: #1e293b;
  --oj-sidebar-border: #475569;
  --oj-sidebar-text: #f1f5f9;
  --oj-sidebar-muted: #cbd5e1;
  --oj-sidebar-hover: #475569;
  --oj-sidebar-active: #64748b;
  --oj-sidebar-sub-border: #64748b;
}
html.fuchsia,
html[data-oj-theme="fuchsia"] {
  --oj-sidebar-bg: #1a0b24;
  --oj-sidebar-bg-end: #0b1220;
  --oj-sidebar-border: rgba(232, 121, 249, 0.18);
  --oj-sidebar-text: #f5d0fe;
  --oj-sidebar-muted: #e879f9;
  --oj-sidebar-hover: #2a1238;
  --oj-sidebar-active: #3b1650;
  --oj-sidebar-sub-border: rgba(232, 121, 249, 0.28);
}
html.envisage,
html[data-oj-theme="envisage"] {
  --oj-sidebar-bg: #141c2e;
  --oj-sidebar-bg-end: #0f1524;
  --oj-sidebar-border: rgba(130, 175, 220, 0.16);
  --oj-sidebar-text: #e2ebf6;
  --oj-sidebar-muted: #94a3b8;
  --oj-sidebar-hover: #1c2740;
  --oj-sidebar-active: #243148;
  --oj-sidebar-sub-border: rgba(130, 175, 220, 0.22);
}
html.graphite,
html[data-oj-theme="graphite"] {
  --oj-sidebar-bg: #1e293b;
  --oj-sidebar-bg-end: #0f172a;
  --oj-sidebar-border: #334155;
  --oj-sidebar-text: #e2e8f0;
  --oj-sidebar-muted: #94a3b8;
  --oj-sidebar-hover: #334155;
  --oj-sidebar-active: #475569;
  --oj-sidebar-sub-border: #475569;
}
html.dark,
html[data-oj-theme="dark"] {
  --oj-sidebar-bg: #020617;
  --oj-sidebar-bg-end: #000000;
  --oj-sidebar-border: #1e2937;
  --oj-sidebar-text: #e2e8f0;
  --oj-sidebar-muted: #64748b;
  --oj-sidebar-hover: #0f172a;
  --oj-sidebar-active: #1e2937;
  --oj-sidebar-sub-border: #334155;
}

/* Dashboard brand logo - matches public nav frame (admin: Site branding → logo border) */
.oj-dash-logo.oj-site-logo {
  object-fit: contain;
  max-width: 11.5rem;
  max-height: 2.85rem;
  height: auto;
  width: auto;
  vertical-align: middle;
  display: block;
}
/* Brand block: logo row + optional trial nag under logo */
.oj-brand-block {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.35rem;
  min-width: 0;
  width: 100%;
}

/* Brand row: logo + role pill on ONE line, no overlap */
.oj-brand-row {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
  min-width: 0;
}

/* Slight trial nag under logo (tradie free trial) */
.oj-trial-nag {
  display: none;
  align-items: center;
  justify-content: flex-start;
  gap: 0.35rem;
  width: 100%;
  max-width: 100%;
  margin: 0;
  padding: 0.28rem 0.55rem;
  border-radius: 0.65rem;
  border: 1px solid rgba(251, 191, 36, 0.35);
  background: linear-gradient(135deg, rgba(251, 191, 36, 0.14), rgba(56, 189, 248, 0.1));
  color: #fde68a;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  line-height: 1.25;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.12s ease;
  box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.15) inset;
}
.oj-trial-nag:not(.hidden) {
  display: inline-flex;
}
.oj-trial-nag:hover {
  border-color: rgba(251, 191, 36, 0.55);
  background: linear-gradient(135deg, rgba(251, 191, 36, 0.22), rgba(56, 189, 248, 0.16));
  transform: translateY(-0.5px);
}
.oj-trial-nag i {
  font-size: 0.58rem;
  opacity: 0.9;
  flex-shrink: 0;
}
.oj-trial-nag .oj-trial-nag-text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* Urgency states */
.oj-trial-nag.is-ok {
  border-color: rgba(56, 189, 248, 0.35);
  background: linear-gradient(135deg, rgba(56, 189, 248, 0.12), rgba(99, 102, 241, 0.1));
  color: #bae6fd;
}
.oj-trial-nag.is-warn {
  border-color: rgba(251, 191, 36, 0.45);
  background: linear-gradient(135deg, rgba(251, 191, 36, 0.18), rgba(245, 158, 11, 0.12));
  color: #fde68a;
}
.oj-trial-nag.is-urgent {
  border-color: rgba(248, 113, 113, 0.5);
  background: linear-gradient(135deg, rgba(248, 113, 113, 0.2), rgba(251, 146, 60, 0.14));
  color: #fecaca;
  animation: ojTrialNagPulse 2.4s ease-in-out infinite;
}
@keyframes ojTrialNagPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(248, 113, 113, 0); }
  50% { box-shadow: 0 0 0 3px rgba(248, 113, 113, 0.18); }
}
.oj-mobile-topbar .oj-trial-nag {
  padding: 0.18rem 0.45rem;
  font-size: 0.6rem;
  border-radius: 0.5rem;
}
.oj-mobile-topbar .oj-brand-block {
  gap: 0.22rem;
}
.oj-brand-row > button,
.oj-brand-row > a,
.oj-brand-row > .oj-brand-logo-wrap {
  display: flex;
  align-items: center;
  min-width: 0;
  flex: 1 1 auto;
  /* Leave room for role pills (Careers / Recruitment / Customer, etc.) */
  max-width: calc(100% - 7.5rem);
}
.oj-brand-row .oj-dash-logo {
  max-width: 100%;
  max-height: 2.65rem;
  height: auto !important;
  width: auto;
}
.oj-brand-row .oj-status-chip,
.oj-brand-row .tradie-tier-pill,
.oj-brand-row .med-chip,
.oj-brand-row .leg-chip,
.oj-brand-row .rec-chip {
  flex: 0 0 auto;
  margin-left: auto;
  white-space: nowrap;
  /* Never clip role labels next to the logo */
  max-width: none;
  overflow: visible;
  text-overflow: clip;
}
/* Mobile topbar brand cluster (logo + pill before menu) */
.oj-mobile-topbar .oj-brand-row {
  flex: 1 1 auto;
  min-width: 0;
  margin-right: 0.35rem;
}
.oj-mobile-topbar .oj-brand-row > button,
.oj-mobile-topbar .oj-brand-row > a,
.oj-mobile-topbar .oj-brand-row > .oj-brand-logo-wrap {
  max-width: calc(100% - 6.75rem);
}
.oj-mobile-topbar .oj-brand-row .oj-dash-logo {
  max-height: 2.35rem;
}
/* Framed logo on dark rails: keep the white pad so the wordmark pops (same vibe as homepage) */
.sidebar .oj-dash-logo.rounded-xl,
.oj-mobile-topbar .oj-dash-logo.rounded-xl,
.med-sidebar .oj-dash-logo.rounded-xl,
.leg-sidebar .oj-dash-logo.rounded-xl,
.rec-sidebar .oj-dash-logo.rounded-xl,
.med-mobile-top .oj-dash-logo.rounded-xl,
.leg-mobile-top .oj-dash-logo.rounded-xl,
.rec-mobile-top .oj-dash-logo.rounded-xl {
  background: #ffffff !important;
  border-color: rgba(226, 232, 240, 0.95) !important;
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.12),
    0 0 0 1px rgba(255, 255, 255, 0.06) inset;
}

/* Sidebar surfaces — theme tokens first, then rail modes */
.sidebar,
#sidebar,
.med-sidebar,
.leg-sidebar,
.rec-sidebar,
.biz-sidebar {
  background: linear-gradient(180deg, var(--oj-sidebar-bg) 0%, var(--oj-sidebar-bg-end) 100%) !important;
  border-right: 1px solid var(--oj-sidebar-border) !important;
  color: var(--oj-sidebar-text) !important;
}
html[data-oj-rail="ink"] .sidebar,
html[data-oj-rail="ink"] #sidebar,
html[data-oj-rail="ink"] .med-sidebar,
html[data-oj-rail="ink"] .leg-sidebar,
html[data-oj-rail="ink"] .rec-sidebar {
  background: linear-gradient(180deg, var(--oj-sidebar-bg) 0%, var(--oj-sidebar-bg-end) 100%) !important;
}
html[data-oj-rail="deep"] .sidebar,
html[data-oj-rail="deep"] #sidebar,
html[data-oj-rail="deep"] .med-sidebar,
html[data-oj-rail="deep"] .leg-sidebar,
html[data-oj-rail="deep"] .rec-sidebar {
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--oj-sidebar-bg) 75%, #000) 0%,
    #020617 100%
  ) !important;
}
html[data-oj-rail="tinted"] .sidebar,
html[data-oj-rail="tinted"] #sidebar,
html[data-oj-rail="tinted"] .med-sidebar,
html[data-oj-rail="tinted"] .leg-sidebar,
html[data-oj-rail="tinted"] .rec-sidebar {
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--oj-nav-accent) 18%, var(--oj-sidebar-bg)) 0%,
    var(--oj-sidebar-bg) 42%,
    var(--oj-sidebar-bg-end) 100%
  ) !important;
}

/* Nav links — theme-aware hover/active (shared) */
#tradie-nav .nav-link,
#customer-nav .nav-link,
#admin-nav .nav-link,
#tradie-nav .nav-group-btn,
#customer-nav .nav-group-btn,
#admin-nav .nav-group-btn,
.sidebar .nav-link,
.sidebar .nav-group-btn {
  color: var(--oj-sidebar-text);
}
#tradie-nav .nav-link.active,
#customer-nav .nav-link.active,
#admin-nav .nav-link.active,
#tradie-nav .nav-group-btn.active,
#customer-nav .nav-group-btn.active,
#admin-nav .nav-group-btn.active,
.sidebar .nav-link.active,
.sidebar .nav-group-btn.active {
  background-color: var(--oj-sidebar-active) !important;
  color: var(--oj-nav-active-fg) !important;
  box-shadow: inset 3px 0 0 var(--oj-nav-accent) !important;
}
#tradie-nav .nav-link:hover,
#customer-nav .nav-link:hover,
#admin-nav .nav-link:hover,
#tradie-nav .nav-group-btn:hover,
#customer-nav .nav-group-btn:hover,
#admin-nav .nav-group-btn:hover,
.sidebar .nav-link:hover,
.sidebar .nav-group-btn:hover {
  background-color: var(--oj-sidebar-hover) !important;
  color: var(--oj-nav-active-fg) !important;
}
.sidebar .nav-sub {
  border-left-color: var(--oj-sidebar-sub-border) !important;
}
.sidebar-footer {
  border-top-color: var(--oj-sidebar-border) !important;
}

/* Icon modes - only inside main nav trees */
html[data-oj-icons="muted"] #tradie-nav i,
html[data-oj-icons="muted"] #customer-nav i,
html[data-oj-icons="muted"] #admin-nav i,
html[data-oj-icons="muted"] .sidebar i {
  color: var(--oj-sidebar-muted) !important;
}
html[data-oj-icons="mono"] #tradie-nav i,
html[data-oj-icons="mono"] #customer-nav i,
html[data-oj-icons="mono"] #admin-nav i,
html[data-oj-icons="mono"] .sidebar i,
html[data-oj-icons="mono"] .med-sidebar i,
html[data-oj-icons="mono"] .leg-sidebar i,
html[data-oj-icons="mono"] .rec-sidebar i {
  color: var(--oj-sidebar-icon, var(--oj-nav-accent)) !important;
  opacity: 0.92;
}
/* Colour icons still use theme accent wash on active */
html[data-oj-icons="colour"] #tradie-nav .nav-link.active i,
html[data-oj-icons="colour"] #customer-nav .nav-link.active i,
html[data-oj-icons="colour"] #admin-nav .nav-link.active i {
  filter: saturate(1.05);
}

/* High contrast - thicker rails, stronger type, borders (not colour alone) */
html[data-oj-contrast="high"] #tradie-nav .nav-link,
html[data-oj-contrast="high"] #customer-nav .nav-link,
html[data-oj-contrast="high"] #admin-nav .nav-link,
html[data-oj-contrast="high"] #tradie-nav .nav-group-btn,
html[data-oj-contrast="high"] #customer-nav .nav-group-btn,
html[data-oj-contrast="high"] #admin-nav .nav-group-btn {
  font-weight: 700;
  border: 1px solid transparent;
}
html[data-oj-contrast="high"] #tradie-nav .nav-link.active,
html[data-oj-contrast="high"] #customer-nav .nav-link.active,
html[data-oj-contrast="high"] #admin-nav .nav-link.active,
html[data-oj-contrast="high"] #tradie-nav .nav-group-btn.active,
html[data-oj-contrast="high"] #customer-nav .nav-group-btn.active,
html[data-oj-contrast="high"] #admin-nav .nav-group-btn.active {
  background-color: #1e2937 !important;
  color: #ffffff !important;
  border-color: rgba(255, 255, 255, 0.35) !important;
  box-shadow:
    inset 5px 0 0 var(--oj-nav-accent),
    inset 0 0 0 1px rgba(255, 255, 255, 0.12) !important;
}
html[data-oj-contrast="high"] #tradie-nav .nav-link:hover,
html[data-oj-contrast="high"] #customer-nav .nav-link:hover,
html[data-oj-contrast="high"] #admin-nav .nav-link:hover {
  border-color: rgba(255, 255, 255, 0.2);
}
html[data-oj-contrast="high"] #tradie-nav i,
html[data-oj-contrast="high"] #customer-nav i,
html[data-oj-contrast="high"] #admin-nav i {
  opacity: 1 !important;
}
/* High contrast prefers mono icons unless user chose colour explicitly - boost mono/muted */
html[data-oj-contrast="high"][data-oj-icons="muted"] #tradie-nav i,
html[data-oj-contrast="high"][data-oj-icons="muted"] #customer-nav i,
html[data-oj-contrast="high"][data-oj-icons="muted"] #admin-nav i {
  color: #e2e8f0 !important;
}
html[data-oj-contrast="high"] .sidebar {
  border-right: 1px solid rgba(255, 255, 255, 0.12);
}
html[data-oj-contrast="high"] .oj-chrome-swatch.is-selected {
  box-shadow: 0 0 0 2px #0f172a, 0 0 0 4px #fff, 0 0 0 6px var(--swatch, #0ea5e9);
}
html[data-oj-contrast="high"] .oj-footer-icon-btn {
  border-width: 2px;
}
html[data-oj-contrast="high"].dark body {
  background-color: #000 !important;
}
html[data-oj-contrast="high"] body:not(.dark) {
  /* light page: slightly stronger text when high contrast */
}

/* Chrome picker popover - fixed via JS (avoids sidebar overflow clipping in browser) */
.oj-chrome-panel {
  position: fixed;
  z-index: 10050;
  width: min(300px, calc(100vw - 24px));
  max-height: min(520px, calc(100vh - 24px));
}
.oj-chrome-panel.hidden {
  display: none !important;
}
.oj-chrome-panel-inner {
  background: #0f172a;
  border: 1px solid #334155;
  border-radius: 1rem;
  padding: 0.75rem 0.85rem 0.9rem;
  box-shadow: 0 18px 40px -16px rgb(0 0 0 / 0.55);
  max-height: inherit;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
.oj-chrome-title {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #64748b;
  margin: 0.45rem 0 0.4rem;
}
.oj-chrome-title:first-child {
  margin-top: 0;
}
.oj-chrome-swatches {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.oj-chrome-swatch {
  width: 1.55rem;
  height: 1.55rem;
  border-radius: 9999px;
  border: 2px solid rgba(255, 255, 255, 0.12);
  background: var(--swatch, #0ea5e9);
  cursor: pointer;
  padding: 0;
  transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.oj-chrome-swatch:hover {
  transform: scale(1.08);
}
.oj-chrome-swatch.is-selected {
  box-shadow: 0 0 0 2px #0f172a, 0 0 0 4px var(--swatch, #0ea5e9);
}
.oj-chrome-modes {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}
.oj-chrome-mode-btn {
  font-size: 11px;
  font-weight: 600;
  padding: 0.3rem 0.55rem;
  border-radius: 0.55rem;
  border: 1px solid #334155;
  background: transparent;
  color: #94a3b8;
  cursor: pointer;
}
.oj-chrome-mode-btn:hover {
  background: #1e2937;
  color: #e2e8f0;
}
.oj-chrome-mode-btn.is-selected {
  border-color: color-mix(in srgb, var(--oj-nav-accent) 55%, #334155);
  background: color-mix(in srgb, var(--oj-nav-accent) 18%, transparent);
  color: var(--oj-nav-active-fg);
}
.oj-chrome-hint {
  font-size: 10px;
  line-height: 1.35;
  color: #64748b;
  margin: 0.35rem 0 0.15rem;
}
.oj-chrome-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-top: 0.75rem;
  padding-top: 0.65rem;
  border-top: 1px solid #1e2937;
}
.oj-chrome-default-btn {
  font-size: 11px;
  font-weight: 700;
  padding: 0.35rem 0.7rem;
  border-radius: 0.55rem;
  border: 1px solid #475569;
  background: #1e2937;
  color: #e2e8f0;
  cursor: pointer;
}
.oj-chrome-default-btn:hover {
  background: #334155;
  border-color: #64748b;
}
.oj-chrome-sync-hint {
  font-size: 10px;
  color: #64748b;
  text-align: right;
  flex: 1;
  min-width: 0;
  line-height: 1.3;
}
/* ---------- Page chrome ---------- */
html.dark body {
  background-color: #0b1220 !important;
  color: #e2e8f0;
}

html.dark body.bg-slate-50,
html.dark body.bg-slate-100 {
  background-color: #0b1220 !important;
}

/* Mobile top bars */
html.dark .md\:hidden.fixed.top-0.bg-white,
html.dark .md\:hidden.fixed.top-0 {
  background-color: #0f172a !important;
  border-color: #1e2937 !important;
  color: #e2e8f0;
}

html.dark #mobile-menu-btn {
  color: #e2e8f0 !important;
}

/* ---------- Surfaces ---------- */
html.dark .bg-white {
  background-color: #1e2937 !important;
}
html.dark .bg-slate-50 {
  background-color: #0f172a !important;
}
html.dark .bg-slate-100 {
  background-color: #1e2937 !important;
}
html.dark .bg-slate-200 {
  background-color: #334155 !important;
}
html.dark .hover\:bg-slate-50:hover {
  background-color: #1e2937 !important;
}
html.dark .hover\:bg-slate-100:hover {
  background-color: #334155 !important;
}
html.dark .hover\:bg-slate-200:hover {
  background-color: #475569 !important;
}
html.dark .hover\:bg-white:hover {
  background-color: #334155 !important;
}

/* Soft tinted panels → deeper equivalents */
html.dark .bg-emerald-50 {
  background-color: rgba(6, 78, 59, 0.35) !important;
}
html.dark .bg-amber-50 {
  background-color: rgba(120, 53, 15, 0.35) !important;
}
html.dark .bg-orange-50 {
  background-color: rgba(124, 45, 18, 0.35) !important;
}
html.dark .bg-sky-50,
html.dark .bg-blue-50 {
  background-color: rgba(12, 74, 110, 0.35) !important;
}
html.dark .bg-red-50,
html.dark .bg-rose-50 {
  background-color: rgba(127, 29, 29, 0.35) !important;
}
html.dark .bg-violet-50,
html.dark .bg-purple-50 {
  background-color: rgba(76, 29, 149, 0.3) !important;
}
html.dark .bg-cyan-50 {
  background-color: rgba(22, 78, 99, 0.35) !important;
}

/* ---------- Borders ---------- */
html.dark .border-slate-100,
html.dark .border-slate-200,
html.dark .border-slate-300 {
  border-color: #334155 !important;
}
html.dark .border-2.border-slate-200 {
  border-color: #334155 !important;
}
html.dark .border-emerald-200 {
  border-color: rgba(16, 185, 129, 0.35) !important;
}
html.dark .border-amber-200 {
  border-color: rgba(245, 158, 11, 0.35) !important;
}
html.dark .border-orange-200 {
  border-color: rgba(249, 115, 22, 0.35) !important;
}
html.dark .border-sky-200,
html.dark .border-blue-200 {
  border-color: rgba(56, 189, 248, 0.3) !important;
}
html.dark .border-red-200,
html.dark .border-rose-200 {
  border-color: rgba(248, 113, 113, 0.35) !important;
}
html.dark .divide-slate-100 > :not([hidden]) ~ :not([hidden]),
html.dark .divide-slate-200 > :not([hidden]) ~ :not([hidden]) {
  border-color: #334155 !important;
}

/* ---------- Text ---------- */
html.dark .text-slate-900,
html.dark .text-slate-800 {
  color: #f1f5f9 !important;
}
html.dark .text-slate-700 {
  color: #e2e8f0 !important;
}
html.dark .text-slate-600 {
  color: #cbd5e1 !important;
}
html.dark .text-slate-500 {
  color: #94a3b8 !important;
}
html.dark .text-slate-400 {
  color: #94a3b8 !important;
}
html.dark .text-slate-300 {
  color: #cbd5e1 !important;
}

html.dark .text-emerald-800,
html.dark .text-emerald-700 {
  color: #6ee7b7 !important;
}
html.dark .text-amber-800,
html.dark .text-amber-700 {
  color: #fcd34d !important;
}
html.dark .text-orange-800,
html.dark .text-orange-700 {
  color: #fdba74 !important;
}
html.dark .text-blue-800,
html.dark .text-blue-700,
html.dark .text-sky-800,
html.dark .text-sky-700 {
  color: #7dd3fc !important;
}
html.dark .text-red-800,
html.dark .text-red-700,
html.dark .text-rose-800,
html.dark .text-rose-700,
html.dark .text-rose-600 {
  color: #fca5a5 !important;
}

/* Placeholders */
html.dark ::placeholder {
  color: #64748b !important;
  opacity: 1;
}

/* ---------- Forms ---------- */
html.dark input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
html.dark select,
html.dark textarea {
  background-color: #0f172a !important;
  border-color: #334155 !important;
  color: #e2e8f0 !important;
  color-scheme: dark;
}
html.dark input:focus,
html.dark select:focus,
html.dark textarea:focus {
  border-color: #38bdf8 !important;
}
/* Native <option> list: prevent light grey text on white OS popup */
html.dark select option,
html.dark select optgroup {
  background-color: #1e2937 !important;
  color: #f1f5f9 !important;
}

/* White buttons that become unreadable on dark */
html.dark button.bg-white,
html.dark a.bg-white,
html.dark .bg-white.text-blue-700,
html.dark .bg-white.text-sky-700 {
  background-color: #334155 !important;
  color: #e0f2fe !important;
}
html.dark .hover\:bg-blue-50:hover {
  background-color: #1e3a5f !important;
}

/* ---------- Shadows / rings ---------- */
html.dark .shadow-sm,
html.dark .shadow,
html.dark .shadow-md,
html.dark .shadow-lg,
html.dark .shadow-xl,
html.dark .shadow-2xl {
  --tw-shadow-color: rgb(0 0 0 / 0.45);
  box-shadow: 0 10px 25px -12px rgb(0 0 0 / 0.55) !important;
}
html.dark .ring-slate-200,
html.dark .ring-slate-100 {
  --tw-ring-color: #334155;
}

/* ---------- Tables ---------- */
html.dark table thead,
html.dark thead {
  background-color: #0f172a !important;
}
html.dark tr:hover {
  background-color: rgba(51, 65, 85, 0.35);
}

/* ---------- Modals / overlays ---------- */
html.dark .bg-slate-900\/60 {
  background-color: rgb(2 6 23 / 0.75) !important;
}

/* ---------- Estimate tabs (customer) ---------- */
html.dark .estimate-tab {
  color: #94a3b8;
}
html.dark .oj-stars-muted {
  color: #475569 !important;
}
html.dark .oj-star-picker button {
  color: #475569 !important;
}
html.dark .oj-star-picker button.on {
  color: #f59e0b !important;
}

/* ---------- Diary calendar (tradie custom CSS) ---------- */
html.dark .calendar-day {
  background: #1e2937 !important;
  color: #e2e8f0 !important;
  border-color: #334155 !important;
}
html.dark .calendar-day:not(.other-month):hover {
  border-color: #475569 !important;
  box-shadow: 0 4px 12px -4px rgb(0 0 0 / 0.4) !important;
}
html.dark .calendar-day.other-month {
  color: #475569 !important;
  background: #0f172a !important;
}
html.dark .calendar-day.has-proposed {
  background: linear-gradient(145deg, #422006 0%, #78350f 100%) !important;
  color: #fde68a !important;
  border-color: #a16207 !important;
}
html.dark .calendar-day.has-confirmed {
  background: linear-gradient(145deg, #064e3b 0%, #065f46 100%) !important;
  color: #a7f3d0 !important;
  border-color: #059669 !important;
}
html.dark .calendar-day.has-both {
  background: linear-gradient(145deg, #064e3b 0%, #78350f 100%) !important;
  color: #99f6e4 !important;
  border-color: #0d9488 !important;
}
html.dark .calendar-day .job-dot {
  box-shadow: 0 0 0 2px rgba(15, 23, 42, 0.9) !important;
}

/* Classic diary paper blocks if present */
html.dark .desk-diary,
html.dark .classic-diary-page {
  background: #1e2937 !important;
  color: #e2e8f0 !important;
  border-color: #334155 !important;
}

/* ---------- Cards / job cards ---------- */
.job-card {
  transition:
    transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.28s ease,
    border-color 0.2s ease !important;
  will-change: transform;
}
.job-card:hover {
  transform: translateY(-5px) scale(1.01);
  box-shadow:
    0 0 0 1px rgba(56, 189, 248, 0.2),
    0 18px 36px -14px rgba(2, 132, 199, 0.28),
    0 12px 28px -12px rgb(15 23 42 / 0.18) !important;
  border-color: color-mix(in srgb, #38bdf8 35%, #e2e8f0) !important;
  z-index: 2;
}
html.dark .job-card:hover {
  box-shadow:
    0 0 0 1px rgba(56, 189, 248, 0.28),
    0 20px 40px -14px rgba(0, 0, 0, 0.55),
    0 0 32px -12px rgba(56, 189, 248, 0.3) !important;
  border-color: rgba(56, 189, 248, 0.35) !important;
}
html.envisage .job-card:hover {
  box-shadow:
    0 0 0 1px rgba(56, 189, 248, 0.3),
    0 20px 42px -14px rgba(0, 0, 0, 0.5),
    0 0 34px -10px rgba(56, 189, 248, 0.32) !important;
  border-color: rgba(56, 189, 248, 0.38) !important;
}
@media (prefers-reduced-motion: reduce) {
  .job-card,
  .job-card:hover {
    transform: none !important;
    transition: border-color 0.15s ease, box-shadow 0.15s ease !important;
  }
}

/* ---------- Theme toggle + compact sidebar footer ---------- */
.oj-theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  border-radius: 0.75rem;
  font-size: 0.75rem;
  font-weight: 600;
  transition: background 0.15s ease, color 0.15s ease;
}
.oj-theme-toggle-sidebar {
  width: 100%;
  padding: 0.45rem 0.75rem;
  color: #94a3b8;
  background: transparent;
  border: 1px solid #334155;
  margin-bottom: 0.5rem;
}
.oj-theme-toggle-sidebar:hover {
  background: #1e2937;
  color: #e2e8f0;
}
/* Icon-only (compact footers) */
.oj-theme-toggle-icon,
.oj-footer-icon-btn {
  width: 2rem;
  height: 2rem;
  padding: 0;
  border-radius: 0.65rem;
  color: #94a3b8;
  background: transparent;
  border: 1px solid #334155;
  flex-shrink: 0;
}
.oj-theme-toggle-icon:hover,
.oj-footer-icon-btn:hover {
  background: #1e2937;
  color: #e2e8f0;
}
/* Sign out - always reddish so it reads as “leave” at a glance */
.oj-footer-icon-btn.logout {
  color: #f87171;
  border-color: rgba(248, 113, 113, 0.45);
  background: rgba(127, 29, 29, 0.25);
}
.oj-footer-icon-btn.logout:hover {
  background: rgba(185, 28, 28, 0.5);
  color: #fecaca;
  border-color: rgba(252, 165, 165, 0.55);
}
.oj-theme-toggle-mobile {
  width: 2.5rem;
  height: 2.5rem;
  color: #334155;
  background: #f1f5f9;
  border: none;
}
html.dark .oj-theme-toggle-mobile {
  color: #e2e8f0;
  background: #1e2937;
}
.oj-theme-toggle .oj-theme-icon-sun { display: none; }
.oj-theme-toggle .oj-theme-icon-moon { display: inline-block; }
html.dark .oj-theme-toggle .oj-theme-icon-sun { display: inline-block; }
html.dark .oj-theme-toggle .oj-theme-icon-moon { display: none; }
.oj-theme-toggle-sidebar .oj-theme-label-dark { display: inline; }
.oj-theme-toggle-sidebar .oj-theme-label-light { display: none; }
html.dark .oj-theme-toggle-sidebar .oj-theme-label-dark { display: none; }
html.dark .oj-theme-toggle-sidebar .oj-theme-label-light { display: inline; }
.oj-theme-toggle-icon .oj-theme-label-dark,
.oj-theme-toggle-icon .oj-theme-label-light {
  display: none !important;
}

/* Slim sticky footer under scrollable nav */
.sidebar-footer {
  position: relative;
  padding: 0.65rem 0.75rem 0.75rem;
  border-top: 1px solid #334155;
  flex-shrink: 0;
}
/* Allow nav to shrink so footer stays on-screen; scroll inside the list */
.sidebar {
  max-height: 100vh;
  max-height: 100dvh;
  overflow: hidden;
}
.sidebar-nav-scroll,
.sidebar > .flex-1.overflow-y-auto,
.sidebar > .overflow-y-auto {
  min-height: 0;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
.sidebar-footer-tools {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.35rem;
  margin-bottom: 0.5rem;
}
.sidebar-footer-user {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  width: 100%;
  text-align: center;
  padding: 0.55rem 0.5rem 0.45rem;
  margin: 0;
  border-radius: 0.85rem;
  transition: background 0.12s ease;
}
.sidebar-footer-user:hover {
  background: rgba(30, 41, 59, 0.85);
}
.sidebar-footer-user img {
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 9999px;
  object-fit: cover;
  flex-shrink: 0;
  border-width: 2px;
}
.sidebar-footer-user-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  min-width: 0;
  overflow: hidden;
  gap: 0.2rem;
}
.sidebar-footer-user-name {
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.2;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sidebar-footer-user-rating {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.35rem;
  max-width: 100%;
}
.sidebar-footer-user-rating .oj-stars {
  font-size: 0.7rem !important;
}
.sidebar-footer-user-score {
  font-size: 0.7rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: rgba(253, 230, 138, 0.95);
  line-height: 1;
}
.sidebar-footer-user-sub {
  font-size: 0.65rem;
  line-height: 1.2;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  opacity: 0.9;
}
.sidebar-footer-meta {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  margin-top: 0.4rem;
  padding: 0 0.15rem;
}
.sidebar-footer-meta .app-version-label {
  margin: 0 !important;
  text-align: center;
  font-size: 9px;
  line-height: 1.2;
  width: 100%;
}
.oj-session-remaining {
  text-align: center;
  max-width: 100%;
  padding: 0 0.25rem;
  opacity: 0.9;
}
.oj-session-remaining--warn {
  color: #fbbf24 !important;
  opacity: 1;
}
.oj-session-remaining--crit {
  color: #f87171 !important;
  opacity: 1;
  font-weight: 600;
}
.sidebar-footer-signout {
  font-size: 11px;
  font-weight: 600;
  color: #f87171;
  padding: 0.15rem 0.35rem;
  border-radius: 0.4rem;
  white-space: nowrap;
}
.sidebar-footer-signout:hover {
  background: rgba(127, 29, 29, 0.35);
  color: #fca5a5;
}

/* Prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
  .oj-theme-toggle { transition: none; }
}

/* ---------- Exclusive role / tier chips - all dashboards ---------- */
.tradie-tier-pill,
.oj-status-chip,
.med-chip,
.leg-chip,
.rec-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.42rem;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  line-height: 1.2;
  padding: 0.32rem 0.7rem 0.32rem 0.55rem;
  border-radius: 9999px;
  border: 1px solid transparent;
  background: transparent;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.04) inset,
    0 1px 2px rgba(0, 0, 0, 0.18);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  transition:
    background 0.2s ease,
    border-color 0.2s ease,
    color 0.2s ease,
    box-shadow 0.25s ease,
    filter 0.2s ease;
  cursor: default;
  user-select: none;
}
.tradie-tier-pill {
  cursor: pointer;
}
/* Live status: ONLY the little dot gently glows - chip body stays still */
.tradie-tier-pill::before,
.oj-status-chip::before,
.med-chip::before,
.leg-chip::before,
.rec-chip::before {
  content: '';
  width: 0.4rem;
  height: 0.4rem;
  border-radius: 9999px;
  flex-shrink: 0;
  background: currentColor;
  opacity: 0.95;
  box-shadow: 0 0 4px 0 color-mix(in srgb, currentColor 45%, transparent);
  animation: oj-status-dot-glow 2.8s ease-in-out infinite;
}
/* Dot only - soft halo, no scale/bounce */
@keyframes oj-status-dot-glow {
  0%, 100% {
    opacity: 0.75;
    box-shadow:
      0 0 2px 0 color-mix(in srgb, currentColor 35%, transparent),
      0 0 6px 0 color-mix(in srgb, currentColor 15%, transparent);
  }
  50% {
    opacity: 1;
    box-shadow:
      0 0 4px 1px color-mix(in srgb, currentColor 65%, transparent),
      0 0 10px 2px color-mix(in srgb, currentColor 28%, transparent);
  }
}
@media (prefers-reduced-motion: reduce) {
  .tradie-tier-pill::before,
  .oj-status-chip::before,
  .med-chip::before,
  .leg-chip::before,
  .rec-chip::before {
    animation: none;
    box-shadow: 0 0 5px 1px color-mix(in srgb, currentColor 40%, transparent);
  }
}
.tradie-tier-pill.tier-apprentice {
  color: #fed7aa;
  background: linear-gradient(135deg, rgba(249, 115, 22, 0.24), rgba(154, 52, 18, 0.4));
  border-color: rgba(251, 146, 60, 0.45);
  box-shadow:
    0 0 0 1px rgba(254, 215, 170, 0.1) inset,
    0 0 14px rgba(249, 115, 22, 0.16),
    0 1px 2px rgba(0, 0, 0, 0.2);
}
.tradie-tier-pill.tier-trade {
  color: #a7f3d0;
  background: linear-gradient(135deg, rgba(16, 185, 129, 0.2), rgba(6, 78, 59, 0.35));
  border-color: rgba(52, 211, 153, 0.38);
  box-shadow:
    0 0 0 1px rgba(167, 243, 208, 0.08) inset,
    0 0 14px rgba(16, 185, 129, 0.12),
    0 1px 2px rgba(0, 0, 0, 0.2);
}
.tradie-tier-pill.tier-pro {
  color: #bae6fd;
  background: linear-gradient(135deg, rgba(14, 165, 233, 0.22), rgba(12, 74, 110, 0.38));
  border-color: rgba(56, 189, 248, 0.4);
  box-shadow:
    0 0 0 1px rgba(186, 230, 253, 0.08) inset,
    0 0 14px rgba(14, 165, 233, 0.14),
    0 1px 2px rgba(0, 0, 0, 0.2);
}
.tradie-tier-pill.tier-elite {
  color: #ddd6fe;
  background: linear-gradient(135deg, rgba(139, 92, 246, 0.26), rgba(76, 29, 149, 0.4));
  border-color: rgba(167, 139, 250, 0.45);
  box-shadow:
    0 0 0 1px rgba(221, 214, 254, 0.1) inset,
    0 0 16px rgba(139, 92, 246, 0.18),
    0 1px 2px rgba(0, 0, 0, 0.22);
}
.tradie-tier-pill:hover {
  filter: brightness(1.1);
}
/* Customer “Free to post” / admin chip - same quiet language */
.oj-status-chip.chip-free {
  color: #a7f3d0;
  background: linear-gradient(135deg, rgba(16, 185, 129, 0.2), rgba(6, 78, 59, 0.35));
  border-color: rgba(52, 211, 153, 0.38);
  box-shadow:
    0 0 0 1px rgba(167, 243, 208, 0.08) inset,
    0 0 14px rgba(16, 185, 129, 0.12),
    0 1px 2px rgba(0, 0, 0, 0.2);
}
.oj-status-chip.chip-customer {
  color: #bae6fd;
  background: linear-gradient(135deg, rgba(14, 165, 233, 0.24), rgba(12, 74, 110, 0.4));
  border-color: rgba(56, 189, 248, 0.42);
  box-shadow:
    0 0 0 1px rgba(186, 230, 253, 0.1) inset,
    0 0 16px rgba(14, 165, 233, 0.16),
    0 1px 2px rgba(0, 0, 0, 0.2);
}
.oj-status-chip.chip-tradie {
  color: #a7f3d0;
  background: linear-gradient(135deg, rgba(16, 185, 129, 0.22), rgba(6, 78, 59, 0.38));
  border-color: rgba(52, 211, 153, 0.4);
  box-shadow:
    0 0 0 1px rgba(167, 243, 208, 0.08) inset,
    0 0 14px rgba(16, 185, 129, 0.14),
    0 1px 2px rgba(0, 0, 0, 0.2);
}
.oj-status-chip.chip-medical,
.med-chip {
  color: #5eead4;
  background: linear-gradient(135deg, rgba(20, 184, 166, 0.24), rgba(15, 118, 110, 0.4));
  border-color: rgba(45, 212, 191, 0.42);
  box-shadow:
    0 0 0 1px rgba(94, 234, 212, 0.1) inset,
    0 0 16px rgba(20, 184, 166, 0.16),
    0 1px 2px rgba(0, 0, 0, 0.2);
}
.oj-status-chip.chip-legal,
.leg-chip {
  color: #c7d2fe;
  background: linear-gradient(135deg, rgba(99, 102, 241, 0.26), rgba(49, 46, 129, 0.42));
  border-color: rgba(165, 180, 252, 0.42);
  box-shadow:
    0 0 0 1px rgba(199, 210, 254, 0.1) inset,
    0 0 16px rgba(99, 102, 241, 0.16),
    0 1px 2px rgba(0, 0, 0, 0.2);
}
.oj-status-chip.chip-recruitment,
.rec-chip {
  color: #f5d0fe;
  background: linear-gradient(135deg, rgba(192, 38, 211, 0.26), rgba(112, 26, 117, 0.42));
  border-color: rgba(232, 121, 249, 0.42);
  box-shadow:
    0 0 0 1px rgba(245, 208, 254, 0.1) inset,
    0 0 16px rgba(192, 38, 211, 0.16),
    0 1px 2px rgba(0, 0, 0, 0.2);
}
/* Recruitment plan sub-chip (Essential / Agency / Pro) - same exclusive shell, no second pulse if nested icon */
.rec-chip.rec-chip-plan {
  text-transform: none;
  letter-spacing: 0.04em;
  font-size: 0.6875rem;
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.04));
  color: #fae8ff;
  border-color: rgba(255, 255, 255, 0.2);
}
.rec-chip.rec-chip-plan.is-agency {
  background: linear-gradient(135deg, rgba(232, 121, 249, 0.32), rgba(192, 38, 211, 0.28));
  border-color: rgba(240, 171, 252, 0.48);
  color: #fdf4ff;
}
.rec-chip.rec-chip-plan.is-pro {
  background: linear-gradient(135deg, rgba(124, 58, 237, 0.42), rgba(192, 38, 211, 0.32));
  border-color: rgba(196, 181, 253, 0.48);
  color: #f5f3ff;
}
.oj-status-chip.chip-admin {
  color: #fecaca;
  background: linear-gradient(135deg, rgba(239, 68, 68, 0.22), rgba(127, 29, 29, 0.42));
  border-color: rgba(248, 113, 113, 0.48);
  box-shadow:
    0 0 0 1px rgba(254, 202, 202, 0.1) inset,
    0 0 16px rgba(239, 68, 68, 0.14),
    0 1px 2px rgba(0, 0, 0, 0.22);
  gap: 0.4rem;
}
/* Red shield chip - hide default colour dot; use FA shield instead */
.oj-status-chip.chip-admin::before {
  display: none;
}
/* Icon-leading role chips: hide dot; icon gets the gentle glow */
.oj-status-chip.has-icon::before,
.med-chip.has-icon::before,
.leg-chip.has-icon::before,
.rec-chip.has-icon::before {
  display: none;
}
.oj-status-chip.has-icon i,
.med-chip.has-icon i,
.leg-chip.has-icon i,
.rec-chip.has-icon i,
.oj-status-chip.chip-admin i {
  font-size: 0.65rem;
  line-height: 1;
  opacity: 0.95;
  /* Static soft light on icon chips - no body pulse */
  filter: drop-shadow(0 0 3px color-mix(in srgb, currentColor 45%, transparent));
}
/*
 * Admin footer seal - heraldic badge, not a sticker.
 * Layers: antique-gold rim → oxblood edge → portrait face → soft sheen.
 */
.admin-footer-shield {
  --admin-shield: polygon(
    50% 0%,
    97% 3%,
    100% 14%,
    100% 56%,
    74% 82%,
    50% 100%,
    26% 82%,
    0% 56%,
    0% 14%,
    3% 3%
  );
  position: relative;
  display: block;
  width: 2.9rem;
  height: 3.35rem;
  flex-shrink: 0;
  isolation: isolate;
  filter:
    drop-shadow(0 1px 0 rgba(253, 230, 138, 0.22))
    drop-shadow(0 4px 10px rgba(0, 0, 0, 0.55))
    drop-shadow(0 0 14px rgba(127, 29, 29, 0.28));
  transition: filter 0.18s ease, transform 0.18s ease;
}
.sidebar-footer-user--admin:hover .admin-footer-shield {
  transform: translateY(-1px);
  filter:
    drop-shadow(0 1px 0 rgba(253, 230, 138, 0.35))
    drop-shadow(0 6px 14px rgba(0, 0, 0, 0.6))
    drop-shadow(0 0 18px rgba(153, 27, 27, 0.35));
}

/*
 * Admin sidebar footer - compact so the nav list keeps most of the height
 * on small laptops (the old stacked seal + tools + meta ate ~1/4 of the rail).
 */
#sidebar .sidebar-footer {
  padding: 0.4rem 0.55rem 0.45rem;
}
#sidebar #oj-pwa-install-banner {
  margin-left: 0.15rem;
  margin-right: 0.15rem;
  margin-bottom: 0.35rem;
  padding: 0.45rem 0.55rem;
}
#sidebar #oj-pwa-install-banner p {
  line-height: 1.25;
}
#sidebar .sidebar-footer-tools {
  margin-bottom: 0.3rem;
  gap: 0.2rem;
}
#sidebar .sidebar-footer-tools .oj-footer-icon-btn {
  width: 1.65rem;
  height: 1.65rem;
  border-radius: 0.5rem;
}
#sidebar .sidebar-footer-tools .oj-footer-icon-btn i {
  font-size: 0.65rem;
}
/* Avatar + name on one row (was stacked and very tall) */
#sidebar .sidebar-footer-user--admin {
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  text-align: left;
  gap: 0.5rem;
  padding: 0.3rem 0.4rem;
  border-radius: 0.7rem;
}
#sidebar .sidebar-footer-user--admin .sidebar-footer-user-body {
  align-items: flex-start;
  gap: 0.08rem;
  min-width: 0;
  flex: 1 1 auto;
  direction: ltr;
  text-align: left;
  unicode-bidi: plaintext;
}
#sidebar .sidebar-footer-user--admin .sidebar-footer-user-name {
  font-size: 0.75rem;
  direction: ltr;
  text-align: left;
  unicode-bidi: plaintext;
  width: 100%;
}
#sidebar .sidebar-footer-user--admin .sidebar-footer-user-sub {
  font-size: 0.58rem;
  line-height: 1.15;
  white-space: normal;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  direction: ltr;
  text-align: left;
  width: 100%;
}
#sidebar .admin-footer-shield {
  width: 2rem;
  height: 2.3rem;
  filter:
    drop-shadow(0 1px 0 rgba(253, 230, 138, 0.18))
    drop-shadow(0 2px 6px rgba(0, 0, 0, 0.45))
    drop-shadow(0 0 8px rgba(127, 29, 29, 0.2));
}
#sidebar .sidebar-footer-user--admin:hover .admin-footer-shield {
  transform: translateY(-0.5px);
  filter:
    drop-shadow(0 1px 0 rgba(253, 230, 138, 0.3))
    drop-shadow(0 3px 8px rgba(0, 0, 0, 0.5))
    drop-shadow(0 0 10px rgba(153, 27, 27, 0.28));
}
#sidebar .admin-footer-shield-face {
  inset: 2px;
}
/* Version + session on one compact row */
#sidebar .sidebar-footer-meta {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.15rem 0.45rem;
  margin-top: 0.2rem;
  padding: 0;
}
#sidebar .sidebar-footer-meta .app-version-label {
  font-size: 8px;
  width: auto;
}
#sidebar .sidebar-footer-meta .oj-session-remaining {
  font-size: 8px;
  margin-top: 0 !important;
  padding: 0;
  line-height: 1.2;
}

/* Short laptop viewports - reclaim even more nav height */
@media (max-height: 820px) {
  #sidebar .sidebar-footer {
    padding: 0.28rem 0.45rem 0.35rem;
  }
  #sidebar .sidebar-footer-tools {
    margin-bottom: 0.2rem;
  }
  #sidebar .sidebar-footer-tools .oj-footer-icon-btn {
    width: 1.5rem;
    height: 1.5rem;
  }
  #sidebar .admin-footer-shield {
    width: 1.75rem;
    height: 2rem;
  }
  #sidebar .sidebar-footer-user--admin {
    padding: 0.2rem 0.3rem;
    gap: 0.4rem;
  }
  #sidebar .sidebar-footer-user--admin .sidebar-footer-user-name {
    font-size: 0.7rem;
  }
  #sidebar .sidebar-footer-user--admin .sidebar-footer-user-sub {
    font-size: 0.55rem;
    -webkit-line-clamp: 1;
    white-space: nowrap;
    display: block;
  }
  #sidebar .sidebar-footer-meta {
    margin-top: 0.1rem;
  }
  #sidebar .sidebar-footer-meta .app-version-label,
  #sidebar .sidebar-footer-meta .oj-session-remaining {
    font-size: 7.5px;
  }
}

@media (max-height: 700px) {
  /* Hide secondary “since …” line when space is critical */
  #sidebar .sidebar-footer-user--admin .sidebar-footer-user-sub {
    display: none;
  }
  #sidebar .sidebar-footer-meta .oj-session-remaining {
    display: none;
  }
}

/* Outer antique gold / brass rim */
.admin-footer-shield-rim {
  position: absolute;
  inset: 0;
  z-index: 0;
  clip-path: var(--admin-shield);
  background:
    linear-gradient(
      145deg,
      #f8efd2 0%,
      #e8c96a 18%,
      #b8860b 42%,
      #8a6419 62%,
      #f0d78c 78%,
      #6b4f12 100%
    );
}

/* Portrait clipped to the same seal - deep crimson bedding under photo edge */
.admin-footer-shield-face {
  position: absolute;
  inset: 2.5px;
  z-index: 1;
  clip-path: var(--admin-shield);
  background:
    linear-gradient(165deg, #7f1d1d 0%, #450a0a 45%, #1c0505 100%);
  overflow: hidden;
}
.sidebar-footer-user .admin-footer-shield img,
.admin-footer-shield-face img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* Square crops from avatar-crop.js are already face-framed; centre them in the seal */
  object-position: center center;
  border: none !important;
  border-radius: 0 !important;
  border-width: 0 !important;
  /* Soft vignette so edges melt into the seal */
  -webkit-mask-image: radial-gradient(ellipse 92% 88% at 50% 42%, #000 54%, transparent 100%);
  mask-image: radial-gradient(ellipse 92% 88% at 50% 42%, #000 54%, transparent 100%);
  filter: saturate(0.92) contrast(1.04);
  background: #1a0a0a;
}

/* Crest sheen + thin inner gold hairline */
.admin-footer-shield-sheen {
  position: absolute;
  inset: 2.5px;
  z-index: 2;
  pointer-events: none;
  clip-path: var(--admin-shield);
  background:
    linear-gradient(
      160deg,
      rgba(255, 248, 220, 0.28) 0%,
      rgba(255, 255, 255, 0.06) 22%,
      transparent 42%
    ),
    linear-gradient(
      to bottom,
      transparent 58%,
      rgba(69, 10, 10, 0.35) 100%
    );
  box-shadow:
    inset 0 0 0 1px rgba(212, 175, 55, 0.35),
    inset 0 1px 0 rgba(255, 248, 220, 0.35);
}

/* Slightly more formal name / tenure line under the seal */
.sidebar-footer-user--admin .sidebar-footer-user-name {
  letter-spacing: 0.02em;
  font-weight: 700;
}
.admin-footer-since {
  color: #f0c4a0 !important;
  opacity: 0.92;
  font-size: 0.62rem !important;
  letter-spacing: 0.04em;
  text-transform: none;
}

/* Admin feature lamps (xAI / SES / On-Call / Suspend) under logo - beat .sidebar text-white */
.sidebar #admin-feature-status {
  gap: 0.35rem;
}
.sidebar .oj-feature-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.5625rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.15rem 0.4rem 0.15rem 0.3rem;
  border-radius: 9999px;
  border: 1px solid transparent;
  line-height: 1;
  cursor: default;
  user-select: none;
  max-width: 100%;
  background: transparent;
  font-family: inherit;
}
.sidebar button.oj-feature-pill {
  cursor: pointer;
}
.sidebar button.oj-feature-pill:hover {
  filter: brightness(1.08);
}
.sidebar .oj-feature-pill i {
  font-size: 0.55rem;
  line-height: 1;
}
.sidebar .oj-feature-pill-state {
  font-size: 0.5rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  padding: 0.08rem 0.28rem;
  border-radius: 9999px;
  line-height: 1.1;
}
/* ON - bright green, unmissable (also without .sidebar parent if markup shifts) */
.sidebar .oj-feature-pill.is-on,
#admin-feature-status .oj-feature-pill.is-on {
  color: #ecfdf5 !important;
  background: rgba(16, 185, 129, 0.45) !important;
  border-color: rgba(52, 211, 153, 0.85) !important;
  box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.35), 0 0 12px rgba(16, 185, 129, 0.35);
}
.sidebar .oj-feature-pill.is-on .oj-feature-pill-state,
#admin-feature-status .oj-feature-pill.is-on .oj-feature-pill-state {
  background: #10b981 !important;
  color: #042f2e !important;
}
.sidebar .oj-feature-pill.is-off,
#admin-feature-status .oj-feature-pill.is-off {
  color: #94a3b8 !important;
  background: rgba(30, 41, 59, 0.85) !important;
  border-color: rgba(71, 85, 105, 0.7) !important;
}
.sidebar .oj-feature-pill.is-warn,
#admin-feature-status .oj-feature-pill.is-warn {
  color: #fffbeb !important;
  background: rgba(245, 158, 11, 0.4) !important;
  border-color: rgba(251, 191, 36, 0.8) !important;
}
/* Cloudflare mode colours (distinct from generic on/off) */
.sidebar .oj-feature-pill.is-cf-atk,
#admin-feature-status .oj-feature-pill.is-cf-atk {
  color: #fff1f2 !important;
  background: rgba(225, 29, 72, 0.55) !important;
  border-color: rgba(251, 113, 133, 0.95) !important;
  box-shadow: 0 0 0 1px rgba(244, 63, 94, 0.45), 0 0 14px rgba(244, 63, 94, 0.45);
  animation: oj-cf-pill-pulse 1.6s ease-in-out infinite;
}
.sidebar .oj-feature-pill.is-cf-atk .oj-feature-pill-state,
#admin-feature-status .oj-feature-pill.is-cf-atk .oj-feature-pill-state {
  background: #e11d48 !important;
  color: #fff !important;
}
.sidebar .oj-feature-pill.is-cf-high,
#admin-feature-status .oj-feature-pill.is-cf-high {
  color: #fffbeb !important;
  background: rgba(245, 158, 11, 0.5) !important;
  border-color: rgba(251, 191, 36, 0.95) !important;
  box-shadow: 0 0 0 1px rgba(245, 158, 11, 0.4), 0 0 12px rgba(245, 158, 11, 0.35);
}
.sidebar .oj-feature-pill.is-cf-high .oj-feature-pill-state,
#admin-feature-status .oj-feature-pill.is-cf-high .oj-feature-pill-state {
  background: #f59e0b !important;
  color: #422006 !important;
}
.sidebar .oj-feature-pill.is-cf-med,
#admin-feature-status .oj-feature-pill.is-cf-med {
  color: #e0f2fe !important;
  background: rgba(14, 165, 233, 0.4) !important;
  border-color: rgba(56, 189, 248, 0.9) !important;
  box-shadow: 0 0 0 1px rgba(14, 165, 233, 0.35), 0 0 10px rgba(14, 165, 233, 0.3);
}
.sidebar .oj-feature-pill.is-cf-med .oj-feature-pill-state,
#admin-feature-status .oj-feature-pill.is-cf-med .oj-feature-pill-state {
  background: #0ea5e9 !important;
  color: #0c4a6e !important;
}
.sidebar .oj-feature-pill.is-cf-low,
#admin-feature-status .oj-feature-pill.is-cf-low {
  color: #ecfdf5 !important;
  background: rgba(16, 185, 129, 0.35) !important;
  border-color: rgba(52, 211, 153, 0.85) !important;
}
.sidebar .oj-feature-pill.is-cf-low .oj-feature-pill-state,
#admin-feature-status .oj-feature-pill.is-cf-low .oj-feature-pill-state {
  background: #10b981 !important;
  color: #042f2e !important;
}
@keyframes oj-cf-pill-pulse {
  0%, 100% { filter: brightness(1); }
  50% { filter: brightness(1.12); }
}
/* Imminent change — stronger glow (ramp → UA, or UA auto-revert) */
@keyframes oj-cf-glow-escalate {
  0%, 100% {
    filter: brightness(1);
    box-shadow: 0 0 0 1px rgba(245, 158, 11, 0.55), 0 0 10px rgba(245, 158, 11, 0.35);
  }
  50% {
    filter: brightness(1.18);
    box-shadow: 0 0 0 2px rgba(251, 191, 36, 0.95), 0 0 18px rgba(245, 158, 11, 0.75);
  }
}
@keyframes oj-cf-glow-revert {
  0%, 100% {
    filter: brightness(1);
    box-shadow: 0 0 0 1px rgba(56, 189, 248, 0.5), 0 0 10px rgba(14, 165, 233, 0.35);
  }
  50% {
    filter: brightness(1.15);
    box-shadow: 0 0 0 2px rgba(125, 211, 252, 0.95), 0 0 18px rgba(56, 189, 248, 0.7);
  }
}
.sidebar .oj-feature-pill.is-cf-glow-escalate,
#admin-feature-status .oj-feature-pill.is-cf-glow-escalate {
  animation: oj-cf-glow-escalate 1.1s ease-in-out infinite;
  border-color: rgba(251, 191, 36, 0.98) !important;
}
.sidebar .oj-feature-pill.is-cf-glow-escalate .oj-feature-pill-state,
#admin-feature-status .oj-feature-pill.is-cf-glow-escalate .oj-feature-pill-state {
  background: #f59e0b !important;
  color: #422006 !important;
  font-weight: 900;
}
.sidebar .oj-feature-pill.is-cf-glow-revert,
#admin-feature-status .oj-feature-pill.is-cf-glow-revert {
  animation: oj-cf-glow-revert 1.25s ease-in-out infinite;
  border-color: rgba(56, 189, 248, 0.98) !important;
}
.sidebar .oj-feature-pill.is-cf-glow-revert .oj-feature-pill-state,
#admin-feature-status .oj-feature-pill.is-cf-glow-revert .oj-feature-pill-state {
  background: #0ea5e9 !important;
  color: #0c4a6e !important;
  font-weight: 900;
}
@media (prefers-reduced-motion: reduce) {
  .sidebar .oj-feature-pill.is-cf-atk,
  #admin-feature-status .oj-feature-pill.is-cf-atk,
  .sidebar .oj-feature-pill.is-cf-glow-escalate,
  #admin-feature-status .oj-feature-pill.is-cf-glow-escalate,
  .sidebar .oj-feature-pill.is-cf-glow-revert,
  #admin-feature-status .oj-feature-pill.is-cf-glow-revert {
    animation: none;
  }
}
/* OFF - muted slate / dim red-grey */
.sidebar .oj-feature-pill.is-off {
  color: #94a3b8 !important;
  background: rgba(30, 41, 59, 0.85) !important;
  border-color: rgba(71, 85, 105, 0.7) !important;
  opacity: 0.9;
}
.sidebar .oj-feature-pill.is-off .oj-feature-pill-state {
  background: #475569;
  color: #e2e8f0;
}
/* WARN - amber */
.sidebar .oj-feature-pill.is-warn {
  color: #fffbeb !important;
  background: rgba(245, 158, 11, 0.28) !important;
  border-color: rgba(251, 191, 36, 0.7) !important;
  box-shadow: 0 0 8px rgba(251, 191, 36, 0.25);
}
.sidebar .oj-feature-pill.is-warn .oj-feature-pill-state {
  background: #f59e0b;
  color: #422006;
}
.sidebar .oj-feature-pill.is-unknown {
  color: #64748b !important;
  background: rgba(15, 23, 42, 0.5) !important;
  border-color: rgba(51, 65, 85, 0.6) !important;
}
.sidebar .oj-feature-pill.is-unknown .oj-feature-pill-state {
  background: #334155;
  color: #94a3b8;
}

/* ========== Admin At a glance � theme-aware, compact sexy board ========== */
body.oj-noc-mode {
  background: #f1f5f9 !important;
}
html.dark body.oj-noc-mode,
html.dark body.oj-noc-mode #admin-main-shell {
  background: #0b1220 !important;
}
html[data-oj-rail="deep"].dark body.oj-noc-mode,
html[data-oj-rail="deep"].dark body.oj-noc-mode #admin-main-shell {
  background: #020617 !important;
}
body.oj-noc-mode #admin-main-shell {
  background: #f1f5f9 !important;
  overflow: auto !important;
  height: auto !important;
}
@media (max-width: 767px) {
  /*
   * Shared mobile chrome height:
   *   topbar padding-top (safe / 0.75) + toolbar row (~3rem) + bottom pad (~0.65)
   * Used by main content AND drawer so neither sits under the fixed topbar.
   */
  :root {
    --oj-mobile-bar-row: 3.15rem; /* logo / hamburger row */
    --oj-mobile-bar-bottom: 0.65rem;
    --oj-mobile-chrome-top: calc(
      max(0.75rem, env(safe-area-inset-top, 0px))
      + var(--oj-mobile-bar-row)
      + var(--oj-mobile-bar-bottom)
    );
  }

  /* Clear fixed topbar + notch - was undersized and clipped glance hero */
  body.oj-noc-mode #admin-main-shell,
  #admin-main-shell {
    padding-top: calc(var(--oj-mobile-chrome-top) + 0.35rem) !important;
    padding-left: max(0.65rem, env(safe-area-inset-left, 0px)) !important;
    padding-right: max(0.65rem, env(safe-area-inset-right, 0px)) !important;
    padding-bottom: max(0.85rem, env(safe-area-inset-bottom, 0px)) !important;
  }
  body.oj-noc-mode #admin-main-shell {
    padding-left: max(0.55rem, env(safe-area-inset-left, 0px)) !important;
    padding-right: max(0.55rem, env(safe-area-inset-right, 0px)) !important;
  }
}
@media (min-width: 768px) {
  body.oj-noc-mode #admin-main-shell {
    padding: 0.6rem 0.8rem 0.8rem !important;
  }
}
body.oj-noc-mode #main-content {
  padding: 0 !important;
  max-width: none;
  margin: 0;
  margin-right: 0;
  margin-left: 0;
}

.oj-glance {
  color: #334155;
  --glance-card: #ffffff;
  --glance-card-border: #e2e8f0;
  --glance-muted: #64748b;
  --glance-ink: #0f172a;
  --glance-soft: #f8fafc;
  --glance-shadow: 0 8px 22px -16px rgba(15, 23, 42, 0.28);
  /* Follow header colour (Auto → menu); not menu-only */
  --glance-accent: var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9));
}
html.dark .oj-glance {
  color: #cbd5e1;
  --glance-card: #111827;
  --glance-card-border: rgba(148, 163, 184, 0.14);
  --glance-muted: #94a3b8;
  --glance-ink: #f8fafc;
  --glance-soft: #0f172a;
  --glance-shadow: 0 10px 28px -18px rgba(0, 0, 0, 0.55);
  --glance-accent: var(--oj-header-accent, var(--oj-nav-accent, #0284c7));
}

/*
 * At a glance layout: normal document flow + shell scroll.
 * (The old NOC “fit one viewport / overflow hidden” mode stacked new
 * sections on top of charts when OJ Bot stats were added.)
 */
.oj-glance--fit {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  min-height: 0;
  max-height: none;
  height: auto;
}
body.oj-noc-mode #admin-main-shell {
  overflow: auto !important;
  height: auto !important;
  max-height: none !important;
}
.oj-glance-stack {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  position: static;
  z-index: auto;
  flex: none;
  min-height: 0;
  overflow: visible;
  height: auto;
}
/* Slim home (legacy): more breathing room */
.oj-glance--slim .oj-glance-stack {
  gap: 0.85rem;
  max-width: 72rem;
}
/* Balanced home: room to breathe, full shell width (match hero / top bar) */
.oj-glance--balanced .oj-glance-stack {
  gap: 0.7rem;
  max-width: none;
  width: 100%;
}
.oj-glance--balanced,
.oj-glance--balanced .oj-glance-hero {
  width: 100%;
  max-width: none;
}

/* Admin pages: let content use the full shell width (not a narrow max-w-* column) */
#admin-main-shell #main-content > .max-w-4xl,
#admin-main-shell #main-content > .max-w-5xl,
#admin-main-shell #main-content > .max-w-6xl,
#admin-main-shell #main-content > .max-w-7xl {
  max-width: none !important;
  width: 100%;
}
/* Settings accordion panels used to sit at max-w-4xl - stretch with the shell */
#admin-main-shell #main-content > .oj-settings-panel.max-w-4xl,
#admin-main-shell #main-content .oj-settings-panel.max-w-4xl {
  max-width: none !important;
  width: 100%;
}
.oj-glance--balanced .oj-glance-kpi,
.oj-glance--slim .oj-glance-kpi {
  padding: 0.75rem 0.85rem 0.75rem 0.95rem;
}
.oj-glance--balanced .oj-glance-kpi-value,
.oj-glance--slim .oj-glance-kpi-value {
  font-size: 1.55rem;
  line-height: 1.15;
  margin-top: 0.15rem;
}
.oj-glance--balanced .oj-glance-kpi-hint,
.oj-glance--slim .oj-glance-kpi-hint {
  margin-top: 0.2rem;
  line-height: 1.3;
}
.oj-glance--balanced .oj-glance-queue-grid,
.oj-glance--slim .oj-glance-queue-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.55rem;
}
@media (min-width: 768px) {
  .oj-glance--balanced .oj-glance-queue-grid,
  .oj-glance--slim .oj-glance-queue-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
}
@media (max-width: 479px) {
  .oj-glance--balanced .oj-glance-queue-grid,
  .oj-glance--slim .oj-glance-queue-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Today pulse: 5 key cells (not the old 8) */
.oj-glance-today-grid--5 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (min-width: 640px) {
  .oj-glance-today-grid--5 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .oj-glance-today-grid--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}
.oj-glance-today--balanced {
  padding: 0.75rem 0.9rem 0.9rem;
}

/* Messaging + OJ side by side */
.oj-glance-split--balanced {
  gap: 0.7rem;
}
.oj-glance-msg-grid--4 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (min-width: 520px) {
  .oj-glance-msg-grid--4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
.oj-glance-oj-grid--compact {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (min-width: 520px) {
  .oj-glance-oj-grid--compact {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* Tiny service chips (not full switch cards) */
.oj-glance-svc-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
}
.oj-glance-svc-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.35rem 0.65rem;
  border-radius: 9999px;
  border: 1px solid var(--glance-card-border);
  background: var(--glance-card);
  box-shadow: var(--glance-shadow);
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--glance-ink);
  cursor: pointer;
  transition: border-color 0.15s ease, transform 0.12s ease;
}
.oj-glance-svc-chip:hover {
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--glance-accent) 40%, var(--glance-card-border));
}
.oj-glance-svc-dot {
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 9999px;
  background: #94a3b8;
  flex-shrink: 0;
}
.oj-glance-svc-chip.is-on .oj-glance-svc-dot { background: #10b981; box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.18); }
.oj-glance-svc-chip.is-off .oj-glance-svc-dot { background: #94a3b8; }
.oj-glance-svc-chip.is-warn .oj-glance-svc-dot { background: #f59e0b; box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.2); }
.oj-glance-svc-name { color: var(--glance-ink); }
.oj-glance-svc-state {
  font-size: 0.6rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--glance-muted);
}
.oj-glance-svc-chip.is-on .oj-glance-svc-state { color: #059669; }
.oj-glance-svc-chip.is-warn .oj-glance-svc-state { color: #d97706; }
html.dark .oj-glance-svc-chip.is-on .oj-glance-svc-state { color: #34d399; }
html.dark .oj-glance-svc-chip.is-warn .oj-glance-svc-state { color: #fbbf24; }
.oj-glance-svc-meta {
  margin-left: auto;
  font-size: 0.65rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--glance-muted);
}

/* Charts + messaging/OJ nested under Today so far */
.oj-glance-today-charts {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.55rem;
  margin-top: 0.75rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--glance-card-border);
}
@media (min-width: 768px) {
  .oj-glance-today-charts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.oj-glance-today-charts .oj-glance-chart-card {
  background: var(--glance-soft);
  box-shadow: none;
}
.oj-glance-today-charts .oj-glance-chart-canvas-wrap {
  height: 7.5rem;
}
@media (min-width: 1100px) {
  .oj-glance-today-charts .oj-glance-chart-canvas-wrap {
    height: 8.25rem;
  }
}
.oj-glance-today-split {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.65rem;
  margin-top: 0.75rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--glance-card-border);
}
@media (min-width: 900px) {
  .oj-glance-today-split {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.oj-glance-today-block {
  border-radius: 0.85rem;
  border: 1px solid var(--glance-card-border);
  background: var(--glance-soft);
  padding: 0.65rem 0.75rem 0.75rem;
  min-width: 0;
}
.oj-glance-today-block .oj-glance-section-head {
  margin-bottom: 0.45rem;
}
.oj-glance-today-block .oj-glance-section-head h3 {
  font-size: 0.8rem;
}
.oj-glance-today-block .oj-glance-stat {
  background: var(--glance-card);
}
/* legacy class still used by older markup */
.oj-glance-charts-grid--2 {
  grid-template-columns: 1fr;
  gap: 0.55rem;
}
@media (min-width: 768px) {
  .oj-glance-charts-grid--2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.oj-glance-charts--balanced .oj-glance-chart-canvas-wrap {
  height: 8rem;
}
.oj-glance-stack > * {
  position: static;
  z-index: auto;
  flex: none;
  flex-shrink: 0;
  min-width: 0;
}
.oj-glance-stack > .oj-glance-charts {
  min-height: 0;
  margin-top: 0;
}

/* Glance alert strip: quiet when healthy, expands when hot */
.oj-glance-alerts-slim.is-alert-ok {
  border-color: color-mix(in srgb, #10b981 28%, var(--glance-card-border));
}
.oj-glance-alerts-slim.is-alert-hot {
  border-color: color-mix(in srgb, #f43f5e 40%, var(--glance-card-border));
  box-shadow: 0 8px 24px -16px rgba(244, 63, 94, 0.45);
}
.oj-glance-alerts-slim.is-alert-ok [data-alert-score-list]:empty {
  display: none;
  margin: 0;
}

/* Alert issue cards: dark slate + white text (high contrast on glance) */
.oj-alert-issue {
  min-width: 0;
  padding: 0.75rem 0.85rem 0.8rem;
  border-radius: 0.9rem;
  border: 1px solid #450a0a;
  border-left: 4px solid #f43f5e;
  background: linear-gradient(145deg, #1c1917 0%, #0f172a 55%, #111827 100%);
  color: #f8fafc;
  box-shadow: 0 8px 22px -14px rgba(0, 0, 0, 0.55);
}
.oj-alert-title {
  font-size: 0.85rem;
  font-weight: 900;
  line-height: 1.3;
  letter-spacing: -0.015em;
  color: #ffffff;
}
.oj-alert-summary {
  margin-top: 0.4rem;
  padding: 0.4rem 0.55rem;
  border-radius: 0.55rem;
  background: rgba(15, 23, 42, 0.85);
  border: 1px solid rgba(248, 113, 113, 0.35);
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1.4;
  color: #fecdd3;
  word-break: break-word;
  overflow-wrap: anywhere;
}
.oj-alert-meta {
  margin-top: 0.4rem;
  font-size: 10px;
  font-weight: 700;
  color: #fda4af;
  opacity: 0.9;
}
.oj-alert-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.45rem;
}
.oj-alert-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.2rem;
  padding: 0.22rem 0.6rem;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.02em;
  background: #e11d48;
  border: 1px solid #fb7185;
  color: #ffffff;
  line-height: 1.3;
}
.oj-alert-chip--muted {
  font-weight: 700;
  color: #fff7ed;
  background: rgba(251, 146, 60, 0.25);
  border-color: rgba(251, 146, 60, 0.55);
}
.oj-alert-resolve {
  padding: 0.35rem 0.7rem;
  font-size: 11px;
  font-weight: 800;
  border-radius: 0.55rem;
  background: #ffffff;
  border: 1px solid #fda4af;
  color: #9f1239;
}
.oj-alert-resolve:hover {
  background: #ffe4e6;
}
.oj-alert-sample {
  min-width: 0;
  max-width: 100%;
  margin-top: 0.5rem;
  padding: 0.55rem 0.65rem;
  border-radius: 0.65rem;
  background: #020617;
  border: 1px solid #334155;
  color: #e2e8f0;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
}
.oj-alert-sample-meta {
  font-size: 9px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #fb7185;
  margin-bottom: 0.3rem;
}
.oj-alert-sample-msg {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 11px;
  line-height: 1.45;
  font-weight: 600;
  color: #f8fafc;
  white-space: pre-wrap;
  word-break: break-word;
  overflow-wrap: anywhere;
  max-height: 5rem;
  overflow-y: auto;
}
/* Same contrast in dark admin theme */
html[data-oj-theme="dark"] .oj-alert-issue,
html.dark .oj-alert-issue {
  background: linear-gradient(145deg, #1c1917 0%, #0f172a 55%, #020617 100%);
  border-color: #7f1d1d;
  color: #f8fafc;
}
html[data-oj-theme="dark"] .oj-alert-title,
html.dark .oj-alert-title {
  color: #ffffff;
}
html[data-oj-theme="dark"] .oj-alert-summary,
html.dark .oj-alert-summary {
  background: rgba(2, 6, 23, 0.9);
  color: #fecdd3;
  border-color: rgba(248, 113, 113, 0.4);
}
html[data-oj-theme="dark"] .oj-alert-chip,
html.dark .oj-alert-chip {
  background: #e11d48;
  border-color: #fb7185;
  color: #ffffff;
}
html[data-oj-theme="dark"] .oj-alert-sample,
html.dark .oj-alert-sample {
  background: #000000;
  border-color: #475569;
}
.oj-glance-queues-panel {
  padding: 0.85rem 1rem 1rem;
}

/* Hero follows rail + accent */
.oj-glance-hero {
  background:
    radial-gradient(900px 280px at 8% -30%, color-mix(in srgb, var(--glance-accent) 22%, transparent), transparent 55%),
    radial-gradient(700px 240px at 92% 0%, rgba(244, 63, 94, 0.1), transparent 50%),
    linear-gradient(145deg, #0b1220 0%, #111827 50%, #0f172a 100%);
  border: 1px solid rgba(15, 23, 42, 0.85);
  box-shadow: 0 12px 32px -18px rgba(2, 6, 23, 0.5);
  flex-shrink: 0;
}
html[data-oj-rail="deep"] .oj-glance-hero {
  background:
    radial-gradient(900px 280px at 8% -30%, color-mix(in srgb, var(--glance-accent) 20%, transparent), transparent 55%),
    linear-gradient(145deg, #020617 0%, #030712 55%, #020617 100%);
}
html[data-oj-rail="tinted"] .oj-glance-hero {
  background:
    radial-gradient(900px 280px at 8% -30%, color-mix(in srgb, var(--glance-accent) 28%, transparent), transparent 55%),
    linear-gradient(145deg, color-mix(in srgb, var(--glance-accent) 16%, #0b1220) 0%, #0f172a 60%, #0b1220 100%);
}
.oj-glance-hero-glow {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(255,255,255,0.04), transparent 42%);
  pointer-events: none;
  border-radius: inherit;
}
.oj-live-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.55rem;
  font-weight: 900;
  letter-spacing: 0.12em;
  padding: 0.14rem 0.42rem;
  border-radius: 9999px;
  background: color-mix(in srgb, var(--glance-accent) 18%, transparent);
  color: var(--oj-nav-active-fg, #e0f2fe);
  border: 1px solid color-mix(in srgb, var(--glance-accent) 45%, transparent);
}
.oj-live-dot {
  width: 0.32rem;
  height: 0.32rem;
  border-radius: 9999px;
  background: var(--glance-accent);
  box-shadow: 0 0 0 0 color-mix(in srgb, var(--glance-accent) 55%, transparent);
  animation: ojLivePulse 1.6s ease-out infinite;
}
.oj-live-pill.is-syncing .oj-live-dot {
  animation: ojLivePulse 0.7s ease-out infinite;
}
@keyframes ojLivePulse {
  0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--glance-accent) 50%, transparent); }
  70% { box-shadow: 0 0 0 7px transparent; }
  100% { box-shadow: 0 0 0 0 transparent; }
}

.oj-glance-status {
  border-radius: 0.85rem;
  padding: 0.6rem 0.85rem;
  border: 1px solid #0f172a;
  background: linear-gradient(135deg, #0f172a, #1e293b);
  color: #e2e8f0;
  box-shadow: var(--glance-shadow);
  flex-shrink: 0;
}
.oj-glance-status--ok {
  border-color: color-mix(in srgb, var(--glance-accent) 35%, #0f172a);
  background:
    radial-gradient(520px 140px at 0% 50%, color-mix(in srgb, var(--glance-accent) 18%, transparent), transparent 60%),
    linear-gradient(135deg, #0f172a 0%, #111827 100%);
}
.oj-glance-status--warn {
  border-color: rgba(245, 158, 11, 0.45);
  background: linear-gradient(135deg, #0f172a 0%, #78350f 140%);
}
.oj-glance-status--bad {
  border-color: rgba(239, 68, 68, 0.45);
  background: linear-gradient(135deg, #0f172a 0%, #7f1d1d 140%);
}
.oj-glance-status-badge {
  font-size: 0.55rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 0.12rem 0.38rem;
  border-radius: 9999px;
  background: color-mix(in srgb, var(--glance-accent) 22%, transparent);
  border: 1px solid color-mix(in srgb, var(--glance-accent) 40%, transparent);
  color: #f8fafc;
}
.oj-glance-chip {
  display: inline-flex;
  flex-direction: column;
  gap: 0.04rem;
  padding: 0.28rem 0.5rem;
  border-radius: 0.55rem;
  background: rgba(0, 0, 0, 0.28);
  border: 1px solid rgba(255, 255, 255, 0.08);
  min-width: 3.4rem;
}
.oj-glance-chip span:first-child {
  font-size: 0.5rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #94a3b8;
  opacity: 1 !important;
}
.oj-glance-chip .font-bold,
.oj-glance-chip .font-mono {
  font-size: 0.78rem;
  font-weight: 800;
  color: #f8fafc;
  line-height: 1.15;
}
.oj-ping--ok { color: #6ee7b7 !important; }
.oj-ping--warn { color: #fcd34d !important; }
.oj-ping--bad { color: #fca5a5 !important; }
.oj-ping--muted { color: #94a3b8 !important; }

/* Compact white/dark cards */
.oj-glance-kpi {
  border-radius: 0.8rem;
  padding: 0.55rem 0.65rem 0.55rem 0.75rem;
  border: 1px solid var(--glance-card-border);
  background: var(--glance-card);
  box-shadow: var(--glance-shadow);
  position: relative;
  overflow: hidden;
}
.oj-glance-kpi::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 2.5px;
  background: var(--glance-accent);
  opacity: 0.85;
}
.oj-glance-kpi--sky::before { background: #0ea5e9; }
.oj-glance-kpi--amber::before { background: #f59e0b; }
.oj-glance-kpi--emerald::before { background: #10b981; }
.oj-glance-kpi--violet::before { background: #8b5cf6; }
.oj-glance-kpi--rose::before { background: #f43f5e; }
.oj-glance-kpi-label {
  font-size: 0.55rem;
  font-weight: 800;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--glance-muted);
}
.oj-glance-kpi-value {
  font-size: 1.35rem;
  font-weight: 800;
  letter-spacing: -0.03em;
  color: var(--glance-ink);
  line-height: 1.08;
  margin-top: 0.1rem;
}
.oj-glance-kpi-hint {
  font-size: 0.6rem;
  color: var(--glance-muted);
  margin-top: 0.15rem;
  line-height: 1.25;
}

/* Switches � compact horizontal chips */
.oj-glance-switch {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  text-align: left;
  width: 100%;
  border-radius: 0.8rem;
  padding: 0.55rem 0.65rem;
  border: 1px solid #0f172a;
  color: #e2e8f0;
  background: #0f172a;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
.oj-glance-switch:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 20px -14px color-mix(in srgb, var(--glance-accent) 40%, #000);
}
.oj-glance-switch-ico {
  width: 1.65rem;
  height: 1.65rem;
  border-radius: 0.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: color-mix(in srgb, var(--glance-accent) 18%, transparent);
  color: var(--glance-accent);
  font-size: 0.7rem;
  flex-shrink: 0;
}
.oj-glance-switch-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  flex: 1;
  min-width: 0;
}
.oj-glance-switch-name {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.oj-glance-switch.is-on {
  background: linear-gradient(135deg, color-mix(in srgb, var(--glance-accent) 28%, #0f172a), #0f172a);
  border-color: color-mix(in srgb, var(--glance-accent) 50%, #0f172a);
}
.oj-glance-switch.is-off {
  background: #1e293b;
  border-color: #334155;
  color: #94a3b8;
}
.oj-glance-switch.is-off .oj-glance-switch-ico {
  background: rgba(148, 163, 184, 0.12);
  color: #94a3b8;
}
.oj-glance-switch.is-warn {
  background: linear-gradient(135deg, #78350f, #0f172a);
  border-color: rgba(245, 158, 11, 0.45);
  color: #fde68a;
}
.oj-glance-switch-state {
  font-size: 0.55rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  padding: 0.14rem 0.38rem;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.12);
  flex-shrink: 0;
}
.oj-glance-switch.is-on .oj-glance-switch-state {
  background: var(--glance-accent);
  color: #0f172a;
}
.oj-glance-switch.is-off .oj-glance-switch-state {
  background: #475569;
  color: #e2e8f0;
}
.oj-glance-switch.is-warn .oj-glance-switch-state {
  background: #f59e0b;
  color: #422006;
}

.oj-glance-today {
  border-radius: 0.85rem;
  padding: 0.6rem 0.7rem 0.65rem;
  border: 1px solid var(--glance-card-border);
  background:
    radial-gradient(640px 160px at 100% 0%, color-mix(in srgb, var(--glance-accent) 8%, transparent), transparent 55%),
    var(--glance-card);
  box-shadow: var(--glance-shadow);
  flex-shrink: 0;
}
.oj-glance-today-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.35rem;
  margin-bottom: 0.45rem;
}
.oj-glance-today-head h3 {
  font-size: 0.65rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--glance-muted);
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0;
}
.oj-glance-today-head h3 i { color: var(--glance-accent); }
.oj-glance-today-head h3 span {
  color: var(--glance-ink);
  letter-spacing: -0.01em;
  text-transform: none;
  font-size: 0.85rem;
}
.oj-glance-today-meta {
  font-size: 0.6rem;
  color: var(--glance-muted);
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}
.oj-glance-today-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.4rem;
}
@media (max-width: 767px) {
  .oj-glance-today-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.oj-glance-today-cell {
  border-radius: 0.65rem;
  padding: 0.45rem 0.5rem;
  background: var(--glance-soft);
  border: 1px solid var(--glance-card-border);
}
.oj-glance-today-cell-label {
  font-size: 0.5rem;
  font-weight: 800;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--glance-muted);
}
.oj-glance-today-cell-value {
  font-size: 1.2rem;
  font-weight: 800;
  letter-spacing: -0.03em;
  color: var(--glance-ink);
  line-height: 1.08;
  margin-top: 0.08rem;
}
.oj-glance-today-cell-sub {
  font-size: 0.55rem;
  color: var(--glance-muted);
  margin-top: 0.1rem;
  line-height: 1.25;
}
.oj-glance-today-delta {
  font-size: 0.55rem;
  font-weight: 700;
  margin-top: 0.12rem;
}
.oj-glance-today-delta.up { color: #059669; }
.oj-glance-today-delta.down { color: #dc2626; }
.oj-glance-today-delta.flat { color: var(--glance-muted); }
html.dark .oj-glance-today-delta.up { color: #34d399; }
html.dark .oj-glance-today-delta.down { color: #f87171; }

.oj-glance-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.4rem;
}
.oj-glance-section-head h3 {
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--glance-ink);
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0;
}
.oj-glance-link {
  font-size: 0.65rem;
  font-weight: 700;
  color: var(--glance-accent);
}
.oj-glance-link:hover { text-decoration: underline; }

.oj-glance-split {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.5rem;
  /* Do NOT flex:1 - that forced compression and made later rows paint over charts */
  flex: none;
  min-height: 0;
}
@media (min-width: 1024px) {
  .oj-glance-split {
    grid-template-columns: 1fr 1.35fr;
    align-items: start;
  }
}

/* Queue tiles � icon + number + tiny label (no crappy subtext) */
.oj-glance-queue {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.2rem;
  text-align: left;
  border-radius: 0.75rem;
  padding: 0.5rem 0.55rem 0.45rem;
  border: 1px solid var(--glance-card-border);
  background: var(--glance-card);
  box-shadow: var(--glance-shadow);
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
.oj-glance-queue:hover {
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--glance-accent) 35%, var(--glance-card-border));
  box-shadow: 0 10px 20px -14px color-mix(in srgb, var(--glance-accent) 35%, #0f172a);
}
.oj-glance-queue-ico {
  width: 1.4rem;
  height: 1.4rem;
  border-radius: 0.45rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.65rem;
  color: var(--glance-accent);
  background: color-mix(in srgb, var(--glance-accent) 12%, transparent);
}
.oj-glance-queue-num {
  font-size: 1.2rem;
  font-weight: 800;
  letter-spacing: -0.03em;
  color: var(--glance-ink);
  line-height: 1;
  margin-top: 0.1rem;
}
.oj-glance-queue-label {
  font-size: 0.55rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--glance-muted);
  line-height: 1.15;
}
.oj-glance-queue.is-hot {
  border-color: color-mix(in srgb, var(--glance-accent) 40%, #f59e0b);
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--glance-accent) 6%, var(--glance-card)), var(--glance-card));
}
.oj-glance-queue.is-hot .oj-glance-queue-num {
  color: color-mix(in srgb, var(--glance-accent) 35%, #b45309);
}
html.dark .oj-glance-queue.is-hot .oj-glance-queue-num {
  color: color-mix(in srgb, var(--glance-accent) 50%, #fbbf24);
}
.oj-glance-queue-pulse {
  position: absolute;
  top: 0.45rem;
  right: 0.45rem;
  width: 0.35rem;
  height: 0.35rem;
  border-radius: 9999px;
  background: var(--glance-accent);
  animation: ojLivePulse 1.4s ease-out infinite;
}
/* Action queues: 2-up on phones, 3-up from sm */
.oj-glance-queue-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem;
}
@media (min-width: 480px) {
  .oj-glance-queue-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.5rem;
  }
}

.oj-glance-panel {
  border-radius: 0.85rem;
  padding: 0.55rem 0.65rem 0.6rem;
  border: 1px solid var(--glance-card-border);
  background:
    radial-gradient(420px 140px at 0% 0%, color-mix(in srgb, var(--glance-accent) 7%, transparent), transparent 60%),
    var(--glance-card);
  box-shadow: var(--glance-shadow);
}
/* Messaging strip � compact, not a giant slab */
.oj-glance-panel--msg {
  padding: 0.45rem 0.55rem 0.5rem;
}
.oj-glance-msg-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.35rem;
}
@media (min-width: 480px) {
  .oj-glance-msg-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 1280px) {
  .oj-glance-msg-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
}
.oj-glance-panel--msg .oj-glance-stat {
  padding: 0.3rem 0.35rem;
  border-radius: 0.5rem;
}
.oj-glance-panel--msg .oj-glance-stat-value {
  font-size: 0.95rem;
}
.oj-glance-panel--msg .oj-glance-stat-sub {
  font-size: 0.5rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* OJ Bot activity strip - normal flow block between queues and charts */
.oj-glance-panel--oj {
  padding: 0.5rem 0.6rem 0.55rem;
  flex: none !important;
  position: static !important;
  z-index: auto !important;
  overflow: visible;
  isolation: isolate;
  clear: both;
  margin: 0;
}
.oj-glance-oj-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.4rem;
}
@media (min-width: 640px) {
  .oj-glance-oj-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 1100px) {
  .oj-glance-oj-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
}
.oj-glance-panel--oj .oj-glance-stat {
  padding: 0.35rem 0.4rem;
  border-radius: 0.55rem;
  min-width: 0;
  position: static;
}
.oj-glance-panel--oj .oj-glance-stat-value {
  font-size: 0.95rem;
}
.oj-glance-panel--oj .oj-glance-stat-sub {
  font-size: 0.5rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* Charts always below OJ - never absolute/overlap */
.oj-glance-charts {
  position: static !important;
  z-index: auto !important;
  flex: none !important;
  clear: both;
  margin-top: 0.15rem;
}

/* --- System Health charts: light sky on light themes; ink plots on Envisage/Night --- */
.oj-health-chart-wrap {
  position: relative;
  width: 100%;
  background: #f0f9ff !important;
  border: 1px solid #7dd3fc !important;
  border-radius: 0.75rem;
  overflow: hidden;
  isolation: isolate;
  filter: none !important;
  -webkit-filter: none !important;
  color: #0f172a !important;
}
.oj-health-chart-wrap canvas {
  display: block;
  width: 100% !important;
  height: 100% !important;
  filter: none !important;
  -webkit-filter: none !important;
  background: transparent !important;
}
/* Ink family (Envisage / Graphite / Night): dark surface + light chrome */
html.dark .oj-health-chart-wrap,
html.graphite .oj-health-chart-wrap,
.oj-health-chart-wrap.is-ink {
  background: #0b1220 !important;
  border-color: rgba(125, 211, 252, 0.45) !important;
  color: #f8fafc !important;
  filter: none !important;
}
html.envisage .oj-health-chart-wrap,
.oj-health-chart-wrap.is-envisage {
  background: #0f0a28 !important;
  border-color: rgba(167, 139, 250, 0.55) !important;
  color: #f8fafc !important;
  filter: none !important;
}

/* --- System Health · OJ Bot activity (theme-safe, Envisage-friendly) --- */
.oj-health-oj-metric {
  border-radius: 0.75rem;
  border: 1px solid #e2e8f0;
  background: #fff;
  padding: 0.65rem 0.75rem;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.oj-health-oj-metric-label {
  font-size: 0.625rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #64748b;
}
.oj-health-oj-metric-value {
  font-size: 1.125rem;
  font-weight: 800;
  color: #0f172a;
  line-height: 1.15;
  margin-top: 0.1rem;
}
.oj-health-oj-metric-hint {
  font-size: 0.625rem;
  color: #64748b;
  margin-top: 0.2rem;
  line-height: 1.3;
}
.oj-health-oj-metric--emerald { border-color: #a7f3d0; background: #ecfdf5; }
.oj-health-oj-metric--violet { border-color: #ddd6fe; background: #f5f3ff; }
.oj-health-oj-metric--sky { border-color: #bae6fd; background: #f0f9ff; }
.oj-health-oj-metric--amber { border-color: #fde68a; background: #fffbeb; }
.oj-health-oj-metric--cyan { border-color: #a5f3fc; background: #ecfeff; }
.oj-health-oj-metric--rose { border-color: #fecdd3; background: #fff1f2; }

.oj-health-oj-lane {
  border-radius: 1rem;
  border: 1px solid #e2e8f0;
  background: #fff;
  padding: 0.85rem 1rem;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.oj-health-oj-lane-title {
  font-size: 0.6875rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #64748b;
  margin-bottom: 0.5rem;
}
.oj-health-oj-lane-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.5rem;
  text-align: center;
}
.oj-health-oj-lane-k {
  font-size: 0.625rem;
  font-weight: 700;
  color: #64748b;
}
.oj-health-oj-lane-k--brain { color: #047857; }
.oj-health-oj-lane-k--xai { color: #6d28d9; }
.oj-health-oj-lane-n {
  font-size: 1rem;
  font-weight: 800;
  color: #0f172a;
}
.oj-health-oj-lane-sub {
  font-size: 0.5625rem;
  color: #94a3b8;
}

/* Brain status - high contrast on every theme (no pale cyan-on-white) */
.oj-health-oj-brain {
  border-radius: 1rem;
  border: 1px solid #67e8f9;
  background: linear-gradient(155deg, #0e7490 0%, #1e1b4b 48%, #0f172a 100%);
  color: #f8fafc;
  padding: 0.9rem 1rem;
  box-shadow: 0 12px 28px -16px rgba(8, 47, 73, 0.55);
}
.oj-health-oj-brain-kicker {
  font-size: 0.6875rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #a5f3fc;
  margin-bottom: 0.25rem;
}
.oj-health-oj-brain-iq {
  font-size: 1.75rem;
  font-weight: 900;
  color: #fff;
  letter-spacing: -0.02em;
  line-height: 1.1;
}
.oj-health-oj-brain-rank {
  font-size: 0.8125rem;
  font-weight: 700;
  color: #ddd6fe;
  margin-top: 0.15rem;
}
.oj-health-oj-brain-blurb {
  font-size: 0.6875rem;
  color: #cbd5e1;
  margin-top: 0.35rem;
  line-height: 1.35;
}
.oj-health-oj-brain-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.55rem;
}
.oj-health-oj-brain-chips span {
  font-size: 0.625rem;
  font-weight: 700;
  padding: 0.15rem 0.5rem;
  border-radius: 9999px;
  background: rgba(15, 23, 42, 0.45);
  border: 1px solid rgba(165, 243, 252, 0.35);
  color: #e0f2fe;
}
.oj-health-oj-brain-link {
  display: inline-block;
  margin-top: 0.55rem;
  font-size: 0.6875rem;
  font-weight: 800;
  color: #a5f3fc;
  text-decoration: underline;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
}
.oj-health-oj-brain-link:hover {
  color: #fff;
}

/* Envisage / Night: metric tiles */
html.dark .oj-health-oj-metric,
html.envisage .oj-health-oj-metric {
  border-color: rgba(148, 163, 184, 0.22);
  background: linear-gradient(165deg, #1e293b, #0f172a);
  box-shadow: 0 8px 20px -14px rgba(0, 0, 0, 0.45);
}
html.dark .oj-health-oj-metric-label,
html.envisage .oj-health-oj-metric-label,
html.dark .oj-health-oj-metric-hint,
html.envisage .oj-health-oj-metric-hint {
  color: #94a3b8;
}
html.dark .oj-health-oj-metric-value,
html.envisage .oj-health-oj-metric-value {
  color: #f8fafc;
}
html.dark .oj-health-oj-metric--emerald,
html.envisage .oj-health-oj-metric--emerald {
  border-color: rgba(52, 211, 153, 0.4);
  background: linear-gradient(165deg, rgba(6, 78, 59, 0.55), #0f172a);
}
html.dark .oj-health-oj-metric--violet,
html.envisage .oj-health-oj-metric--violet {
  border-color: rgba(167, 139, 250, 0.45);
  background: linear-gradient(165deg, rgba(76, 29, 149, 0.5), #0f172a);
}
html.dark .oj-health-oj-metric--sky,
html.envisage .oj-health-oj-metric--sky {
  border-color: rgba(56, 189, 248, 0.4);
  background: linear-gradient(165deg, rgba(12, 74, 110, 0.55), #0f172a);
}
html.dark .oj-health-oj-metric--amber,
html.envisage .oj-health-oj-metric--amber {
  border-color: rgba(251, 191, 36, 0.45);
  background: linear-gradient(165deg, rgba(120, 53, 15, 0.5), #0f172a);
}
html.dark .oj-health-oj-metric--cyan,
html.envisage .oj-health-oj-metric--cyan {
  border-color: rgba(34, 211, 238, 0.45);
  background: linear-gradient(165deg, rgba(14, 116, 144, 0.5), #0f172a);
}
html.dark .oj-health-oj-metric--rose,
html.envisage .oj-health-oj-metric--rose {
  border-color: rgba(251, 113, 133, 0.45);
  background: linear-gradient(165deg, rgba(136, 19, 55, 0.5), #0f172a);
}

html.dark .oj-health-oj-lane,
html.envisage .oj-health-oj-lane {
  border-color: rgba(148, 163, 184, 0.22);
  background: linear-gradient(165deg, #1e293b, #0f172a);
}
html.dark .oj-health-oj-lane-title,
html.envisage .oj-health-oj-lane-title,
html.dark .oj-health-oj-lane-sub,
html.envisage .oj-health-oj-lane-sub {
  color: #94a3b8;
}
html.dark .oj-health-oj-lane-n,
html.envisage .oj-health-oj-lane-n {
  color: #f8fafc;
}
html.dark .oj-health-oj-lane-k--brain,
html.envisage .oj-health-oj-lane-k--brain {
  color: #6ee7b7;
}
html.dark .oj-health-oj-lane-k--xai,
html.envisage .oj-health-oj-lane-k--xai {
  color: #c4b5fd;
}

html.envisage .oj-health-oj-brain {
  border-color: #a78bfa;
  background: linear-gradient(155deg, #1e1b4b 0%, #0f172a 45%, #164e63 100%);
  box-shadow: 0 14px 32px -16px rgba(76, 29, 149, 0.55);
}
html.envisage .oj-health-oj-brain-kicker {
  color: #c4b5fd;
}
html.envisage .oj-health-oj-brain-rank {
  color: #a5f3fc;
}
html.envisage .oj-health-oj-brain-link {
  color: #c4b5fd;
}
.oj-glance-stat {
  border-radius: 0.6rem;
  padding: 0.4rem 0.45rem;
  border: 1px solid var(--glance-card-border);
  background: var(--glance-soft);
}
.oj-glance-stat-label {
  font-size: 0.5rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--glance-muted);
}
.oj-glance-stat-value {
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--glance-ink);
  letter-spacing: -0.02em;
  margin-top: 0.08rem;
}
.oj-glance-stat-sub {
  font-size: 0.55rem;
  color: var(--glance-muted);
  margin-top: 0.08rem;
  line-height: 1.2;
}

/* Live trend charts under the board */
.oj-glance-charts {
  flex-shrink: 0;
  position: static;
}
.oj-glance-charts-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.45rem;
}
@media (min-width: 900px) {
  .oj-glance-charts-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
.oj-glance-chart-card {
  border-radius: 0.8rem;
  border: 1px solid var(--glance-card-border);
  background: var(--glance-card);
  box-shadow: var(--glance-shadow);
  padding: 0.45rem 0.55rem 0.4rem;
  min-height: 0;
}
.oj-glance-chart-title {
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--glance-ink, #0f172a);
  margin-bottom: 0.3rem;
}
.oj-glance-chart-canvas-wrap {
  position: relative;
  width: 100%;
  height: 9rem;
  border-radius: 0.55rem;
  background: #ffffff;
  border: 1px solid rgba(15, 23, 42, 0.12);
  overflow: hidden;
}
@media (min-width: 1100px) and (min-height: 800px) {
  .oj-glance-chart-canvas-wrap { height: 10.25rem; }
}
html.dark .oj-glance-chart-canvas-wrap,
html.graphite .oj-glance-chart-canvas-wrap,
html.envisage .oj-glance-chart-canvas-wrap {
  background: #0b1220;
  border-color: rgba(148, 163, 184, 0.28);
}
html.envisage .oj-glance-chart-canvas-wrap {
  background: #0f0a28;
  border-color: rgba(167, 139, 250, 0.4);
}
html.dark .oj-glance-chart-title,
html.graphite .oj-glance-chart-title,
html.envisage .oj-glance-chart-title {
  color: #e2e8f0;
}
.oj-glance-chart-canvas-wrap canvas {
  width: 100% !important;
  height: 100% !important;
  display: block;
}

.oj-glance-skel-card {
  height: 3.75rem;
  border-radius: 0.8rem;
  background: linear-gradient(90deg, var(--glance-soft) 25%, var(--glance-card-border) 37%, var(--glance-soft) 63%);
  background-size: 400% 100%;
  animation: ojGlanceShimmer 1.2s ease infinite;
}
@keyframes ojGlanceShimmer {
  0% { background-position: 100% 0; }
  100% { background-position: 0 0; }
}

/* High contrast: stronger borders */
html[data-oj-contrast="high"] .oj-glance-kpi,
html[data-oj-contrast="high"] .oj-glance-queue,
html[data-oj-contrast="high"] .oj-glance-today,
html[data-oj-contrast="high"] .oj-glance-panel,
html[data-oj-contrast="high"] .oj-glance-today-cell,
html[data-oj-contrast="high"] .oj-glance-stat {
  border-width: 2px;
}
html[data-oj-contrast="high"] .oj-glance-kpi-value,
html[data-oj-contrast="high"] .oj-glance-queue-num,
html[data-oj-contrast="high"] .oj-glance-today-cell-value {
  font-weight: 900;
}
/* Mobile sidebar dimmer - tap outside drawer to close */
.oj-sidebar-backdrop {
  background: rgba(15, 23, 42, 0.55);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  touch-action: none;
}
body.oj-mobile-menu-open {
  overflow: hidden;
  /* Prevent rubber-band scroll of the page behind the drawer */
  touch-action: none;
}

/* Mobile top bar - matches theme-color / PWA chrome (#0f172a)
 * Always deep ink - never purple page wash or fuchsia accent (PWA status bar). */
.oj-mobile-topbar {
  background: var(--oj-pwa-chrome, #0f172a) !important;
  border-bottom: 1px solid rgba(148, 163, 184, 0.18);
  /* Own vertical padding (do not rely on Tailwind py-* - it fights safe-area) */
  padding-top: max(0.75rem, env(safe-area-inset-top, 0px));
  padding-bottom: 0.65rem;
  padding-left: max(1rem, env(safe-area-inset-left, 0px));
  padding-right: max(1rem, env(safe-area-inset-right, 0px));
  box-sizing: border-box;
  box-shadow: 0 1px 0 rgba(15, 23, 42, 0.4);
  color: #e2e8f0;
}
/* Purple theme page is lilac - keep the fixed app bar ink so PWA chrome stays dark slate */
html.fuchsia .oj-mobile-topbar,
html[data-oj-theme="fuchsia"] .oj-mobile-topbar,
html.clinic .oj-mobile-topbar,
html.light .oj-mobile-topbar,
html[data-oj-theme="light"] .oj-mobile-topbar {
  background: #0f172a !important;
  border-bottom-color: rgba(232, 121, 249, 0.12);
}
html.fuchsia .oj-mobile-topbar .oj-mobile-menu-btn,
html[data-oj-theme="fuchsia"] .oj-mobile-topbar .oj-mobile-menu-btn {
  color: #e2e8f0 !important;
}

/* Drawer: topbar is z-60 over sidebar z-55 - pad full chrome height, not just safe-area */
@media (max-width: 767px) {
  .sidebar {
    width: min(260px, 86vw);
    /* Same offset as main content: clears fixed topbar + notch */
    padding-top: var(--oj-mobile-chrome-top, 4.55rem);
    padding-bottom: 0;
  }
  .sidebar-footer {
    padding-bottom: max(0.75rem, calc(0.5rem + env(safe-area-inset-bottom, 0px)));
  }
  .sidebar-nav-scroll,
  .sidebar > .flex-1.overflow-y-auto,
  .sidebar > .overflow-y-auto {
    padding-bottom: 1rem;
  }

  /* Glance: natural flow on phones (same as desktop now) */
  .oj-glance--fit {
    min-height: 0 !important;
    max-height: none !important;
  }
  .oj-glance-stack {
    overflow: visible !important;
    flex: none !important;
    height: auto !important;
  }
  .oj-glance-hero .relative.z-10 {
    gap: 0.65rem;
  }
  .oj-glance-chart-canvas-wrap {
    height: 6.25rem;
  }
  .oj-glance-kpi-value {
    font-size: 1.15rem;
  }
  .oj-glance-queue-num {
    font-size: 1.05rem;
  }
  .oj-glance-status .oj-glance-chip {
    min-width: 0;
    flex: 1 1 auto;
  }
}
.oj-mobile-menu-btn {
  color: #e2e8f0;
  line-height: 1;
  border-radius: 0.75rem;
  transition: background 0.15s ease, color 0.15s ease;
}
.oj-mobile-menu-btn:hover,
.oj-mobile-menu-btn:focus-visible {
  color: #fff;
  background: rgba(255, 255, 255, 0.08);
  outline: none;
}
/* Chips on dark top bar use the same soft palette as the sidebar (no light-header overrides) */
.oj-mobile-topbar .oj-status-chip.chip-admin::before {
  display: none;
}



/* ================================================================
   ENVISAGE � dusk mid-theme (between Light and Night)
   Soft steel / teal aurora. No pure white surfaces.
   html.envisage | data-oj-theme="envisage"
   ================================================================ */

html.envisage {
  color-scheme: dark;
  --env-bg: #172033;
  --env-bg-deep: #121a2b;
  --env-surface: #243148;
  --env-surface-2: #2c3b55;
  --env-elevated: #354864;
  --env-soft: #1c2740;
  --env-border: rgba(130, 175, 220, 0.18);
  --env-border-strong: rgba(148, 190, 230, 0.28);
  --env-text: #eef4fb;
  --env-text-soft: #c8d6ea;
  --env-muted: #8fa8c4;
  --env-faint: #6b849e;
  --env-input: #1a2538;
  --env-glow: color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 40%, transparent);
}

/* --- Page canvas: soft aurora dusk --- */
/* NOTE: no background-attachment:fixed - fixed multi-layer gradients strobe on Windows/Chrome */
html.envisage body {
  background:
    radial-gradient(1100px 520px at 0% -8%, color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 16%, transparent), transparent 58%),
    radial-gradient(900px 480px at 100% 0%, rgba(139, 92, 246, 0.10), transparent 52%),
    radial-gradient(700px 400px at 50% 100%, rgba(14, 165, 233, 0.06), transparent 55%),
    linear-gradient(168deg, #141c2e 0%, #1a2740 42%, #162238 100%) !important;
  background-attachment: scroll;
  color: var(--env-text);
}
/* Kill theme transition thrash while classes settle */
html.envisage,
html.dark,
html.slate,
html.clinic,
html.fuchsia,
html:not([data-oj-theme]) {
  transition: none !important;
}
html.envisage body,
html.dark body {
  transition: none !important;
}
html.envisage body.bg-slate-50,
html.envisage body.bg-slate-100 {
  background-color: transparent !important;
}

/* Mobile top bars */
html.envisage .md\:hidden.fixed.top-0.bg-white,
html.envisage .md\:hidden.fixed.top-0 {
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 8%, #1a2438) 0%, #1a2438 100%) !important;
  border-color: var(--env-border) !important;
  color: var(--env-text);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
html.envisage #mobile-menu-btn {
  color: var(--env-text) !important;
}
html.envisage .oj-mobile-topbar {
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 10%, #152033) 0%, #152033 100%) !important;
  border-bottom-color: var(--env-border) !important;
}

/* --- Surfaces: lifted steel, never white --- */
html.envisage .bg-white {
  background-color: var(--env-surface) !important;
  border-color: var(--env-border);
}
html.envisage .bg-slate-50 {
  background-color: var(--env-soft) !important;
}
html.envisage .bg-slate-100 {
  background-color: var(--env-surface) !important;
}
html.envisage .bg-slate-200 {
  background-color: var(--env-elevated) !important;
}
html.envisage .hover\:bg-slate-50:hover {
  background-color: var(--env-surface-2) !important;
}
html.envisage .hover\:bg-slate-100:hover {
  background-color: var(--env-elevated) !important;
}
html.envisage .hover\:bg-slate-200:hover {
  background-color: #3d5470 !important;
}
html.envisage .hover\:bg-white:hover {
  background-color: var(--env-elevated) !important;
}

/* Soft tinted panels ? luminous dusk tints */
html.envisage .bg-emerald-50 {
  background: linear-gradient(145deg, rgba(6, 95, 70, 0.42), rgba(16, 185, 129, 0.12)) !important;
}
html.envisage .bg-amber-50 {
  background: linear-gradient(145deg, rgba(120, 53, 15, 0.4), rgba(245, 158, 11, 0.12)) !important;
}
html.envisage .bg-orange-50 {
  background: linear-gradient(145deg, rgba(124, 45, 18, 0.4), rgba(249, 115, 22, 0.12)) !important;
}
html.envisage .bg-sky-50,
html.envisage .bg-blue-50 {
  background: linear-gradient(145deg, rgba(12, 74, 110, 0.45), rgba(56, 189, 248, 0.12)) !important;
}
html.envisage .bg-red-50,
html.envisage .bg-rose-50 {
  background: linear-gradient(145deg, rgba(127, 29, 29, 0.4), rgba(248, 113, 113, 0.12)) !important;
}
html.envisage .bg-violet-50,
html.envisage .bg-purple-50 {
  background: linear-gradient(145deg, rgba(76, 29, 149, 0.38), rgba(167, 139, 250, 0.12)) !important;
}
html.envisage .bg-cyan-50 {
  background: linear-gradient(145deg, rgba(22, 78, 99, 0.42), rgba(34, 211, 238, 0.12)) !important;
}

/* Borders */
html.envisage .border-slate-100,
html.envisage .border-slate-200,
html.envisage .border-slate-300 {
  border-color: var(--env-border) !important;
}
html.envisage .border-2.border-slate-200 {
  border-color: var(--env-border-strong) !important;
}
html.envisage .border-emerald-200 {
  border-color: rgba(52, 211, 153, 0.38) !important;
}
html.envisage .border-amber-200 {
  border-color: rgba(251, 191, 36, 0.38) !important;
}
html.envisage .border-orange-200 {
  border-color: rgba(251, 146, 60, 0.38) !important;
}
html.envisage .border-sky-200,
html.envisage .border-blue-200 {
  border-color: rgba(56, 189, 248, 0.35) !important;
}
html.envisage .border-red-200,
html.envisage .border-rose-200 {
  border-color: rgba(251, 113, 133, 0.38) !important;
}
html.envisage .divide-slate-100 > :not([hidden]) ~ :not([hidden]),
html.envisage .divide-slate-200 > :not([hidden]) ~ :not([hidden]) {
  border-color: var(--env-border) !important;
}

/* Text hierarchy � crisp on steel */
html.envisage .text-slate-900,
html.envisage .text-slate-800 {
  color: #f4f8fc !important;
}
html.envisage .text-slate-700 {
  color: #e2ebf6 !important;
}
html.envisage .text-slate-600 {
  color: #c5d4e8 !important;
}
html.envisage .text-slate-500 {
  color: var(--env-muted) !important;
}
html.envisage .text-slate-400 {
  color: var(--env-muted) !important;
}
html.envisage .text-slate-300 {
  color: #c8d6ea !important;
}
html.envisage .text-emerald-800,
html.envisage .text-emerald-700 {
  color: #6ee7b7 !important;
}
html.envisage .text-amber-800,
html.envisage .text-amber-700 {
  color: #fcd34d !important;
}
html.envisage .text-orange-800,
html.envisage .text-orange-700 {
  color: #fdba74 !important;
}
html.envisage .text-blue-800,
html.envisage .text-blue-700,
html.envisage .text-sky-800,
html.envisage .text-sky-700 {
  color: #7dd3fc !important;
}
html.envisage .text-red-800,
html.envisage .text-red-700 {
  color: #fca5a5 !important;
}
html.envisage ::placeholder {
  color: var(--env-faint) !important;
  opacity: 1;
}

/* Forms */
html.envisage input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
html.envisage select,
html.envisage textarea {
  background-color: var(--env-input) !important;
  border-color: var(--env-border-strong) !important;
  color: var(--env-text) !important;
  color-scheme: dark;
}
html.envisage input:focus,
html.envisage select:focus,
html.envisage textarea:focus {
  border-color: color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 70%, #64748b) !important;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 22%, transparent);
}
/* Native <option> list: readable on Envisage (was light text on white popup) */
html.envisage select option,
html.envisage select optgroup {
  background-color: #243148 !important;
  color: #f4f8fc !important;
}

html.envisage button.bg-white,
html.envisage a.bg-white,
html.envisage .bg-white.text-blue-700,
html.envisage .bg-white.text-sky-700 {
  background:
    linear-gradient(180deg, var(--env-elevated), var(--env-surface-2)) !important;
  color: #e0f2fe !important;
  border-color: var(--env-border-strong);
}
html.envisage .hover\:bg-blue-50:hover {
  background-color: rgba(14, 116, 144, 0.35) !important;
}

/* Shadows � soft luminous depth */
html.envisage .shadow-sm,
html.envisage .shadow,
html.envisage .shadow-md,
html.envisage .shadow-lg,
html.envisage .shadow-xl,
html.envisage .shadow-2xl {
  --tw-shadow-color: rgb(8 14 28 / 0.4);
  box-shadow:
    0 12px 28px -14px rgb(8 14 28 / 0.55),
    0 0 0 1px var(--env-border) !important;
}
html.envisage .ring-slate-200,
html.envisage .ring-slate-100 {
  --tw-ring-color: var(--env-border-strong);
}

/* Tables */
html.envisage table thead,
html.envisage thead {
  background-color: var(--env-soft) !important;
}
html.envisage tr:hover {
  background-color: rgba(56, 189, 248, 0.06);
}

/* Modals */
html.envisage .bg-slate-900\/60 {
  background-color: rgb(10 16 30 / 0.72) !important;
  backdrop-filter: blur(4px);
}

/* Estimate / stars */
html.envisage .estimate-tab {
  color: var(--env-muted);
}
html.envisage .oj-stars-muted {
  color: #4a5f78 !important;
}
html.envisage .oj-star-picker button {
  color: #4a5f78 !important;
}
html.envisage .oj-star-picker button.on {
  color: #fbbf24 !important;
}

/* Diary calendar */
html.envisage .calendar-day {
  background: var(--env-surface) !important;
  color: var(--env-text) !important;
  border-color: var(--env-border) !important;
}
html.envisage .calendar-day:not(.other-month):hover {
  border-color: color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 45%, var(--env-border)) !important;
  box-shadow: 0 6px 16px -6px rgb(8 14 28 / 0.45) !important;
}
html.envisage .calendar-day.other-month {
  color: var(--env-faint) !important;
  background: var(--env-soft) !important;
}
html.envisage .calendar-day.has-proposed {
  background: linear-gradient(145deg, #3d2a0a 0%, #78350f 100%) !important;
  color: #fde68a !important;
  border-color: #b45309 !important;
}
html.envisage .calendar-day.has-confirmed {
  background: linear-gradient(145deg, #064e3b 0%, #0d9488 100%) !important;
  color: #a7f3d0 !important;
  border-color: #14b8a6 !important;
}
html.envisage .calendar-day.has-both {
  background: linear-gradient(145deg, #0f3d3a 0%, #78350f 100%) !important;
  color: #99f6e4 !important;
  border-color: #0d9488 !important;
}
html.envisage .calendar-day .job-dot {
  box-shadow: 0 0 0 2px rgba(36, 49, 72, 0.95) !important;
}
html.envisage .desk-diary,
html.envisage .classic-diary-page {
  background: var(--env-surface) !important;
  color: var(--env-text) !important;
  border-color: var(--env-border) !important;
}

html.envisage .job-card:hover {
  box-shadow:
    0 18px 32px -14px rgb(8 14 28 / 0.5),
    0 0 0 1px color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 28%, transparent) !important;
}

/* Theme toggle � Envisage glow */
html.envisage .oj-theme-toggle-mobile {
  color: #a5f3fc;
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 25%, #243148), #243148);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 30%, transparent);
}
/* Icon cycle: light shows moon, dark shows sun, envisage shows both dim + accent ring */
html.envisage .oj-theme-toggle .oj-theme-icon-sun { display: none; }
html.envisage .oj-theme-toggle .oj-theme-icon-moon { display: inline-block; opacity: 0.95; filter: drop-shadow(0 0 4px rgba(34, 211, 238, 0.55)); }
html.envisage .oj-theme-toggle-sidebar .oj-theme-label-dark { display: none; }
html.envisage .oj-theme-toggle-sidebar .oj-theme-label-light { display: inline; }

/* High contrast on Envisage */
html.envisage[data-oj-contrast="high"] body {
  background: #0e1626 !important;
}
html.envisage[data-oj-contrast="high"] .bg-white {
  background-color: #1a2740 !important;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.12) !important;
}
html.envisage[data-oj-contrast="high"] .oj-chrome-swatch.is-selected {
  box-shadow: 0 0 0 2px #172033, 0 0 0 4px #fff, 0 0 0 6px var(--swatch, #22d3ee);
}

/* Chrome panel: Envisage label only glows when selected (not always �on�) */
.oj-chrome-mode-btn--envisage {
  letter-spacing: 0.02em;
}
.oj-chrome-mode-btn--envisage.is-selected {
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 28%, transparent), rgba(139, 92, 246, 0.22)) !important;
  border-color: color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 55%, #64748b) !important;
  color: #ecfeff !important;
  box-shadow: 0 0 16px -4px color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 45%, transparent);
}
.oj-chrome-modes--themes {
  display: grid;
  grid-template-columns: 1fr 1.15fr 1fr;
  gap: 0.35rem;
}
.oj-chrome-modes--themes .oj-chrome-mode-btn {
  text-align: center;
  padding: 0.4rem 0.35rem;
}
.oj-chrome-hint--env {
  color: #64748b;
  font-style: italic;
}

/* ========== At a glance � Envisage ========== */
html.envisage body.oj-noc-mode,
html.envisage body.oj-noc-mode #admin-main-shell {
  background:
    radial-gradient(1000px 480px at 5% -10%, color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 14%, transparent), transparent 55%),
    linear-gradient(168deg, #141c2e 0%, #1a2740 50%, #162238 100%) !important;
}
html[data-oj-rail="deep"].envisage body.oj-noc-mode,
html[data-oj-rail="deep"].envisage body.oj-noc-mode #admin-main-shell {
  background:
    radial-gradient(900px 400px at 0% 0%, color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 12%, transparent), transparent 50%),
    #0f1729 !important;
}

html.envisage .oj-glance {
  color: #c8d6ea;
  --glance-card: #243148;
  --glance-card-border: rgba(130, 175, 220, 0.16);
  --glance-muted: #8fa8c4;
  --glance-ink: #f4f8fc;
  --glance-soft: #1c2740;
  --glance-shadow:
    0 14px 32px -18px rgba(8, 14, 28, 0.55),
    0 0 0 1px rgba(130, 175, 220, 0.08);
  --glance-accent: var(--oj-header-accent, var(--oj-nav-accent, #22d3ee));
}

html.envisage .oj-glance-kpi,
html.envisage .oj-glance-queue,
html.envisage .oj-glance-today,
html.envisage .oj-glance-panel,
html.envisage .oj-glance-today-cell,
html.envisage .oj-glance-stat {
  background:
    radial-gradient(320px 120px at 0% 0%, color-mix(in srgb, var(--glance-accent, var(--oj-nav-accent, #22d3ee)) 10%, transparent), transparent 65%),
    linear-gradient(165deg, color-mix(in srgb, var(--env-surface-2, #2c3b55) 70%, #243148), var(--glance-card));
  border-color: var(--glance-card-border);
  box-shadow: var(--glance-shadow);
}

html.envisage .oj-glance-hero {
  background:
    radial-gradient(900px 280px at 8% -30%, color-mix(in srgb, var(--glance-accent, var(--oj-nav-accent, #22d3ee)) 28%, transparent), transparent 55%),
    radial-gradient(600px 200px at 95% 0%, rgba(139, 92, 246, 0.14), transparent 50%),
    linear-gradient(135deg, #1e2d48 0%, #243148 48%, #1a2740 100%) !important;
  border: 1px solid rgba(130, 175, 220, 0.2);
  box-shadow:
    0 16px 36px -18px rgba(8, 14, 28, 0.55),
    inset 0 1px 0 rgba(255, 255, 255, 0.05);
}

html.envisage .oj-glance-today-delta.up { color: #34d399; }
html.envisage .oj-glance-today-delta.down { color: #f87171; }
html.envisage .oj-glance-queue.is-hot .oj-glance-queue-num {
  color: color-mix(in srgb, var(--glance-accent, var(--oj-nav-accent, #22d3ee)) 45%, #fbbf24);
}

/* Cards with subtle lift when Envisage is on any dashboard panel */
html.envisage .rounded-2xl.bg-white,
html.envisage .rounded-xl.bg-white,
html.envisage .rounded-lg.bg-white {
  background:
    linear-gradient(165deg, color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 5%, #2a3a54) 0%, #243148 55%, #1f2d44 100%) !important;
  border: 1px solid var(--env-border);
  box-shadow:
    0 14px 30px -16px rgba(8, 14, 28, 0.5),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

/* Scrollbars � soft steel */
html.envisage * {
  scrollbar-width: thin;
  scrollbar-color: #3d5470 transparent;
}
html.envisage *::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
html.envisage *::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, #3d5470, #2c3b55);
  border-radius: 8px;
}
html.envisage *::-webkit-scrollbar-thumb:hover {
  background: color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 35%, #3d5470);
}

/* Selection */
html.envisage ::selection {
  background: color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 40%, transparent);
  color: #f0f9ff;
}

/* Emoji / floating panels that default to white */
html.envisage .emoji-picker {
  background: var(--env-surface) !important;
  border-color: var(--env-border) !important;
  color: var(--env-text);
  box-shadow: 0 20px 40px -12px rgb(8 14 28 / 0.55) !important;
}

/* Sidebar footer subtle aurora under Envisage (main canvas only � rail stays ink) */
html.envisage .sidebar-footer {
  border-top-color: rgba(130, 175, 220, 0.12);
}

/* Chat-adjacent list polish if pages reuse conv styles */
html.envisage .conv-item:hover {
  background: var(--env-surface-2) !important;
}
html.envisage .conv-item.active {
  background: linear-gradient(90deg, color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 18%, #1e2d48) 0%, var(--env-soft) 100%) !important;
  border-left-color: var(--oj-nav-accent, #22d3ee) !important;
}
html.envisage .conv-item.unread {
  background: color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 10%, #1a2740) !important;
}
html.envisage .conv-item.unread:hover {
  background: color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 16%, #1e2d48) !important;
}


/* ================================================================
   ENVISAGE readability pass � status chips, pastels, gradients
   Fixes light text on light chips and dark text on dusk panels
   ================================================================ */

/* --- Status chips: * -100 / *-200 pastels ? solid dusk pills --- */
html.envisage .bg-amber-100,
html.envisage .bg-yellow-100 {
  background: rgba(180, 83, 9, 0.45) !important;
  color: #fef3c7 !important;
}
html.envisage .bg-emerald-100,
html.envisage .bg-green-100 {
  background: rgba(6, 95, 70, 0.5) !important;
  color: #d1fae5 !important;
}
html.envisage .bg-sky-100,
html.envisage .bg-blue-100,
html.envisage .bg-cyan-100 {
  background: rgba(12, 74, 110, 0.55) !important;
  color: #e0f2fe !important;
}
html.envisage .bg-red-100,
html.envisage .bg-rose-100 {
  background: rgba(127, 29, 29, 0.5) !important;
  color: #fee2e2 !important;
}
html.envisage .bg-violet-100,
html.envisage .bg-purple-100 {
  background: rgba(76, 29, 149, 0.48) !important;
  color: #ede9fe !important;
}
html.envisage .bg-orange-100 {
  background: rgba(154, 52, 18, 0.48) !important;
  color: #ffedd5 !important;
}

/* Also dark mode chips (same bug class) */
html.dark .bg-amber-100,
html.dark .bg-yellow-100 {
  background: rgba(120, 53, 15, 0.55) !important;
  color: #fde68a !important;
}
html.dark .bg-emerald-100,
html.dark .bg-green-100 {
  background: rgba(6, 78, 59, 0.55) !important;
  color: #a7f3d0 !important;
}
html.dark .bg-sky-100,
html.dark .bg-blue-100,
html.dark .bg-cyan-100 {
  background: rgba(12, 74, 110, 0.55) !important;
  color: #bae6fd !important;
}
html.dark .bg-red-100,
html.dark .bg-rose-100 {
  background: rgba(127, 29, 29, 0.55) !important;
  color: #fecaca !important;
}
html.dark .bg-violet-100,
html.dark .bg-purple-100 {
  background: rgba(76, 29, 149, 0.5) !important;
  color: #ddd6fe !important;
}
html.dark .bg-orange-100 {
  background: rgba(124, 45, 18, 0.55) !important;
  color: #fed7aa !important;
}

/* --- Text on tinted panels: * -900 must lighten (was still dark brown) --- */
html.envisage .text-amber-900,
html.envisage .text-amber-800,
html.envisage .text-amber-700,
html.envisage .text-yellow-900,
html.envisage .text-yellow-800 {
  color: #fde68a !important;
}
html.envisage .text-amber-600,
html.envisage .text-amber-500 {
  color: #fbbf24 !important;
}
html.envisage .text-emerald-900,
html.envisage .text-emerald-800,
html.envisage .text-emerald-700,
html.envisage .text-green-900,
html.envisage .text-green-800 {
  color: #a7f3d0 !important;
}
html.envisage .text-emerald-600,
html.envisage .text-emerald-500 {
  color: #34d399 !important;
}
html.envisage .text-sky-900,
html.envisage .text-sky-800,
html.envisage .text-sky-700,
html.envisage .text-blue-900,
html.envisage .text-blue-800,
html.envisage .text-blue-700 {
  color: #bae6fd !important;
}
html.envisage .text-sky-600,
html.envisage .text-sky-500,
html.envisage .text-blue-600,
html.envisage .text-blue-500 {
  color: #38bdf8 !important;
}
html.envisage .text-red-900,
html.envisage .text-red-800,
html.envisage .text-red-700,
html.envisage .text-rose-900,
html.envisage .text-rose-800,
html.envisage .text-rose-700,
html.envisage .text-rose-600 {
  color: #fecaca !important;
}
html.envisage .text-violet-900,
html.envisage .text-violet-800,
html.envisage .text-violet-700,
html.envisage .text-purple-900,
html.envisage .text-purple-800,
html.envisage .text-purple-700 {
  color: #ddd6fe !important;
}
html.envisage .text-violet-600,
html.envisage .text-purple-600 {
  color: #a78bfa !important;
}
html.envisage .text-orange-900,
html.envisage .text-orange-800,
html.envisage .text-orange-700 {
  color: #fed7aa !important;
}

html.dark .text-amber-900,
html.dark .text-yellow-900 {
  color: #fde68a !important;
}
html.dark .text-emerald-900,
html.dark .text-green-900 {
  color: #a7f3d0 !important;
}
html.dark .text-sky-900,
html.dark .text-blue-900 {
  color: #bae6fd !important;
}
html.dark .text-red-900,
html.dark .text-rose-900,
html.dark .text-rose-800,
html.dark .text-rose-700 {
  color: #fecaca !important;
}
html.dark .text-violet-900,
html.dark .text-purple-900 {
  color: #ddd6fe !important;
}
html.dark .text-orange-900 {
  color: #fed7aa !important;
}

/* --- Gradient stops used by �Assigned tradie� etc. --- */
html.envisage .from-sky-50 {
  --tw-gradient-from: rgba(12, 74, 110, 0.55) var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(12 74 110 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.envisage .to-emerald-50 {
  --tw-gradient-to: rgba(6, 95, 70, 0.45) var(--tw-gradient-to-position) !important;
}
html.envisage .from-emerald-50 {
  --tw-gradient-from: rgba(6, 95, 70, 0.45) var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(6 95 70 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.envisage .via-white {
  --tw-gradient-via: #243148 var(--tw-gradient-via-position) !important;
  --tw-gradient-to: rgb(36 49 72 / 0)  var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-via), var(--tw-gradient-to) !important;
}
html.envisage .to-blue-50 {
  --tw-gradient-to: rgba(12, 74, 110, 0.4) var(--tw-gradient-to-position) !important;
}
html.envisage .from-emerald-50.via-white,
html.envisage .from-emerald-50 {
  /* keep assigned / context blocks readable */
}

html.dark .from-sky-50 {
  --tw-gradient-from: rgba(12, 74, 110, 0.5) var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(12 74 110 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.dark .to-emerald-50 {
  --tw-gradient-to: rgba(6, 78, 59, 0.45) var(--tw-gradient-to-position) !important;
}

/* White with opacity (attention icon tiles, chat header, buttons) */
html.envisage .bg-white\/95,
html.envisage .bg-white\/90,
html.envisage .bg-white\/80,
html.envisage .bg-white\/70,
html.envisage .bg-white\/60 {
  background-color: rgba(36, 49, 72, 0.92) !important;
}
html.envisage .bg-white\/50,
html.envisage .bg-white\/40 {
  background-color: rgba(36, 49, 72, 0.55) !important;
}
html.envisage .bg-blue-50\/60,
html.envisage .bg-blue-50\/50 {
  background-color: rgba(12, 74, 110, 0.42) !important;
}
html.envisage .bg-red-50\/50 {
  background-color: rgba(127, 29, 29, 0.35) !important;
}
html.dark .bg-white\/95,
html.dark .bg-white\/90,
html.dark .bg-white\/80 {
  background-color: rgba(30, 41, 55, 0.95) !important;
}
html.dark .bg-blue-50\/60 {
  background-color: rgba(12, 74, 110, 0.4) !important;
}

/* Extra borders used on chips */
html.envisage .border-amber-100,
html.envisage .border-emerald-100,
html.envisage .border-sky-100,
html.envisage .border-blue-100,
html.envisage .border-red-100,
html.envisage .border-violet-100,
html.envisage .border-purple-100 {
  border-color: rgba(148, 190, 230, 0.22) !important;
}
html.envisage .border-amber-100 { border-color: rgba(251, 191, 36, 0.35) !important; }
html.envisage .border-emerald-100 { border-color: rgba(52, 211, 153, 0.32) !important; }
html.envisage .border-sky-100,
html.envisage .border-blue-100 { border-color: rgba(56, 189, 248, 0.32) !important; }
html.envisage .border-red-100 { border-color: rgba(248, 113, 113, 0.32) !important; }
html.envisage .border-violet-100,
html.envisage .border-purple-100 { border-color: rgba(167, 139, 250, 0.32) !important; }

/* Post-a-job response mode cards � crisp dusk selection */
html.envisage .response-mode-card {
  background: var(--env-surface, #243148) !important;
  border-color: var(--env-border, rgba(130, 175, 220, 0.18)) !important;
}
html.envisage .response-mode-card:has(input:checked),
html.envisage .response-mode-card.border-blue-500 {
  background: linear-gradient(145deg, rgba(14, 116, 144, 0.35), rgba(36, 49, 72, 0.95)) !important;
  border-color: color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 55%, #38bdf8) !important;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 25%, transparent),
    0 10px 24px -14px rgba(8, 14, 28, 0.5);
}
html.envisage #response-mode-group .response-mode-card .text-blue-600 { color: #38bdf8 !important; }
html.envisage #response-mode-group .response-mode-card .text-amber-600 { color: #fbbf24 !important; }
html.envisage #response-mode-group .response-mode-card .text-violet-600 { color: #a78bfa !important; }

/* Needs-attention action buttons on dusk chips */
html.envisage #dashboard-attention button {
  background: rgba(36, 49, 72, 0.9) !important;
  color: #e0f2fe !important;
  border-color: rgba(148, 190, 230, 0.25) !important;
}
html.envisage #dashboard-attention .bg-white\/80,
html.envisage #dashboard-attention .bg-white\/90 {
  background: rgba(26, 39, 64, 0.85) !important;
}

/* Messages composer + chrome (shared when chat uses theme CSS) */
html.envisage .composer-wrap,
html.dark .composer-wrap {
  background: linear-gradient(to top, #1a2740 65%, rgba(26, 39, 64, 0.94)) !important;
  border-top: 1px solid rgba(130, 175, 220, 0.18) !important;
}
html.dark .composer-wrap {
  background: linear-gradient(to top, #0f172a 65%, rgba(15, 23, 42, 0.94)) !important;
  border-top-color: #334155 !important;
}

/* Emoji picker compact box (not stretched full width) */
.emoji-picker {
  width: min(272px, calc(100vw - 2rem)) !important;
  max-width: 272px !important;
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
  gap: 2px !important;
  padding: 10px !important;
}
html.envisage .emoji-picker {
  background: #243148 !important;
  border-color: rgba(130, 175, 220, 0.22) !important;
  box-shadow: 0 20px 40px -12px rgb(8 14 28 / 0.55) !important;
}
html.envisage .emoji-picker span:hover {
  background: #2c3b55 !important;
}
html.dark .emoji-picker {
  background: #1e2937 !important;
  border-color: #334155 !important;
}
html.dark .emoji-picker span:hover {
  background: #334155 !important;
}


/* ================================================================
   Envisage sex appeal - type, icons, palette theme cards + Glow mode
   ================================================================ */

/* Theme cards in palette */
.oj-chrome-modes--themes {
  display: grid !important;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0.4rem;
}
.oj-chrome-theme-card {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.35rem;
  padding: 0.4rem 0.35rem 0.45rem;
  border-radius: 0.7rem;
  border: 1px solid #334155;
  background: transparent;
  color: #94a3b8;
  cursor: pointer;
  transition: border-color 0.12s ease, background 0.12s ease, box-shadow 0.12s ease, transform 0.12s ease;
}
.oj-chrome-theme-card:hover {
  background: #1e2937;
  color: #e2e8f0;
  transform: translateY(-1px);
}
.oj-chrome-theme-card.is-selected {
  border-color: color-mix(in srgb, var(--oj-nav-accent) 55%, #334155);
  background: color-mix(in srgb, var(--oj-nav-accent) 16%, transparent);
  color: var(--oj-nav-active-fg);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--oj-nav-accent) 25%, transparent);
}
.oj-chrome-theme-preview {
  display: block;
  height: 1.65rem;
  border-radius: 0.4rem;
  border: 1px solid rgba(255, 255, 255, 0.08);
}
.oj-chrome-theme-preview--fuchsia {
  background: linear-gradient(135deg, #fdf4ff 0%, #f0abfc 45%, #c026d3 100%);
}
.oj-chrome-theme-preview--light {
  background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 55%, #f1f5f9 100%);
}
.oj-chrome-theme-preview--plain {
  background: linear-gradient(135deg, #ffffff 0%, #e5e5e5 50%, #a3a3a3 100%);
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12);
}
.oj-chrome-theme-preview--mono {
  background: linear-gradient(135deg, #ffffff 0%, #ffffff 55%, #000000 55%, #000000 100%);
  box-shadow: inset 0 0 0 1px #000000;
}
.oj-chrome-theme-preview--envisage {
  background:
    radial-gradient(80% 120% at 10% 0%, rgba(34, 211, 238, 0.45), transparent 55%),
    radial-gradient(70% 100% at 100% 100%, rgba(139, 92, 246, 0.35), transparent 50%),
    linear-gradient(135deg, #1a2740 0%, #243148 50%, #172033 100%);
  box-shadow: inset 0 0 0 1px rgba(130, 175, 220, 0.2);
}
.oj-chrome-theme-preview--dark {
  background: linear-gradient(135deg, #020617 0%, #0f172a 50%, #1e2937 100%);
}
.oj-chrome-theme-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-align: center;
  line-height: 1.1;
}
.oj-chrome-theme-card[data-oj-appearance="envisage"].is-selected {
  border-color: color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 60%, #64748b);
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 22%, transparent), rgba(139, 92, 246, 0.16));
  box-shadow: 0 0 18px -6px color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 50%, transparent);
  color: #ecfeff;
}

/* Icons → Envisage (glow) button in palette */
.oj-chrome-mode-btn--glow.is-selected {
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 22%, transparent), rgba(139, 92, 246, 0.12)) !important;
  border-color: color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 48%, #334155) !important;
  color: #ecfeff !important;
  box-shadow: 0 0 10px -4px color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 32%, transparent);
}

/* ---------- Icon mode: glow / Envisage (soft halo - not a spotlight) ---------- */
html[data-oj-icons="glow"] #tradie-nav i,
html[data-oj-icons="glow"] #customer-nav i,
html[data-oj-icons="glow"] #admin-nav i {
  color: var(--oj-nav-accent) !important;
  opacity: 1;
  filter: drop-shadow(0 0 3px color-mix(in srgb, var(--oj-nav-accent) 38%, transparent));
  transition: filter 0.15s ease, color 0.15s ease, transform 0.15s ease;
}
html[data-oj-icons="glow"] #tradie-nav .nav-link:hover i,
html[data-oj-icons="glow"] #customer-nav .nav-link:hover i,
html[data-oj-icons="glow"] #admin-nav .nav-link:hover i,
html[data-oj-icons="glow"] #tradie-nav .nav-group-btn:hover i,
html[data-oj-icons="glow"] #customer-nav .nav-group-btn:hover i,
html[data-oj-icons="glow"] #admin-nav .nav-group-btn:hover i {
  filter: drop-shadow(0 0 5px color-mix(in srgb, var(--oj-nav-accent) 50%, transparent));
  transform: scale(1.04);
}
html[data-oj-icons="glow"] #tradie-nav .nav-link.active i,
html[data-oj-icons="glow"] #customer-nav .nav-link.active i,
html[data-oj-icons="glow"] #admin-nav .nav-link.active i,
html[data-oj-icons="glow"] #tradie-nav .nav-group-btn.active i,
html[data-oj-icons="glow"] #customer-nav .nav-group-btn.active i,
html[data-oj-icons="glow"] #admin-nav .nav-group-btn.active i {
  filter:
    drop-shadow(0 0 4px color-mix(in srgb, var(--oj-nav-accent) 48%, transparent))
    drop-shadow(0 0 8px color-mix(in srgb, var(--oj-nav-accent) 22%, transparent));
}
html[data-oj-icons="glow"] #tradie-nav .nav-link,
html[data-oj-icons="glow"] #customer-nav .nav-link,
html[data-oj-icons="glow"] #admin-nav .nav-link,
html[data-oj-icons="glow"] #tradie-nav .nav-group-btn,
html[data-oj-icons="glow"] #customer-nav .nav-group-btn,
html[data-oj-icons="glow"] #admin-nav .nav-group-btn {
  letter-spacing: 0.015em;
}
html[data-oj-icons="glow"] #tradie-nav .nav-link.active,
html[data-oj-icons="glow"] #customer-nav .nav-link.active,
html[data-oj-icons="glow"] #admin-nav .nav-link.active {
  text-shadow: 0 0 18px color-mix(in srgb, var(--oj-nav-accent) 22%, transparent);
}

/* ---------- Envisage theme: sexier type + default icon lift ---------- */
html.envisage {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
html.envisage body {
  letter-spacing: 0.01em;
}
html.envisage h1,
html.envisage h2,
html.envisage h3 {
  letter-spacing: -0.02em;
  text-shadow: 0 0 28px color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 16%, transparent);
}
html.envisage #main-content h1,
html.envisage #main-content h2,
html.envisage #admin-main-shell h1,
html.envisage #admin-main-shell h2 {
  letter-spacing: -0.025em;
}

/* Nav under Envisage: slightly richer active rail + type */
html.envisage #tradie-nav .nav-link,
html.envisage #customer-nav .nav-link,
html.envisage #admin-nav .nav-link,
html.envisage #tradie-nav .nav-group-btn,
html.envisage #customer-nav .nav-group-btn,
html.envisage #admin-nav .nav-group-btn {
  font-weight: 600;
  letter-spacing: 0.02em;
  border-radius: 0.55rem;
  transition: color 0.14s ease, background 0.14s ease, box-shadow 0.14s ease;
}
html.envisage #tradie-nav .nav-link.active,
html.envisage #customer-nav .nav-link.active,
html.envisage #admin-nav .nav-link.active,
html.envisage #tradie-nav .nav-group-btn.active,
html.envisage #customer-nav .nav-group-btn.active,
html.envisage #admin-nav .nav-group-btn.active {
  background: linear-gradient(90deg, color-mix(in srgb, var(--oj-nav-accent) 18%, transparent), transparent 85%) !important;
  color: #f0f9ff !important;
  box-shadow:
    inset 3px 0 0 var(--oj-nav-accent),
    inset 0 0 20px -8px color-mix(in srgb, var(--oj-nav-accent) 25%, transparent) !important;
}
html.envisage #tradie-nav .nav-link:hover,
html.envisage #customer-nav .nav-link:hover,
html.envisage #admin-nav .nav-link:hover {
  background: color-mix(in srgb, var(--oj-nav-accent) 8%, transparent);
}

/* Default icon polish when Envisage theme + colour icons (not override muted/mono/glow) */
html.envisage[data-oj-icons="colour"] #tradie-nav i,
html.envisage[data-oj-icons="colour"] #customer-nav i,
html.envisage[data-oj-icons="colour"] #admin-nav i {
  filter: drop-shadow(0 0 3px color-mix(in srgb, var(--oj-nav-accent) 28%, transparent));
}
html.envisage[data-oj-icons="colour"] #tradie-nav .nav-link.active i,
html.envisage[data-oj-icons="colour"] #customer-nav .nav-link.active i,
html.envisage[data-oj-icons="colour"] #admin-nav .nav-link.active i {
  filter: drop-shadow(0 0 6px color-mix(in srgb, var(--oj-nav-accent) 45%, transparent));
}

/* Card titles / section labels under Envisage */
html.envisage .uppercase.tracking-wide {
  letter-spacing: 0.08em;
  font-weight: 700;
}
html.envisage .oj-status-chip,
html.envisage .tradie-tier-pill,
html.envisage .med-chip,
html.envisage .leg-chip,
html.envisage .rec-chip,
html.envisage .oj-feature-pill {
  letter-spacing: 0.06em;
}

/* FOUC also needs glow in icon allow-list - done in pages if they hardcode colour|muted|mono */


/* ================================================================
   Envisage readability - tradie dashboard + opacity/slash utilities
   ================================================================ */

/* Orange (opportunities, filters, fire accents) */
html.envisage .text-orange-950,
html.envisage .text-orange-900,
html.envisage .text-orange-800,
html.envisage .text-orange-700 {
  color: #ffedd5 !important;
}
html.envisage .text-orange-600,
html.envisage .text-orange-500 {
  color: #fb923c !important;
}
html.envisage .hover\:text-orange-800:hover {
  color: #fed7aa !important;
}
html.envisage .bg-orange-100 {
  background: rgba(154, 52, 18, 0.5) !important;
  color: #ffedd5 !important;
}
html.envisage .border-orange-100 {
  border-color: rgba(251, 146, 60, 0.35) !important;
}
html.envisage .bg-orange-50 {
  background: linear-gradient(145deg, rgba(124, 45, 18, 0.42), rgba(249, 115, 22, 0.14)) !important;
}

/* Amber 950 + slash opacity variants Tailwind emits as separate classes */
html.envisage .text-amber-950,
html.envisage [class*="text-amber-9"],
html.envisage [class*="text-amber-8"],
html.envisage [class*="text-amber-7"] {
  color: #fde68a !important;
}
html.envisage [class*="text-emerald-9"],
html.envisage [class*="text-emerald-8"],
html.envisage [class*="text-emerald-7"] {
  color: #a7f3d0 !important;
}
html.envisage [class*="text-sky-9"],
html.envisage [class*="text-sky-8"],
html.envisage [class*="text-sky-7"],
html.envisage [class*="text-blue-9"],
html.envisage [class*="text-blue-8"],
html.envisage [class*="text-blue-7"] {
  color: #bae6fd !important;
}
html.envisage [class*="text-red-9"],
html.envisage [class*="text-red-8"],
html.envisage [class*="text-red-7"],
html.envisage [class*="text-rose-9"],
html.envisage [class*="text-rose-8"],
html.envisage [class*="text-rose-7"],
html.envisage [class*="text-rose-6"] {
  color: #fecaca !important;
}
html.envisage [class*="text-violet-9"],
html.envisage [class*="text-violet-8"],
html.envisage [class*="text-violet-7"],
html.envisage [class*="text-purple-9"],
html.envisage [class*="text-purple-8"] {
  color: #ddd6fe !important;
}
html.envisage [class*="text-orange-9"],
html.envisage [class*="text-orange-8"],
html.envisage [class*="text-orange-7"] {
  color: #ffedd5 !important;
}
/* Don’t wash pure white / hero cream */
html.envisage .text-white,
html.envisage [class*="text-orange-1"],
html.envisage [class*="text-amber-1"],
html.envisage [class*="text-emerald-1"] {
  /* keep light-on-dark hero labels */
}

/* Restore hero light tints after broad [class*=] rules */
html.envisage .text-orange-100,
html.envisage .text-orange-100\/90,
html.envisage .text-orange-100\/80,
html.envisage .text-orange-100\/60,
html.envisage [class*="text-orange-100"] {
  color: #ffedd5 !important;
  opacity: 1;
}
html.envisage .text-amber-100,
html.envisage [class*="text-amber-100"] {
  color: #fef3c7 !important;
}
html.envisage .text-emerald-100,
html.envisage [class*="text-emerald-100"] {
  color: #d1fae5 !important;
}

/* Soft slate→white strips on job filter bars stay readable */
html.envisage .from-slate-50 {
  --tw-gradient-from: #1c2740 var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(28 39 64 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.envisage .to-white,
html.envisage .from-white {
  --tw-gradient-to: #243148 var(--tw-gradient-to-position) !important;
}
html.envisage .from-white {
  --tw-gradient-from: #243148 var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(36 49 72 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}

/* Job / estimate cards - ring & soft borders */
html.envisage .ring-emerald-100 {
  --tw-ring-color: rgba(52, 211, 153, 0.28);
}
html.envisage .hover\:border-orange-200:hover,
html.envisage .hover\:border-orange-300:hover {
  border-color: rgba(251, 146, 60, 0.45) !important;
}

/* Tradie-specific sections: opportunities, pipeline, diary strip */
html.envisage #opportunities-section .job-card,
html.envisage #my-estimates-section .job-card,
html.envisage #estimates-section .job-card {
  /* cards already get surface via .bg-white remap */
}
html.envisage #diary-next-up {
  color: #c7f0dd !important;
}
html.envisage #diary-next-up .text-emerald-800\/70,
html.envisage #diary-next-up [class*="text-emerald"] {
  color: #a7f3d0 !important;
}

/* Status pills used heavily on tradie (awaiting / proposed / site visit) */
html.envisage .job-card [class*="bg-amber-"],
html.envisage .job-card [class*="bg-emerald-"],
html.envisage .job-card [class*="bg-sky-"],
html.envisage .job-card [class*="bg-blue-"],
html.envisage .job-card [class*="bg-violet-"] {
  border-color: rgba(148, 190, 230, 0.2);
}

/* Cert / verified banners */
html.envisage #verified-success-banner,
html.envisage #certification-banner {
  color: #fef3c7;
}
html.envisage #verified-success-banner {
  color: #d1fae5;
}
html.envisage #certification-banner .text-amber-800,
html.envisage #certification-banner .text-amber-700,
html.envisage #certification-banner h3 {
  color: #fde68a !important;
}
html.envisage #verified-success-banner .text-emerald-800,
html.envisage #verified-success-banner .text-emerald-700 {
  color: #a7f3d0 !important;
}

/* Estimate filter tabs: keep white text on active gradient pills */
html.envisage .estimate-filter-tab.text-white,
html.envisage .estimate-filter-tab[class*="from-amber"],
html.envisage .estimate-filter-tab[class*="from-emerald"],
html.envisage .estimate-filter-tab[class*="from-rose"],
html.envisage .estimate-filter-tab[class*="from-slate-9"] {
  color: #fff !important;
}
html.envisage .hover\:text-indigo-800:hover {
  color: #c4b5fd !important;
}
html.envisage .text-indigo-800,
html.envisage .text-indigo-700 {
  color: #c4b5fd !important;
}
/* Job title hover on opportunities */
html.envisage .group:hover .group-hover\:text-orange-900 {
  color: #fdba74 !important;
}

/* File inputs / muted helper rows */
html.envisage .file\:bg-slate-100::file-selector-button,
html.envisage input[type="file"]::file-selector-button {
  background-color: #2c3b55 !important;
  color: #e2ebf6 !important;
  border: 0;
}

/* Stone diary chrome - keep classic paper readable under dusk page */
html.envisage .diary-hero-classic,
html.envisage #classic-entry-panel {
  /* intentional warm paper; force text on paper panels */
  color: #1c1917;
}
html.envisage .diary-hero-classic {
  color: #f7f1e3;
}

/* Billing plan tone text */
html.envisage [class*="text-emerald-600"],
html.envisage .text-emerald-600 {
  color: #34d399 !important;
}
html.envisage [class*="text-sky-600"],
html.envisage .text-sky-600 {
  color: #38bdf8 !important;
}
html.envisage [class*="text-violet-600"],
html.envisage .text-violet-600 {
  color: #a78bfa !important;
}

/* Night: same slash-utility coverage (lighter touch) */
html.dark [class*="text-amber-9"],
html.dark [class*="text-amber-8"] {
  color: #fde68a !important;
}
html.dark [class*="text-emerald-9"],
html.dark [class*="text-emerald-8"] {
  color: #a7f3d0 !important;
}
html.dark [class*="text-orange-9"],
html.dark [class*="text-orange-8"] {
  color: #fed7aa !important;
}
html.dark .text-orange-600 {
  color: #fb923c !important;
}
html.dark .bg-orange-100 {
  background: rgba(124, 45, 18, 0.55) !important;
  color: #ffedd5 !important;
}


/* ================================================================
   Envisage - Reports + My Website (Elite email, views, banners)
   ================================================================ */

/* Elite public email card */
html.envisage .oj-elite-email-card,
html.envisage #elite-email-card {
  background:
    radial-gradient(500px 180px at 0% 0%, rgba(245, 158, 11, 0.22), transparent 55%),
    linear-gradient(135deg, #3d2a0a 0%, #243148 48%, #3b1f12 100%) !important;
  border-color: rgba(251, 191, 36, 0.45) !important;
  box-shadow:
    0 14px 32px -16px rgba(8, 14, 28, 0.55),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
}
html.envisage .oj-elite-email-kicker,
html.envisage #elite-email-card .text-amber-800 {
  color: #fde68a !important;
}
html.envisage .oj-elite-email-addr,
html.envisage #elite-email-address {
  color: #fffbeb !important;
  text-shadow: 0 0 24px rgba(251, 191, 36, 0.25);
}
html.envisage .oj-elite-email-help,
html.envisage #elite-email-card .text-slate-600 {
  color: #e7e5e4 !important;
}
html.envisage #elite-email-card strong {
  color: #fef3c7 !important;
}
html.envisage .oj-elite-email-secondary,
html.envisage #elite-email-card .oj-elite-email-secondary {
  background: rgba(36, 49, 72, 0.9) !important;
  color: #fde68a !important;
  border-color: rgba(251, 191, 36, 0.4) !important;
}
html.envisage .oj-elite-email-secondary:hover {
  background: rgba(61, 42, 10, 0.65) !important;
}
html.dark .oj-elite-email-card,
html.dark #elite-email-card {
  background:
    radial-gradient(500px 180px at 0% 0%, rgba(245, 158, 11, 0.18), transparent 55%),
    linear-gradient(135deg, #292524 0%, #1e2937 50%, #1c1917 100%) !important;
  border-color: rgba(251, 191, 36, 0.35) !important;
}
html.dark #elite-email-address {
  color: #fffbeb !important;
}
html.dark .oj-elite-email-secondary {
  background: #0f172a !important;
  color: #fde68a !important;
  border-color: rgba(251, 191, 36, 0.35) !important;
}

/* Reports mini stat tiles */
html.envisage .oj-report-mini--orange {
  background: linear-gradient(145deg, rgba(154, 52, 18, 0.5), rgba(120, 53, 15, 0.35)) !important;
  border-color: rgba(251, 146, 60, 0.35) !important;
}
html.envisage .oj-report-mini--sky {
  background: linear-gradient(145deg, rgba(12, 74, 110, 0.55), rgba(49, 46, 129, 0.35)) !important;
  border-color: rgba(56, 189, 248, 0.3) !important;
}
html.envisage .oj-report-mini--emerald {
  background: linear-gradient(145deg, rgba(6, 95, 70, 0.5), rgba(19, 78, 74, 0.35)) !important;
  border-color: rgba(52, 211, 153, 0.3) !important;
}
html.envisage .oj-report-mini--violet {
  background: linear-gradient(145deg, rgba(76, 29, 149, 0.48), rgba(88, 28, 135, 0.35)) !important;
  border-color: rgba(167, 139, 250, 0.32) !important;
}
html.envisage .oj-report-mini .text-orange-800,
html.envisage .oj-report-mini [class*="text-orange"] { color: #ffedd5 !important; }
html.envisage .oj-report-mini .text-sky-900,
html.envisage .oj-report-mini [class*="text-sky"] { color: #e0f2fe !important; }
html.envisage .oj-report-mini .text-emerald-900,
html.envisage .oj-report-mini [class*="text-emerald"] { color: #d1fae5 !important; }
html.envisage .oj-report-mini .text-violet-900,
html.envisage .oj-report-mini [class*="text-violet"] { color: #ede9fe !important; }

html.dark .oj-report-mini--orange {
  background: linear-gradient(145deg, rgba(124, 45, 18, 0.55), rgba(69, 26, 3, 0.5)) !important;
}
html.dark .oj-report-mini--sky {
  background: linear-gradient(145deg, rgba(12, 74, 110, 0.55), rgba(30, 27, 75, 0.5)) !important;
}
html.dark .oj-report-mini--emerald {
  background: linear-gradient(145deg, rgba(6, 78, 59, 0.55), rgba(19, 78, 74, 0.45)) !important;
}
html.dark .oj-report-mini--violet {
  background: linear-gradient(145deg, rgba(76, 29, 149, 0.5), rgba(59, 7, 100, 0.45)) !important;
}

/* Reports KPI numbers / chart labels */
html.envisage #reports-content .text-violet-600,
html.envisage #reports-content .text-violet-700,
html.envisage #reports-section .text-violet-600,
html.envisage #reports-section .text-violet-700 {
  color: #c4b5fd !important;
}
html.envisage #reports-content .text-amber-600 {
  color: #fbbf24 !important;
}
html.envisage #reports-content .text-emerald-600 {
  color: #34d399 !important;
}
html.envisage #reports-content .hover\:text-violet-800:hover {
  color: #ddd6fe !important;
}
html.envisage #reports-content .bg-slate-100 {
  background-color: #1c2740 !important;
}

/* My Website - views card, URL line, migrations, letterhead */
html.envisage #my-website-section .text-sky-700,
html.envisage #my-website-section .text-sky-600 {
  color: #7dd3fc !important;
}
html.envisage #website-full-url,
html.envisage #my-website-section .text-emerald-700 {
  color: #6ee7b7 !important;
}
html.envisage #my-website-section .text-violet-700,
html.envisage #my-website-section .text-violet-800 {
  color: #c4b5fd !important;
}
html.envisage #website-status-banner {
  /* inherits remapped pastel panels; force body type */
  color: #f1f5f9;
}
html.envisage #website-status-banner .text-orange-900,
html.envisage #website-status-banner .text-orange-950,
html.envisage #website-status-banner [class*="text-orange-9"] {
  color: #ffedd5 !important;
}
html.envisage #website-status-banner .opacity-80,
html.envisage #website-status-banner .opacity-90 {
  color: inherit;
  opacity: 0.92;
}

/* Inline code chips in migration / help banners */
html.envisage #my-website-section code,
html.envisage #reports-section code,
html.envisage code.bg-white,
html.envisage code {
  background: #1a2538 !important;
  color: #e0f2fe !important;
  border-color: rgba(148, 190, 230, 0.28) !important;
}
html.dark #my-website-section code,
html.dark code.bg-white {
  background: #0f172a !important;
  color: #e2e8f0 !important;
  border-color: #334155 !important;
}

/* Gradient stops used by website/report soft cards */
html.envisage .from-amber-50 {
  --tw-gradient-from: rgba(120, 53, 15, 0.55) var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(120 53 15 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.envisage .to-orange-50 {
  --tw-gradient-to: rgba(154, 52, 18, 0.45) var(--tw-gradient-to-position) !important;
}
html.envisage .from-orange-50 {
  --tw-gradient-from: rgba(154, 52, 18, 0.5) var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(154 52 18 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.envisage .to-amber-50 {
  --tw-gradient-to: rgba(120, 53, 15, 0.45) var(--tw-gradient-to-position) !important;
}
html.envisage .to-indigo-50 {
  --tw-gradient-to: rgba(49, 46, 129, 0.45) var(--tw-gradient-to-position) !important;
}
html.envisage .from-indigo-50 {
  --tw-gradient-from: rgba(49, 46, 129, 0.45) var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(49 46 129 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.envisage .to-teal-50 {
  --tw-gradient-to: rgba(19, 78, 74, 0.45) var(--tw-gradient-to-position) !important;
}
html.envisage .from-violet-50 {
  --tw-gradient-from: rgba(76, 29, 149, 0.48) var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(76 29 149 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.envisage .to-purple-50 {
  --tw-gradient-to: rgba(88, 28, 135, 0.45) var(--tw-gradient-to-position) !important;
}
html.envisage .via-white {
  --tw-gradient-via: #243148 var(--tw-gradient-via-position) !important;
  --tw-gradient-to: rgb(36 49 72 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-via), var(--tw-gradient-to) !important;
}

/* Letterhead / Pro-Elite chips on website */
html.envisage #letterhead-card {
  border-color: rgba(167, 139, 250, 0.35) !important;
}
html.envisage #letterhead-locked,
html.envisage #estimate-docs-locked,
html.envisage #website-views-migration,
html.envisage #website-migration-banner,
html.envisage #website-company-migration,
html.envisage #website-builder-migration,
html.envisage #website-sections-migration,
html.envisage #website-socials-migration {
  color: #fef3c7 !important;
}
html.envisage #letterhead-locked strong,
html.envisage #website-migration-banner strong {
  color: #fffbeb !important;
}

/* Page visitors grid cells */
html.envisage #website-views-grid .bg-slate-50 {
  background-color: #1c2740 !important;
  border-color: rgba(130, 175, 220, 0.16) !important;
}

/* 950 shade text that Tailwind uses on status banners */
html.envisage .text-emerald-950,
html.envisage .text-amber-950,
html.envisage .text-red-950,
html.envisage .text-orange-950,
html.envisage .text-sky-950,
html.envisage .text-violet-950 {
  color: #f8fafc !important;
}
html.envisage .text-emerald-950 { color: #d1fae5 !important; }
html.envisage .text-amber-950 { color: #fef3c7 !important; }
html.envisage .text-red-950 { color: #fee2e2 !important; }
html.envisage .text-orange-950 { color: #ffedd5 !important; }
html.envisage .text-sky-950 { color: #e0f2fe !important; }
html.envisage .text-violet-950 { color: #ede9fe !important; }

/* ================================================================
   Envisage - Billing (PayPal) + Communications readability
   ================================================================ */

/* PayPal logo: keep on a true white pad so blue wordmark stays legible */
html.envisage .oj-paypal-trust {
  background: linear-gradient(145deg, rgba(12, 74, 110, 0.45), #1c2740 55%, #243148 100%) !important;
  border-color: rgba(56, 189, 248, 0.28) !important;
}
html.envisage .oj-paypal-logo-wrap,
html.dark .oj-paypal-logo-wrap {
  background: #ffffff !important;
  border-color: rgba(14, 165, 233, 0.35) !important;
  box-shadow: 0 4px 14px -6px rgba(0, 0, 0, 0.45);
}
html.envisage .oj-paypal-logo,
html.dark .oj-paypal-logo {
  /* ensure logo isn't inverted / washed by parent filters */
  filter: none !important;
  opacity: 1 !important;
}
html.envisage .oj-paypal-trust .text-slate-900 {
  color: #f4f8fc !important;
}
html.envisage .oj-paypal-trust .text-slate-600,
html.envisage .oj-paypal-trust .text-slate-400 {
  color: #c5d4e8 !important;
}
html.envisage .oj-paypal-trust strong {
  color: #e0f2fe !important;
}
html.envisage .oj-paypal-trust .text-sky-600,
html.envisage .oj-paypal-trust .text-sky-700 {
  color: #38bdf8 !important;
}
html.dark .oj-paypal-trust {
  background: linear-gradient(145deg, rgba(12, 74, 110, 0.35), #0f172a 60%) !important;
  border-color: #334155 !important;
}

/* Billing plan cards + status chips */
html.envisage #billing-section .text-emerald-600,
html.envisage #billing-section .text-emerald-700 {
  color: #6ee7b7 !important;
}
html.envisage #billing-section .text-sky-600 {
  color: #38bdf8 !important;
}
html.envisage #billing-section .text-violet-600 {
  color: #a78bfa !important;
}
html.envisage #billing-status-card [class*="bg-emerald-50"],
html.envisage #billing-status-card [class*="bg-amber-50"],
html.envisage #billing-status-card [class*="bg-sky-50"],
html.envisage #billing-status-card [class*="bg-red-50"] {
  color: #f8fafc;
}

/* Communications preference rows + boxes */
html.envisage #comms-section .oj-comms-pref,
html.envisage #comms-panel .oj-comms-pref {
  background: #1c2740 !important;
  border-color: rgba(130, 175, 220, 0.18) !important;
}
html.envisage #comms-section .oj-comms-pref-label,
html.envisage #comms-panel .oj-comms-pref-label {
  color: #f4f8fc !important;
}
html.envisage #comms-section .oj-comms-pref-help,
html.envisage #comms-panel .oj-comms-pref-help {
  color: #a8bdd4 !important;
}
html.envisage #comms-section .oj-comms-toggle,
html.envisage #comms-panel .oj-comms-toggle {
  color: #e2ebf6 !important;
}
html.envisage #comms-section .oj-comms-box--emerald {
  background: linear-gradient(145deg, rgba(6, 95, 70, 0.48), rgba(16, 185, 129, 0.12)) !important;
  border-color: rgba(52, 211, 153, 0.32) !important;
  color: #d1fae5;
}
html.envisage #comms-section .oj-comms-box--emerald .font-bold,
html.envisage #comms-section .oj-comms-box--emerald .text-slate-900 {
  color: #ecfdf5 !important;
}
html.envisage #comms-section .oj-comms-box--emerald .text-slate-600,
html.envisage #comms-section .oj-comms-box--emerald .text-slate-500 {
  color: #a7f3d0 !important;
}
html.envisage #comms-section .oj-comms-box--violet,
html.envisage #comms-location-block {
  background: linear-gradient(145deg, rgba(76, 29, 149, 0.42), rgba(139, 92, 246, 0.12)) !important;
  border-color: rgba(167, 139, 250, 0.32) !important;
}
html.envisage #comms-location-block .font-bold,
html.envisage #comms-location-block .text-slate-900 {
  color: #f5f3ff !important;
}
html.envisage #comms-location-block .text-slate-600,
html.envisage #comms-location-block .text-slate-500 {
  color: #ddd6fe !important;
}
html.envisage #comms-location-block .comms-region-btn {
  color: #e2ebf6 !important;
}
html.envisage #comms-location-block .comms-region-btn.bg-violet-50,
html.envisage #comms-location-block .comms-region-btn[class*="bg-violet"] {
  background: rgba(91, 33, 182, 0.45) !important;
  color: #ede9fe !important;
  border-color: rgba(167, 139, 250, 0.5) !important;
}
html.envisage #comms-location-block .oj-comms-town,
html.envisage #comms-location-block label {
  background: #243148 !important;
  border-color: rgba(130, 175, 220, 0.18) !important;
  color: #e2ebf6 !important;
}
html.envisage #comms-location-block label[class*="bg-violet"] {
  background: rgba(91, 33, 182, 0.4) !important;
  border-color: rgba(167, 139, 250, 0.4) !important;
  color: #ede9fe !important;
}
html.envisage #comms-section .oj-comms-box--amber {
  background: linear-gradient(145deg, rgba(120, 53, 15, 0.48), rgba(245, 158, 11, 0.12)) !important;
  border-color: rgba(251, 191, 36, 0.35) !important;
  color: #fef3c7 !important;
}
html.envisage #comms-week-now-btn {
  color: #d1fae5 !important;
  background: rgba(6, 95, 70, 0.4) !important;
  border-color: rgba(52, 211, 153, 0.45) !important;
}
html.envisage #comms-week-now-btn:hover {
  background: rgba(6, 95, 70, 0.55) !important;
}
/* Devices host cards if present */
html.envisage #comms-devices-host .bg-white,
html.envisage #comms-devices-host [class*="bg-slate-50"] {
  background: #1c2740 !important;
  border-color: rgba(130, 175, 220, 0.18) !important;
}
html.envisage #comms-devices-host .text-slate-900,
html.envisage #comms-devices-host .font-semibold {
  color: #f4f8fc !important;
}

/* Slash opacity bg utilities that slipped through */
html.envisage .bg-slate-50\/50,
html.envisage .bg-slate-50\/80,
html.envisage .bg-white\/50 {
  background-color: rgba(28, 39, 64, 0.88) !important;
}

html.dark #comms-section .oj-comms-pref {
  background: #0f172a !important;
  border-color: #334155 !important;
}
html.dark #comms-location-block {
  background: rgba(76, 29, 149, 0.25) !important;
  border-color: rgba(139, 92, 246, 0.3) !important;
}


/* ================================================================
   Envisage - My Website page section toggles
   ================================================================ */

/* Light defaults (all themes) */
.oj-ws-sec {
  border-color: #e2e8f0;
  background: #ffffff;
  box-shadow: none;
  transition: border-color 0.14s ease, background 0.14s ease, box-shadow 0.14s ease, transform 0.12s ease;
}
.oj-ws-sec:hover:not(.is-locked) {
  border-color: #c4b5fd;
}
.oj-ws-sec.is-on {
  border-color: #a78bfa;
  background: linear-gradient(145deg, #f5f3ff 0%, #ede9fe 100%);
  box-shadow: 0 6px 16px -10px rgba(109, 40, 217, 0.35);
}
.oj-ws-sec.is-locked {
  background: #f8fafc;
  opacity: 0.62;
}
.oj-ws-sec-icon {
  background: #ede9fe;
  color: #7c3aed;
}
.oj-ws-sec.is-on .oj-ws-sec-icon {
  background: #8b5cf6;
  color: #ffffff;
  box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.18);
}
.oj-ws-sec-title {
  color: #1e293b;
}
.oj-ws-sec-blurb {
  color: #64748b;
}
.oj-ws-sec.is-on .oj-ws-sec-title {
  color: #4c1d95;
}

/* Envisage dusk polish */
html.envisage .oj-ws-sec {
  border-color: rgba(130, 175, 220, 0.2);
  background:
    linear-gradient(165deg, color-mix(in srgb, var(--oj-nav-accent, #8b5cf6) 6%, #243148) 0%, #1c2740 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
}
html.envisage .oj-ws-sec:hover:not(.is-locked) {
  border-color: color-mix(in srgb, var(--oj-nav-accent, #a78bfa) 45%, #64748b);
  transform: translateY(-1px);
  box-shadow:
    0 10px 22px -14px rgba(8, 14, 28, 0.55),
    inset 0 1px 0 rgba(255, 255, 255, 0.05);
}
html.envisage .oj-ws-sec.is-on {
  border-color: color-mix(in srgb, var(--oj-nav-accent, #a78bfa) 65%, #c4b5fd);
  background:
    radial-gradient(280px 100px at 0% 0%, color-mix(in srgb, var(--oj-nav-accent, #8b5cf6) 28%, transparent), transparent 60%),
    linear-gradient(145deg, rgba(91, 33, 182, 0.42) 0%, #243148 55%, #1e2d48 100%);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--oj-nav-accent, #8b5cf6) 25%, transparent),
    0 12px 24px -14px rgba(91, 33, 182, 0.45),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
}
html.envisage .oj-ws-sec.is-locked {
  background: #152033;
  border-color: rgba(100, 116, 139, 0.25);
  opacity: 0.55;
}
html.envisage .oj-ws-sec-icon {
  background: rgba(139, 92, 246, 0.22);
  color: #c4b5fd;
  border: 1px solid rgba(167, 139, 250, 0.25);
}
html.envisage .oj-ws-sec.is-on .oj-ws-sec-icon {
  background: linear-gradient(145deg, color-mix(in srgb, var(--oj-nav-accent, #8b5cf6) 85%, #a78bfa), #6d28d9);
  color: #fff;
  border-color: transparent;
  box-shadow:
    0 0 12px color-mix(in srgb, var(--oj-nav-accent, #8b5cf6) 40%, transparent),
    0 0 0 2px rgba(36, 49, 72, 0.9);
}
html.envisage .oj-ws-sec-title {
  color: #f1f5f9 !important;
  letter-spacing: 0.01em;
}
html.envisage .oj-ws-sec-blurb {
  color: #94a8c0 !important;
}
html.envisage .oj-ws-sec.is-on .oj-ws-sec-title {
  color: #ede9fe !important;
}
html.envisage .oj-ws-sec.is-on .oj-ws-sec-blurb {
  color: #c4b5fd !important;
}
html.envisage .oj-ws-sec-lock {
  color: #fbbf24 !important;
}
html.envisage .oj-ws-sec-check {
  accent-color: var(--oj-nav-accent, #8b5cf6);
}

/* Night */
html.dark .oj-ws-sec {
  border-color: #334155;
  background: #1e2937;
}
html.dark .oj-ws-sec.is-on {
  border-color: #8b5cf6;
  background: linear-gradient(145deg, rgba(91, 33, 182, 0.35), #1e2937 70%);
}
html.dark .oj-ws-sec-icon {
  background: rgba(139, 92, 246, 0.25);
  color: #c4b5fd;
}
html.dark .oj-ws-sec.is-on .oj-ws-sec-icon {
  background: #7c3aed;
  color: #fff;
}
html.dark .oj-ws-sec-title { color: #f1f5f9 !important; }
html.dark .oj-ws-sec-blurb { color: #94a3b8 !important; }
html.dark .oj-ws-sec.is-on .oj-ws-sec-title { color: #ede9fe !important; }

/* Layout / hero option cards under builder (same family) */
html.envisage #website-layout-options button,
html.envisage #website-hero-options button {
  background: linear-gradient(165deg, #243148, #1c2740) !important;
  border-color: rgba(130, 175, 220, 0.2) !important;
  color: #e2ebf6;
}
html.envisage #website-layout-options button .text-slate-900,
html.envisage #website-hero-options button .text-slate-900,
html.envisage #website-layout-options button .font-bold {
  color: #f4f8fc !important;
}
html.envisage #website-layout-options button .text-slate-500,
html.envisage #website-hero-options button .text-slate-500 {
  color: #94a8c0 !important;
}
html.envisage #website-layout-options button.border-violet-500,
html.envisage #website-layout-options button[class*="border-violet-5"],
html.envisage #website-hero-options button.border-violet-500,
html.envisage #website-hero-options button[class*="bg-violet"] {
  border-color: color-mix(in srgb, var(--oj-nav-accent, #8b5cf6) 60%, #a78bfa) !important;
  background:
    radial-gradient(240px 90px at 0% 0%, color-mix(in srgb, var(--oj-nav-accent, #8b5cf6) 30%, transparent), transparent 60%),
    linear-gradient(145deg, rgba(91, 33, 182, 0.4), #243148 70%) !important;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--oj-nav-accent, #8b5cf6) 28%, transparent);
}


/* ================================================================
   Envisage + Night - Opp filters, gallery drop, ratings, PayPal
   ================================================================ */

/* --- Opportunities: Filter by trade --- */
html.envisage .oj-opp-filters,
html.dark .oj-opp-filters {
  background: #1c2740 !important;
  border-color: rgba(130, 175, 220, 0.18) !important;
}
html.dark .oj-opp-filters {
  background: #0f172a !important;
  border-color: #334155 !important;
}
html.envisage .oj-opp-filters-head,
html.dark .oj-opp-filters-head {
  background: linear-gradient(90deg, #243148 0%, #1c2740 100%) !important;
}
html.dark .oj-opp-filters-head {
  background: linear-gradient(90deg, #1e2937 0%, #0f172a 100%) !important;
}
html.envisage .oj-opp-filters-title,
html.dark .oj-opp-filters-title {
  color: #f8fafc !important;
  letter-spacing: 0.06em;
}
html.envisage .oj-opp-filters-summary,
html.dark .oj-opp-filters-summary,
html.envisage #opp-filter-summary,
html.dark #opp-filter-summary {
  color: #94a8c0 !important;
}
html.envisage .oj-opp-filters-icon,
html.dark .oj-opp-filters-icon {
  background: rgba(234, 88, 12, 0.28) !important;
  color: #fdba74 !important;
}
html.envisage .oj-opp-filters-panel,
html.dark .oj-opp-filters-panel,
html.envisage #opp-filters-panel,
html.dark #opp-filters-panel {
  background: #152033 !important;
  border-color: rgba(130, 175, 220, 0.14) !important;
}
html.dark #opp-filters-panel {
  background: #020617 !important;
  border-color: #1e2937 !important;
}
html.envisage .oj-opp-filters-clear,
html.dark .oj-opp-filters-clear {
  color: #fdba74 !important;
  border-color: rgba(251, 146, 60, 0.4) !important;
  background: rgba(154, 52, 18, 0.35) !important;
}
html.envisage .oj-opp-chip--off,
html.dark .oj-opp-chip--off {
  background: #243148 !important;
  border-color: rgba(148, 163, 184, 0.28) !important;
  color: #e2ebf6 !important;
}
html.dark .oj-opp-chip--off {
  background: #1e2937 !important;
  border-color: #475569 !important;
  color: #e2e8f0 !important;
}
html.envisage .oj-opp-chip--off .oj-opp-chip-count,
html.dark .oj-opp-chip--off .oj-opp-chip-count {
  background: #1a2538 !important;
  color: #cbd5e1 !important;
}
html.envisage .oj-opp-chip--off:hover,
html.dark .oj-opp-chip--off:hover {
  border-color: rgba(251, 146, 60, 0.55) !important;
  color: #ffedd5 !important;
}
html.envisage .oj-opp-chip--on,
html.dark .oj-opp-chip--on {
  color: #fff !important;
}
html.envisage #opp-filters-toggle:hover,
html.dark #opp-filters-toggle:hover {
  background: rgba(51, 65, 85, 0.45) !important;
}

/* --- My Website gallery drop zone --- */
html.envisage .oj-ws-gallery-drop,
html.envisage #website-gallery-drop,
html.dark .oj-ws-gallery-drop,
html.dark #website-gallery-drop {
  background:
    radial-gradient(320px 120px at 50% 0%, color-mix(in srgb, var(--oj-nav-accent, #8b5cf6) 18%, transparent), transparent 65%),
    linear-gradient(165deg, #2a1f4a 0%, #1c2740 55%, #243148 100%) !important;
  border-color: color-mix(in srgb, var(--oj-nav-accent, #a78bfa) 45%, #64748b) !important;
  border-style: dashed !important;
}
html.dark #website-gallery-drop {
  background:
    radial-gradient(320px 120px at 50% 0%, rgba(139, 92, 246, 0.2), transparent 65%),
    linear-gradient(165deg, #1e1b4b 0%, #0f172a 60%) !important;
  border-color: rgba(167, 139, 250, 0.4) !important;
}
html.envisage .oj-ws-gallery-drop-icon,
html.envisage #website-gallery-drop i,
html.dark .oj-ws-gallery-drop-icon,
html.dark #website-gallery-drop i {
  color: #c4b5fd !important;
  filter: drop-shadow(0 0 8px rgba(139, 92, 246, 0.45));
}
html.envisage .oj-ws-gallery-drop-text,
html.envisage #website-gallery-drop p,
html.dark .oj-ws-gallery-drop-text,
html.dark #website-gallery-drop p {
  color: #e2ebf6 !important;
}
html.envisage .oj-ws-gallery-drop-text strong,
html.dark .oj-ws-gallery-drop-text strong {
  color: #ede9fe !important;
}
html.envisage .oj-ws-gallery-drop-hint,
html.dark .oj-ws-gallery-drop-hint {
  color: #a5b4c8 !important;
}
html.envisage #website-gallery-drop.border-violet-500,
html.envisage #website-gallery-drop.bg-violet-100 {
  background: rgba(91, 33, 182, 0.45) !important;
  border-color: #a78bfa !important;
}

/* --- My Ratings: customer reviews --- */
html.envisage #my-ratings-section #ratings-reviews .oj-rating-card,
html.dark #my-ratings-section #ratings-reviews .oj-rating-card {
  background: #1c2740 !important;
  border-color: rgba(130, 175, 220, 0.18) !important;
}
html.dark #my-ratings-section #ratings-reviews .oj-rating-card {
  background: #1e2937 !important;
  border-color: #334155 !important;
}
html.envisage #my-ratings-section .oj-rating-card:hover,
html.dark #my-ratings-section .oj-rating-card:hover {
  background: #243148 !important;
  border-color: rgba(251, 191, 36, 0.28) !important;
}
html.envisage #my-ratings-section .oj-rating-score,
html.dark #my-ratings-section .oj-rating-score {
  color: #fef3c7 !important;
}
html.envisage #my-ratings-section .oj-rating-comment,
html.dark #my-ratings-section .oj-rating-comment {
  color: #e2ebf6 !important;
}
html.envisage #my-ratings-section .oj-rating-empty,
html.envisage #my-ratings-section .oj-rating-date,
html.dark #my-ratings-section .oj-rating-empty,
html.dark #my-ratings-section .oj-rating-date {
  color: #94a8c0 !important;
}
html.envisage #my-ratings-section .oj-rating-meta,
html.dark #my-ratings-section .oj-rating-meta {
  color: #a8bdd4 !important;
}
html.envisage #my-ratings-section .oj-rating-chip,
html.dark #my-ratings-section .oj-rating-chip {
  background: #152033 !important;
  border-color: rgba(130, 175, 220, 0.16) !important;
  color: #c5d4e8 !important;
}
html.dark #my-ratings-section .oj-rating-chip {
  background: #0f172a !important;
  border-color: #334155 !important;
}
html.envisage #my-ratings-section .oj-rating-chip-score,
html.dark #my-ratings-section .oj-rating-chip-score {
  color: #fbbf24 !important;
}
html.envisage #my-ratings-section .oj-rating-empty-state,
html.dark #my-ratings-section .oj-rating-empty-state {
  background: #1c2740 !important;
  border-color: rgba(148, 163, 184, 0.25) !important;
}
html.envisage #my-ratings-section .oj-rating-empty-state .font-bold,
html.dark #my-ratings-section .oj-rating-empty-state .font-bold {
  color: #f4f8fc !important;
}
html.envisage #my-ratings-section .oj-rating-empty-state .text-sm,
html.dark #my-ratings-section .oj-rating-empty-state .text-sm {
  color: #a8bdd4 !important;
}
html.envisage #my-ratings-section #ratings-breakdown,
html.dark #my-ratings-section #ratings-breakdown {
  color: #c5d4e8 !important;
}
html.envisage #my-ratings-section #ratings-breakdown .text-slate-600,
html.envisage #my-ratings-section #ratings-breakdown .text-slate-900,
html.dark #my-ratings-section #ratings-breakdown .text-slate-600,
html.dark #my-ratings-section #ratings-breakdown .text-slate-900 {
  color: #e2ebf6 !important;
}
html.envisage #my-ratings-section #ratings-breakdown .border-slate-50,
html.dark #my-ratings-section #ratings-breakdown .border-slate-50 {
  border-color: rgba(148, 163, 184, 0.15) !important;
}

/* --- PayPal logo: force true white pad (beat .bg-white theme remap) --- */
html.envisage #billing-section .oj-paypal-logo-wrap,
html.dark #billing-section .oj-paypal-logo-wrap,
html.envisage .oj-paypal-logo-wrap.bg-white,
html.dark .oj-paypal-logo-wrap.bg-white,
html.envisage .oj-paypal-trust .oj-paypal-logo-wrap,
html.dark .oj-paypal-trust .oj-paypal-logo-wrap {
  background: #ffffff !important;
  background-color: #ffffff !important;
  background-image: none !important;
  border-color: #e0f2fe !important;
  box-shadow: 0 6px 16px -8px rgba(0, 0, 0, 0.5), inset 0 0 0 1px rgba(14, 165, 233, 0.12) !important;
  min-width: 7.25rem;
  padding-left: 0.85rem !important;
  padding-right: 0.85rem !important;
}
html.envisage #billing-section .oj-paypal-logo,
html.dark #billing-section .oj-paypal-logo,
html.envisage .oj-paypal-logo,
html.dark .oj-paypal-logo {
  filter: none !important;
  opacity: 1 !important;
  mix-blend-mode: normal !important;
  background: transparent !important;
}


/* ================================================================
   Page headers (heroes) - Section | Hybrid | Match
   html[data-oj-hero="hybrid|match|section"]
   .oj-section-hero[data-oj-hero-tone="…"]
   ================================================================ */

.oj-section-hero {
  --oj-hero-tint: #38bdf8;
  position: relative;
  isolation: isolate;
}

/* Tone map (section personality - soft secondary wash) */
.oj-section-hero[data-oj-hero-tone="orange"]  { --oj-hero-tint: #f97316; }
.oj-section-hero[data-oj-hero-tone="amber"]   { --oj-hero-tint: #f59e0b; }
.oj-section-hero[data-oj-hero-tone="emerald"] { --oj-hero-tint: #10b981; }
.oj-section-hero[data-oj-hero-tone="sky"]     { --oj-hero-tint: #0ea5e9; }
.oj-section-hero[data-oj-hero-tone="blue"]    { --oj-hero-tint: #2563eb; }
.oj-section-hero[data-oj-hero-tone="cyan"]    { --oj-hero-tint: #06b6d4; }
.oj-section-hero[data-oj-hero-tone="violet"]  { --oj-hero-tint: #8b5cf6; }
.oj-section-hero[data-oj-hero-tone="indigo"]  { --oj-hero-tint: #6366f1; }
.oj-section-hero[data-oj-hero-tone="rose"]    { --oj-hero-tint: #f43f5e; }
.oj-section-hero[data-oj-hero-tone="teal"]    { --oj-hero-tint: #14b8a6; }

/*
 * Hybrid: deep slate + header colour aurora + soft section tint
 * Match: header colour wash
 * Classic (section): leave Tailwind per-page colours alone
 * --oj-header-accent follows menu when header colour is Auto
 */

/* Header colour tokens (backup maps; JS also sets the CSS vars) */
html[data-oj-header-colour="auto"] {
  --oj-header-accent: var(--oj-nav-accent, #0ea5e9);
  --oj-header-accent-vivid: var(--oj-nav-accent-vivid, var(--oj-nav-accent, #0ea5e9));
}
html[data-oj-header-colour="fuchsia"] { --oj-header-accent: #c026d3; --oj-header-accent-vivid: #c026d3; }
html[data-oj-header-colour="teal"]    { --oj-header-accent: #0f766e; --oj-header-accent-vivid: #0f766e; }
html[data-oj-header-colour="emerald"] { --oj-header-accent: #10b981; --oj-header-accent-vivid: #10b981; }
html[data-oj-header-colour="sky"]     { --oj-header-accent: #0ea5e9; --oj-header-accent-vivid: #0ea5e9; }
html[data-oj-header-colour="cyan"]    { --oj-header-accent: #22d3ee; --oj-header-accent-vivid: #22d3ee; }
html[data-oj-header-colour="violet"]  { --oj-header-accent: #8b5cf6; --oj-header-accent-vivid: #8b5cf6; }
html[data-oj-header-colour="rose"]    { --oj-header-accent: #f43f5e; --oj-header-accent-vivid: #f43f5e; }
html[data-oj-header-colour="amber"]   { --oj-header-accent: #f59e0b; --oj-header-accent-vivid: #f59e0b; }
html[data-oj-header-colour="blue"]    { --oj-header-accent: #2563eb; --oj-header-accent-vivid: #2563eb; }
html[data-oj-header-colour="orange"]  { --oj-header-accent: #ea580c; --oj-header-accent-vivid: #ea580c; }

html[data-oj-hero="hybrid"] .oj-section-hero,
html:not([data-oj-hero]) .oj-section-hero {
  background-color: #0b1220 !important;
  background-image:
    radial-gradient(900px 320px at 8% -20%, color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 48%, transparent), transparent 55%),
    radial-gradient(700px 280px at 95% 0%, color-mix(in srgb, var(--oj-hero-tint) 32%, transparent), transparent 52%),
    radial-gradient(500px 200px at 50% 120%, color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 16%, transparent), transparent 50%),
    linear-gradient(135deg,
      #0b1220 0%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 26%, #0f172a) 40%,
      color-mix(in srgb, var(--oj-hero-tint) 28%, #111827) 78%,
      #0f172a 100%) !important;
  box-shadow:
    0 18px 40px -18px color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 40%, transparent),
    inset 0 1px 0 rgba(255, 255, 255, 0.08) !important;
  border: 1px solid color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 28%, transparent);
}

/* Match: header colour wash - still dark base for white type */
html[data-oj-hero="match"] .oj-section-hero {
  background-color: #0b1220 !important;
  background-image:
    radial-gradient(1000px 360px at 10% -25%, color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 48%, transparent), transparent 55%),
    radial-gradient(700px 280px at 100% 10%, color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 22%, transparent), transparent 50%),
    linear-gradient(135deg,
      #0b1220 0%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 32%, #0f172a) 48%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 45%, #1e293b) 100%) !important;
  box-shadow:
    0 18px 40px -18px color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 35%, transparent),
    inset 0 1px 0 rgba(255, 255, 255, 0.07) !important;
}

/* Soften decorative blobs inside heroes under hybrid/match so they don't fight */
html[data-oj-hero="hybrid"] .oj-section-hero > .absolute.blur-2xl,
html[data-oj-hero="hybrid"] .oj-section-hero > .absolute.blur-3xl,
html[data-oj-hero="match"] .oj-section-hero > .absolute.blur-2xl,
html[data-oj-hero="match"] .oj-section-hero > .absolute.blur-3xl {
  opacity: 0.55;
  background: color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 35%, transparent) !important;
}

/* Envisage + hybrid: slightly richer glass edge */
html.envisage[data-oj-hero="hybrid"] .oj-section-hero {
  border: 1px solid color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 22%, transparent);
}

/* Keep hero copy bright on hybrid/match overrides */
html[data-oj-hero="hybrid"] .oj-section-hero,
html[data-oj-hero="match"] .oj-section-hero {
  color: #fff;
}

/* Classic (section): no background override - Tailwind psychology colours stand */


/* ================================================================
   Night soft accents - deeper fills, vivid rails/icons
   --oj-nav-accent      = soft on Night (JS)
   --oj-nav-accent-vivid = full brand (JS)
   ================================================================ */

html.dark {
  --oj-nav-accent-vivid: var(--oj-nav-accent-vivid, var(--oj-nav-accent));
  --oj-nav-active-fg: #f1f5f9;
}

/* Active nav rail / text - keep vivid so wayfinding stays sharp */
html.dark #tradie-nav .nav-link.active,
html.dark #customer-nav .nav-link.active,
html.dark #admin-nav .nav-link.active,
html.dark #tradie-nav .nav-group-btn.active,
html.dark #customer-nav .nav-group-btn.active,
html.dark #admin-nav .nav-group-btn.active {
  box-shadow: inset 3px 0 0 var(--oj-nav-accent-vivid, var(--oj-nav-accent)) !important;
  color: var(--oj-nav-active-fg) !important;
}
html.dark #tradie-nav .nav-link:hover,
html.dark #customer-nav .nav-link:hover,
html.dark #admin-nav .nav-link:hover,
html.dark #tradie-nav .nav-group-btn:hover,
html.dark #customer-nav .nav-group-btn:hover,
html.dark #admin-nav .nav-group-btn:hover {
  color: #f8fafc;
}

/* Mono + glow icons: vivid (readable pop) */
html.dark[data-oj-icons="mono"] #tradie-nav i,
html.dark[data-oj-icons="mono"] #customer-nav i,
html.dark[data-oj-icons="mono"] #admin-nav i,
html.dark[data-oj-icons="glow"] #tradie-nav i,
html.dark[data-oj-icons="glow"] #customer-nav i,
html.dark[data-oj-icons="glow"] #admin-nav i {
  color: var(--oj-nav-accent-vivid, var(--oj-nav-accent)) !important;
}
html.dark[data-oj-icons="glow"] #tradie-nav i,
html.dark[data-oj-icons="glow"] #customer-nav i,
html.dark[data-oj-icons="glow"] #admin-nav i {
  filter: drop-shadow(0 0 3px color-mix(in srgb, var(--oj-nav-accent-vivid, var(--oj-nav-accent)) 28%, transparent));
  opacity: 0.95;
}

/* Tinted rail: softer wash */
html.dark[data-oj-rail="tinted"] .sidebar {
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--oj-nav-accent) 10%, #0f172a) 0%, #0f172a 52%, #0f172a 100%) !important;
}

/* Chrome selected pills / swatches - calmer on Night */
html.dark .oj-chrome-mode-btn.is-selected {
  border-color: color-mix(in srgb, var(--oj-nav-accent) 45%, #334155);
  background: color-mix(in srgb, var(--oj-nav-accent) 14%, transparent);
  color: #e2e8f0;
}
html.dark .oj-chrome-swatch.is-selected {
  box-shadow: 0 0 0 2px #0f172a, 0 0 0 4px var(--oj-nav-accent-vivid, var(--oj-nav-accent));
}

/* Hybrid / Match under Night - soft header colour wash */
html.dark[data-oj-hero="hybrid"] .oj-section-hero {
  background-color: #020617 !important;
  background-image:
    radial-gradient(900px 320px at 8% -20%, color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent)) 32%, transparent), transparent 58%),
    radial-gradient(700px 280px at 95% 0%, color-mix(in srgb, var(--oj-hero-tint) 18%, transparent), transparent 55%),
    linear-gradient(135deg,
      #020617 0%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent)) 14%, #0b1220) 45%,
      color-mix(in srgb, var(--oj-hero-tint) 14%, #0f172a) 100%) !important;
  box-shadow:
    0 18px 40px -22px rgba(0, 0, 0, 0.7),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
}
html.dark[data-oj-hero="match"] .oj-section-hero {
  background-color: #020617 !important;
  background-image:
    radial-gradient(1000px 360px at 10% -25%, color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent)) 36%, transparent), transparent 55%),
    linear-gradient(135deg,
      #020617 0%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent)) 22%, #0b1220) 50%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent)) 28%, #111827) 100%) !important;
}

/* ================================================================
   Light-family themes: page headers must visibly follow the theme
   (default hybrid/match used a single dark slate base for all)
   White hero type stays; base wash picks up each theme's hue.
   ================================================================ */

/* Shared hybrid for light themes: tinted deep base */
html[data-oj-theme="light"][data-oj-hero="hybrid"] .oj-section-hero,
html[data-oj-theme="light"]:not([data-oj-hero]) .oj-section-hero,
html.slate[data-oj-hero="hybrid"] .oj-section-hero,
html.slate:not([data-oj-hero]) .oj-section-hero,
html.clinic[data-oj-hero="hybrid"] .oj-section-hero,
html.clinic:not([data-oj-hero]) .oj-section-hero,
html.sand[data-oj-hero="hybrid"] .oj-section-hero,
html.sand:not([data-oj-hero]) .oj-section-hero,
html.ocean[data-oj-hero="hybrid"] .oj-section-hero,
html.ocean:not([data-oj-hero]) .oj-section-hero,
html.nebula[data-oj-hero="hybrid"] .oj-section-hero,
html.nebula:not([data-oj-hero]) .oj-section-hero,
html.fuchsia[data-oj-hero="hybrid"] .oj-section-hero,
html.fuchsia:not([data-oj-hero]) .oj-section-hero {
  color: #fff !important;
}

/* Light — clean ink + accent aurora */
html[data-oj-theme="light"][data-oj-hero="hybrid"] .oj-section-hero,
html[data-oj-theme="light"]:not([data-oj-hero]) .oj-section-hero {
  background-color: #0f172a !important;
  background-image:
    radial-gradient(900px 320px at 8% -20%, color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 55%, transparent), transparent 55%),
    radial-gradient(700px 280px at 95% 0%, color-mix(in srgb, var(--oj-hero-tint) 38%, transparent), transparent 52%),
    linear-gradient(135deg,
      #0f172a 0%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 32%, #1e293b) 42%,
      color-mix(in srgb, var(--oj-hero-tint) 30%, #334155) 100%) !important;
  border: 1px solid color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 32%, transparent) !important;
  box-shadow:
    0 18px 40px -16px color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 38%, transparent),
    inset 0 1px 0 rgba(255, 255, 255, 0.1) !important;
}
html[data-oj-theme="light"][data-oj-hero="match"] .oj-section-hero {
  background-color: #0f172a !important;
  background-image:
    radial-gradient(1000px 360px at 10% -25%, color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 58%, transparent), transparent 55%),
    linear-gradient(135deg,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 22%, #0f172a) 0%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 42%, #1e293b) 55%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #0ea5e9)) 55%, #334155) 100%) !important;
}

/* Calm (clinic) — teal clinical deep wash */
html.clinic[data-oj-hero="hybrid"] .oj-section-hero,
html.clinic:not([data-oj-hero]) .oj-section-hero,
html[data-oj-theme="clinic"][data-oj-hero="hybrid"] .oj-section-hero,
html[data-oj-theme="clinic"]:not([data-oj-hero]) .oj-section-hero {
  background-color: #0a1f22 !important;
  background-image:
    radial-gradient(900px 320px at 8% -20%, color-mix(in srgb, var(--oj-header-accent, #0f766e) 50%, transparent), transparent 55%),
    radial-gradient(700px 280px at 95% 0%, color-mix(in srgb, var(--oj-hero-tint, #14b8a6) 36%, transparent), transparent 52%),
    linear-gradient(135deg,
      #0a1f22 0%,
      color-mix(in srgb, var(--oj-header-accent, #0f766e) 34%, #134e4a) 40%,
      color-mix(in srgb, var(--oj-hero-tint, #14b8a6) 28%, #115e59) 78%,
      #0f2f33 100%) !important;
  border: 1px solid color-mix(in srgb, var(--oj-header-accent, #0f766e) 40%, transparent) !important;
  box-shadow:
    0 18px 40px -16px rgba(15, 118, 110, 0.4),
    inset 0 1px 0 rgba(204, 251, 241, 0.12) !important;
}
html.clinic[data-oj-hero="match"] .oj-section-hero,
html[data-oj-theme="clinic"][data-oj-hero="match"] .oj-section-hero {
  background-color: #0a1f22 !important;
  background-image:
    radial-gradient(1000px 360px at 10% -25%, color-mix(in srgb, var(--oj-header-accent, #0f766e) 55%, transparent), transparent 55%),
    linear-gradient(135deg,
      color-mix(in srgb, var(--oj-header-accent, #0f766e) 28%, #0a1f22) 0%,
      color-mix(in srgb, var(--oj-header-accent, #0f766e) 48%, #134e4a) 55%,
      color-mix(in srgb, var(--oj-header-accent, #0f766e) 58%, #0f766e) 100%) !important;
}

/* Slate — cool steel */
html.slate[data-oj-hero="hybrid"] .oj-section-hero,
html.slate:not([data-oj-hero]) .oj-section-hero,
html[data-oj-theme="slate"][data-oj-hero="hybrid"] .oj-section-hero,
html[data-oj-theme="slate"]:not([data-oj-hero]) .oj-section-hero {
  background-color: #1e293b !important;
  background-image:
    radial-gradient(900px 320px at 8% -20%, color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #64748b)) 42%, transparent), transparent 55%),
    radial-gradient(700px 280px at 95% 0%, color-mix(in srgb, var(--oj-hero-tint) 28%, transparent), transparent 52%),
    linear-gradient(135deg,
      #1e293b 0%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #64748b)) 24%, #334155) 42%,
      color-mix(in srgb, var(--oj-hero-tint) 22%, #475569) 78%,
      #334155 100%) !important;
  border: 1px solid color-mix(in srgb, var(--oj-header-accent, #64748b) 35%, #94a3b8) !important;
  box-shadow:
    0 18px 40px -16px rgba(15, 23, 42, 0.35),
    inset 0 1px 0 rgba(255, 255, 255, 0.1) !important;
}
html.slate[data-oj-hero="match"] .oj-section-hero,
html[data-oj-theme="slate"][data-oj-hero="match"] .oj-section-hero {
  background-color: #1e293b !important;
  background-image:
    radial-gradient(1000px 360px at 10% -25%, color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #64748b)) 48%, transparent), transparent 55%),
    linear-gradient(135deg,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #64748b)) 20%, #1e293b) 0%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #64748b)) 38%, #334155) 55%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent, #64748b)) 48%, #475569) 100%) !important;
}

/* Sand — warm amber-ink */
html.sand[data-oj-hero="hybrid"] .oj-section-hero,
html.sand:not([data-oj-hero]) .oj-section-hero,
html[data-oj-theme="sand"][data-oj-hero="hybrid"] .oj-section-hero,
html[data-oj-theme="sand"]:not([data-oj-hero]) .oj-section-hero {
  background-color: #1c1410 !important;
  background-image:
    radial-gradient(900px 320px at 8% -20%, color-mix(in srgb, var(--oj-header-accent, #f59e0b) 48%, transparent), transparent 55%),
    radial-gradient(700px 280px at 95% 0%, color-mix(in srgb, var(--oj-hero-tint, #f97316) 34%, transparent), transparent 52%),
    linear-gradient(135deg,
      #1c1410 0%,
      color-mix(in srgb, var(--oj-header-accent, #f59e0b) 30%, #292016) 40%,
      color-mix(in srgb, var(--oj-hero-tint, #f97316) 26%, #3d2a14) 78%,
      #241a12 100%) !important;
  border: 1px solid color-mix(in srgb, var(--oj-header-accent, #f59e0b) 38%, transparent) !important;
  box-shadow:
    0 18px 40px -16px rgba(180, 83, 9, 0.35),
    inset 0 1px 0 rgba(254, 243, 199, 0.12) !important;
}
html.sand[data-oj-hero="match"] .oj-section-hero,
html[data-oj-theme="sand"][data-oj-hero="match"] .oj-section-hero {
  background-color: #1c1410 !important;
  background-image:
    radial-gradient(1000px 360px at 10% -25%, color-mix(in srgb, var(--oj-header-accent, #f59e0b) 52%, transparent), transparent 55%),
    linear-gradient(135deg,
      color-mix(in srgb, var(--oj-header-accent, #f59e0b) 26%, #1c1410) 0%,
      color-mix(in srgb, var(--oj-header-accent, #f59e0b) 44%, #3d2a14) 55%,
      color-mix(in srgb, var(--oj-header-accent, #f59e0b) 55%, #b45309) 100%) !important;
}

/* Ocean — deep blue */
html.ocean[data-oj-hero="hybrid"] .oj-section-hero,
html.ocean:not([data-oj-hero]) .oj-section-hero,
html[data-oj-theme="ocean"][data-oj-hero="hybrid"] .oj-section-hero,
html[data-oj-theme="ocean"]:not([data-oj-hero]) .oj-section-hero {
  background-color: #0b1e2e !important;
  background-image:
    radial-gradient(900px 320px at 8% -20%, color-mix(in srgb, var(--oj-header-accent, #0ea5e9) 52%, transparent), transparent 55%),
    radial-gradient(700px 280px at 95% 0%, color-mix(in srgb, var(--oj-hero-tint, #38bdf8) 36%, transparent), transparent 52%),
    linear-gradient(135deg,
      #0b1e2e 0%,
      color-mix(in srgb, var(--oj-header-accent, #0ea5e9) 32%, #0c4a6e) 40%,
      color-mix(in srgb, var(--oj-hero-tint, #38bdf8) 28%, #075985) 78%,
      #0f2a3d 100%) !important;
  border: 1px solid color-mix(in srgb, var(--oj-header-accent, #0ea5e9) 40%, transparent) !important;
  box-shadow:
    0 18px 40px -16px rgba(2, 132, 199, 0.38),
    inset 0 1px 0 rgba(224, 242, 254, 0.12) !important;
}
html.ocean[data-oj-hero="match"] .oj-section-hero,
html[data-oj-theme="ocean"][data-oj-hero="match"] .oj-section-hero {
  background-color: #0b1e2e !important;
  background-image:
    radial-gradient(1000px 360px at 10% -25%, color-mix(in srgb, var(--oj-header-accent, #0ea5e9) 55%, transparent), transparent 55%),
    linear-gradient(135deg,
      color-mix(in srgb, var(--oj-header-accent, #0ea5e9) 28%, #0b1e2e) 0%,
      color-mix(in srgb, var(--oj-header-accent, #0ea5e9) 48%, #0c4a6e) 55%,
      color-mix(in srgb, var(--oj-header-accent, #0ea5e9) 58%, #0284c7) 100%) !important;
}

/* Nebula — cosmic violet / magenta hero */
html.nebula[data-oj-hero="hybrid"] .oj-section-hero,
html.nebula:not([data-oj-hero]) .oj-section-hero,
html[data-oj-theme="nebula"][data-oj-hero="hybrid"] .oj-section-hero,
html[data-oj-theme="nebula"]:not([data-oj-hero]) .oj-section-hero {
  background-color: #14081f !important;
  background-image:
    radial-gradient(900px 320px at 8% -20%, color-mix(in srgb, var(--oj-header-accent, #8b5cf6) 55%, transparent), transparent 55%),
    radial-gradient(700px 280px at 95% 0%, color-mix(in srgb, var(--oj-hero-tint, #ec4899) 40%, transparent), transparent 52%),
    radial-gradient(500px 220px at 50% 120%, rgba(56, 189, 248, 0.2), transparent 55%),
    linear-gradient(135deg,
      #14081f 0%,
      color-mix(in srgb, var(--oj-header-accent, #8b5cf6) 36%, #2e1065) 38%,
      color-mix(in srgb, var(--oj-hero-tint, #ec4899) 30%, #4a044e) 72%,
      #1a0b2e 100%) !important;
  border: 1px solid color-mix(in srgb, var(--oj-header-accent, #8b5cf6) 42%, transparent) !important;
  box-shadow:
    0 18px 40px -16px rgba(109, 40, 217, 0.45),
    inset 0 1px 0 rgba(237, 233, 254, 0.14) !important;
  color: #fff !important;
}
html.nebula[data-oj-hero="match"] .oj-section-hero,
html[data-oj-theme="nebula"][data-oj-hero="match"] .oj-section-hero {
  background-color: #14081f !important;
  background-image:
    radial-gradient(1000px 360px at 10% -25%, color-mix(in srgb, var(--oj-header-accent, #8b5cf6) 58%, transparent), transparent 55%),
    radial-gradient(600px 260px at 100% 80%, rgba(236, 72, 153, 0.35), transparent 50%),
    linear-gradient(135deg,
      color-mix(in srgb, var(--oj-header-accent, #8b5cf6) 30%, #14081f) 0%,
      color-mix(in srgb, var(--oj-header-accent, #8b5cf6) 50%, #4c1d95) 50%,
      color-mix(in srgb, var(--oj-header-accent, #8b5cf6) 45%, #831843) 100%) !important;
  color: #fff !important;
}

/* Purple — lilac-ink */
html.fuchsia[data-oj-hero="hybrid"] .oj-section-hero,
html.fuchsia:not([data-oj-hero]) .oj-section-hero,
html[data-oj-theme="fuchsia"][data-oj-hero="hybrid"] .oj-section-hero,
html[data-oj-theme="fuchsia"]:not([data-oj-hero]) .oj-section-hero {
  background-color: #1a0b24 !important;
  background-image:
    radial-gradient(900px 320px at 8% -20%, color-mix(in srgb, var(--oj-header-accent, #c026d3) 52%, transparent), transparent 55%),
    radial-gradient(700px 280px at 95% 0%, color-mix(in srgb, var(--oj-hero-tint, #e879f9) 34%, transparent), transparent 52%),
    linear-gradient(135deg,
      #1a0b24 0%,
      color-mix(in srgb, var(--oj-header-accent, #c026d3) 34%, #4a044e) 40%,
      color-mix(in srgb, var(--oj-hero-tint, #e879f9) 26%, #701a75) 78%,
      #1e1030 100%) !important;
  border: 1px solid color-mix(in srgb, var(--oj-header-accent, #c026d3) 40%, transparent) !important;
  box-shadow:
    0 18px 40px -16px rgba(192, 38, 211, 0.38),
    inset 0 1px 0 rgba(250, 232, 255, 0.12) !important;
}
html.fuchsia[data-oj-hero="match"] .oj-section-hero,
html[data-oj-theme="fuchsia"][data-oj-hero="match"] .oj-section-hero {
  background-color: #1a0b24 !important;
  background-image:
    radial-gradient(1000px 360px at 10% -25%, color-mix(in srgb, var(--oj-header-accent, #c026d3) 55%, transparent), transparent 55%),
    linear-gradient(135deg,
      color-mix(in srgb, var(--oj-header-accent, #c026d3) 28%, #1a0b24) 0%,
      color-mix(in srgb, var(--oj-header-accent, #c026d3) 48%, #4a044e) 55%,
      color-mix(in srgb, var(--oj-header-accent, #c026d3) 58%, #a21caf) 100%) !important;
}

/* Graphite — cooler charcoal than Night */
html.graphite[data-oj-hero="hybrid"] .oj-section-hero,
html.graphite:not([data-oj-hero]) .oj-section-hero,
html[data-oj-theme="plain"][data-oj-hero="hybrid"] .oj-section-hero,
html[data-oj-theme="plain"]:not([data-oj-hero]) .oj-section-hero,
html.plain[data-oj-hero="hybrid"] .oj-section-hero,
html.plain:not([data-oj-hero]) .oj-section-hero {
  background: linear-gradient(135deg, #404040 0%, #262626 55%, #171717 100%) !important;
  color: #fafafa !important;
}
html[data-oj-theme="plain"][data-oj-hero="match"] .oj-section-hero,
html.plain[data-oj-hero="match"] .oj-section-hero {
  background: linear-gradient(135deg, #525252 0%, #262626 100%) !important;
  color: #fafafa !important;
}

html[data-oj-theme="graphite"][data-oj-hero="hybrid"] .oj-section-hero,
html[data-oj-theme="graphite"]:not([data-oj-hero]) .oj-section-hero {
  background-color: #151c28 !important;
  background-image:
    radial-gradient(900px 320px at 8% -20%, color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent)) 36%, transparent), transparent 58%),
    radial-gradient(700px 280px at 95% 0%, color-mix(in srgb, var(--oj-hero-tint) 20%, transparent), transparent 55%),
    linear-gradient(135deg,
      #151c28 0%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent)) 18%, #1e293b) 45%,
      color-mix(in srgb, var(--oj-hero-tint) 16%, #232d3f) 100%) !important;
  border: 1px solid color-mix(in srgb, var(--oj-header-accent, #64748b) 28%, #3d4b63) !important;
  box-shadow:
    0 18px 40px -20px rgba(0, 0, 0, 0.55),
    inset 0 1px 0 rgba(255, 255, 255, 0.06) !important;
}
html.graphite[data-oj-hero="match"] .oj-section-hero,
html[data-oj-theme="graphite"][data-oj-hero="match"] .oj-section-hero {
  background-color: #151c28 !important;
  background-image:
    radial-gradient(1000px 360px at 10% -25%, color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent)) 40%, transparent), transparent 55%),
    linear-gradient(135deg,
      #151c28 0%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent)) 26%, #1e293b) 50%,
      color-mix(in srgb, var(--oj-header-accent, var(--oj-nav-accent)) 34%, #334155) 100%) !important;
}

/* Glance accent under Night - still header colour (Auto → menu) */
html.dark .oj-glance {
  --glance-accent: var(--oj-header-accent, var(--oj-nav-accent, #0284c7));
}

/* Focus rings a touch quieter */
html.dark input:focus,
html.dark select:focus,
html.dark textarea:focus {
  border-color: color-mix(in srgb, var(--oj-nav-accent) 65%, #64748b) !important;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--oj-nav-accent) 18%, transparent);
}


/* ================================================================
   SLATE - cool professional mid-gray (between Light and Envisage)
   html.slate | data-oj-theme="slate"
   Soft slate surfaces, no chalk white, light color-scheme
   ================================================================ */

html.slate {
  color-scheme: light;
  --slate-bg: #d5dde8;
  --slate-bg-deep: #c8d2e0;
  --slate-surface: #e8eef5;
  --slate-surface-2: #f0f4f9;
  --slate-elevated: #f7f9fc;
  --slate-border: #b8c4d4;
  --slate-border-strong: #9aabbf;
  --slate-ink: #0f172a;
  --slate-text: #1e293b;
  --slate-muted: #475569;
  --slate-faint: #64748b;
  --slate-input: #eef2f7;
}

html.slate body {
  background:
    radial-gradient(900px 400px at 0% 0%, color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 8%, transparent), transparent 55%),
    linear-gradient(168deg, #cfd8e6 0%, #dce3ed 45%, #d0d9e6 100%) !important;
  background-attachment: scroll;
  color: var(--slate-text);
}
html.slate body.bg-slate-50,
html.slate body.bg-slate-100 {
  background-color: transparent !important;
}

/* Mobile / top bars */
html.slate .md\:hidden.fixed.top-0.bg-white,
html.slate .md\:hidden.fixed.top-0,
html.slate .oj-mobile-topbar {
  background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%) !important;
  border-color: #334155 !important;
  color: #e2e8f0;
}
html.slate #mobile-menu-btn {
  color: #e2e8f0 !important;
}
html.slate .oj-theme-toggle-mobile {
  color: #e2e8f0;
  background: #334155;
}

/* Surfaces - never pure white */
html.slate .bg-white {
  background-color: var(--slate-surface) !important;
}
html.slate .bg-slate-50 {
  background-color: var(--slate-bg) !important;
}
html.slate .bg-slate-100 {
  background-color: #c5d0de !important;
}
html.slate .bg-slate-200 {
  background-color: #aebccf !important;
}
html.slate .hover\:bg-slate-50:hover {
  background-color: #dce4ef !important;
}
html.slate .hover\:bg-slate-100:hover {
  background-color: #c8d3e2 !important;
}
html.slate .hover\:bg-white:hover {
  background-color: var(--slate-elevated) !important;
}

/* Soft tinted panels - keep pastel readable on cool gray */
html.slate .bg-emerald-50 {
  background: linear-gradient(145deg, #d1fae5, #ecfdf5) !important;
}
html.slate .bg-amber-50 {
  background: linear-gradient(145deg, #fef3c7, #fffbeb) !important;
}
html.slate .bg-orange-50 {
  background: linear-gradient(145deg, #ffedd5, #fff7ed) !important;
}
html.slate .bg-sky-50,
html.slate .bg-blue-50 {
  background: linear-gradient(145deg, #e0f2fe, #f0f9ff) !important;
}
html.slate .bg-red-50,
html.slate .bg-rose-50 {
  background: linear-gradient(145deg, #fee2e2, #fff1f2) !important;
}
html.slate .bg-violet-50,
html.slate .bg-purple-50 {
  background: linear-gradient(145deg, #ede9fe, #f5f3ff) !important;
}
html.slate .bg-cyan-50 {
  background: linear-gradient(145deg, #cffafe, #ecfeff) !important;
}

/* Keep status text dark-readable (do not apply night lightening) */
html.slate .text-slate-900,
html.slate .text-slate-800 { color: #0f172a !important; }
html.slate .text-slate-700 { color: #1e293b !important; }
html.slate .text-slate-600 { color: #334155 !important; }
html.slate .text-slate-500 { color: #475569 !important; }
html.slate .text-slate-400 { color: #64748b !important; }

html.slate .border-slate-100,
html.slate .border-slate-200,
html.slate .border-slate-300 {
  border-color: var(--slate-border) !important;
}
html.slate .divide-slate-100 > :not([hidden]) ~ :not([hidden]),
html.slate .divide-slate-200 > :not([hidden]) ~ :not([hidden]) {
  border-color: var(--slate-border) !important;
}

html.slate input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
html.slate select,
html.slate textarea {
  background-color: var(--slate-input) !important;
  border-color: var(--slate-border-strong) !important;
  color: var(--slate-ink) !important;
}
html.slate input:focus,
html.slate select:focus,
html.slate textarea:focus {
  border-color: color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 55%, #64748b) !important;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 16%, transparent);
}

html.slate button.bg-white,
html.slate a.bg-white {
  background: var(--slate-elevated) !important;
}

html.slate .shadow-sm,
html.slate .shadow,
html.slate .shadow-md,
html.slate .shadow-lg {
  --tw-shadow-color: rgb(15 23 42 / 0.12);
  box-shadow: 0 10px 22px -14px rgb(15 23 42 / 0.22) !important;
}

html.slate table thead,
html.slate thead {
  background-color: #cfd8e6 !important;
}
html.slate tr:hover {
  background-color: rgba(14, 165, 233, 0.06);
}

/* Cards lift */
html.slate .rounded-2xl.bg-white,
html.slate .rounded-xl.bg-white,
html.slate .rounded-lg.bg-white,
html.slate .rounded-3xl.bg-white {
  background: linear-gradient(180deg, #f3f6fa 0%, var(--slate-surface) 100%) !important;
  border-color: var(--slate-border);
  box-shadow: 0 10px 24px -16px rgba(15, 23, 42, 0.18);
}

/* Opacity whites */
html.slate .bg-white\/95,
html.slate .bg-white\/90,
html.slate .bg-white\/80,
html.slate .bg-slate-50\/50,
html.slate .bg-slate-50\/80 {
  background-color: rgba(232, 238, 245, 0.94) !important;
}

/* Glance */
html.slate body.oj-noc-mode,
html.slate body.oj-noc-mode #admin-main-shell {
  background: linear-gradient(168deg, #cfd8e6 0%, #dce3ed 50%, #d0d9e6 100%) !important;
}
html.slate .oj-glance {
  color: #334155;
  --glance-card: #e8eef5;
  --glance-card-border: #b8c4d4;
  --glance-muted: #64748b;
  --glance-ink: #0f172a;
  --glance-soft: #d5dde8;
  --glance-shadow: 0 10px 24px -16px rgba(15, 23, 42, 0.2);
}

/* ================================================================
   PLAIN - greyscale only (no colour wash)
   html.plain | data-oj-theme="plain"
   White / grey surfaces, ink text, monochrome accents
   ================================================================ */

html.plain {
  color-scheme: light;
  --plain-bg: #ececec;
  --plain-surface: #ffffff;
  --plain-elevated: #f7f7f7;
  --plain-soft: #f0f0f0;
  --plain-border: #d4d4d4;
  --plain-border-strong: #a3a3a3;
  --plain-ink: #171717;
  --plain-text: #262626;
  --plain-muted: #525252;
  --plain-faint: #737373;
  --plain-input: #fafafa;
  /* Force greyscale chrome even if accent attrs remain */
  --oj-nav-accent: #525252 !important;
  --oj-nav-accent-vivid: #404040 !important;
  --oj-nav-accent-soft: #737373 !important;
  --oj-header-accent: #404040 !important;
  --oj-header-accent-vivid: #404040 !important;
  --oj-nav-active-fg: #f5f5f5 !important;
}

html.plain body {
  background: linear-gradient(180deg, #f5f5f5 0%, #ececec 50%, #e5e5e5 100%) !important;
  background-attachment: scroll;
  color: var(--plain-text);
}
html.plain body.bg-slate-50,
html.plain body.bg-slate-100 {
  background-color: transparent !important;
}

html.plain .md\:hidden.fixed.top-0.bg-white,
html.plain .md\:hidden.fixed.top-0,
html.plain .oj-mobile-topbar {
  background: linear-gradient(180deg, #262626 0%, #171717 100%) !important;
  border-color: #404040 !important;
  color: #f5f5f5;
}
html.plain #mobile-menu-btn { color: #f5f5f5 !important; }
html.plain .oj-theme-toggle-mobile {
  color: #f5f5f5;
  background: #404040;
}

html.plain .bg-white { background-color: var(--plain-surface) !important; }
html.plain .bg-slate-50 { background-color: var(--plain-soft) !important; }
html.plain .bg-slate-100 { background-color: #e5e5e5 !important; }
html.plain .bg-slate-200 { background-color: #d4d4d4 !important; }
html.plain .hover\:bg-slate-50:hover { background-color: #ebebeb !important; }
html.plain .hover\:bg-slate-100:hover { background-color: #e0e0e0 !important; }
html.plain .hover\:bg-white:hover { background-color: var(--plain-elevated) !important; }

/* Soft tinted panels → greyscale only */
html.plain .bg-emerald-50,
html.plain .bg-amber-50,
html.plain .bg-orange-50,
html.plain .bg-sky-50,
html.plain .bg-blue-50,
html.plain .bg-red-50,
html.plain .bg-rose-50,
html.plain .bg-violet-50,
html.plain .bg-purple-50,
html.plain .bg-cyan-50,
html.plain .bg-teal-50,
html.plain .bg-fuchsia-50,
html.plain .bg-indigo-50 {
  background: linear-gradient(145deg, #f0f0f0, #fafafa) !important;
}

html.plain .text-slate-900,
html.plain .text-slate-800 { color: #171717 !important; }
html.plain .text-slate-700 { color: #262626 !important; }
html.plain .text-slate-600 { color: #404040 !important; }
html.plain .text-slate-500 { color: #525252 !important; }
html.plain .text-slate-400 { color: #737373 !important; }

/* Chromatic text → ink greys (status still readable by weight) */
html.plain .text-emerald-700,
html.plain .text-emerald-800,
html.plain .text-emerald-600,
html.plain .text-teal-700,
html.plain .text-sky-700,
html.plain .text-sky-800,
html.plain .text-blue-700,
html.plain .text-indigo-700,
html.plain .text-violet-700,
html.plain .text-fuchsia-700,
html.plain .text-amber-700,
html.plain .text-amber-800,
html.plain .text-orange-700,
html.plain .text-rose-700,
html.plain .text-red-700,
html.plain .text-cyan-700 {
  color: #262626 !important;
}
html.plain .text-emerald-600,
html.plain .text-sky-600,
html.plain .text-amber-600 { color: #404040 !important; }

html.plain .border-slate-100,
html.plain .border-slate-200,
html.plain .border-slate-300 { border-color: var(--plain-border) !important; }
html.plain .border-emerald-200,
html.plain .border-amber-200,
html.plain .border-sky-200,
html.plain .border-blue-200,
html.plain .border-red-200,
html.plain .border-rose-200,
html.plain .border-violet-200,
html.plain .border-indigo-200,
html.plain .border-teal-200,
html.plain .border-fuchsia-200,
html.plain .border-orange-200 {
  border-color: var(--plain-border-strong) !important;
}
html.plain .divide-slate-100 > :not([hidden]) ~ :not([hidden]),
html.plain .divide-slate-200 > :not([hidden]) ~ :not([hidden]) {
  border-color: var(--plain-border) !important;
}

html.plain input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
html.plain select,
html.plain textarea {
  background-color: var(--plain-input) !important;
  border-color: var(--plain-border-strong) !important;
  color: var(--plain-ink) !important;
}
html.plain input:focus,
html.plain select:focus,
html.plain textarea:focus {
  border-color: #525252 !important;
  box-shadow: 0 0 0 3px rgba(64, 64, 64, 0.15);
}

html.plain button.bg-white,
html.plain a.bg-white {
  background: var(--plain-elevated) !important;
}

/* Primary coloured buttons → graphite */
html.plain button.bg-sky-600,
html.plain button.bg-emerald-600,
html.plain button.bg-violet-600,
html.plain button.bg-indigo-600,
html.plain button.bg-fuchsia-600,
html.plain button.bg-amber-600,
html.plain a.bg-sky-600,
html.plain a.bg-emerald-600 {
  background: #404040 !important;
  color: #fafafa !important;
  border-color: #262626 !important;
}
html.plain button.bg-sky-600:hover,
html.plain button.bg-emerald-600:hover,
html.plain button.bg-violet-600:hover {
  background: #262626 !important;
}
/* Keep destructive red slightly present for safety */
html.plain button.bg-red-600,
html.plain button.bg-rose-600 {
  background: #525252 !important;
  color: #fafafa !important;
}

/* Badges / pills → greyscale */
html.plain .bg-emerald-100,
html.plain .bg-sky-100,
html.plain .bg-amber-100,
html.plain .bg-violet-100,
html.plain .bg-indigo-100,
html.plain .bg-rose-100,
html.plain .bg-red-100,
html.plain .bg-teal-100,
html.plain .bg-fuchsia-100,
html.plain .bg-orange-100,
html.plain .bg-cyan-100 {
  background: #e5e5e5 !important;
  color: #262626 !important;
  border-color: #a3a3a3 !important;
}
html.plain .text-emerald-900,
html.plain .text-sky-900,
html.plain .text-amber-900,
html.plain .text-violet-900,
html.plain .text-indigo-900,
html.plain .text-rose-900,
html.plain .text-teal-900,
html.plain .text-fuchsia-900 {
  color: #171717 !important;
}

html.plain .shadow-sm,
html.plain .shadow,
html.plain .shadow-md,
html.plain .shadow-lg {
  box-shadow: 0 10px 22px -14px rgb(0 0 0 / 0.18) !important;
}

html.plain table thead,
html.plain thead {
  background-color: #e5e5e5 !important;
}
html.plain tr:hover {
  background-color: rgba(0, 0, 0, 0.03);
}

html.plain .rounded-2xl.bg-white,
html.plain .rounded-xl.bg-white,
html.plain .rounded-lg.bg-white,
html.plain .rounded-3xl.bg-white {
  background: linear-gradient(180deg, #ffffff 0%, #f7f7f7 100%) !important;
  border-color: var(--plain-border);
  box-shadow: 0 10px 24px -16px rgba(0, 0, 0, 0.12);
}

html.plain .bg-white\/95,
html.plain .bg-white\/90,
html.plain .bg-white\/80,
html.plain .bg-slate-50\/50,
html.plain .bg-slate-50\/80 {
  background-color: rgba(255, 255, 255, 0.94) !important;
}

/* Sidebar / rail: greyscale only — kill rainbow icon utilities + coloured rail tint */
html.plain .sidebar,
html.plain aside.sidebar,
html.plain #sidebar,
html.plain #admin-sidebar,
html.plain .med-sidebar,
html.plain .leg-sidebar,
html.plain .rec-sidebar,
html.plain .biz-sidebar,
html[data-oj-theme="plain"] .sidebar,
html[data-oj-theme="plain"] #sidebar,
html[data-oj-theme="plain"] .med-sidebar,
html[data-oj-theme="plain"] .leg-sidebar,
html[data-oj-theme="plain"] .rec-sidebar {
  background: linear-gradient(180deg, var(--oj-sidebar-bg) 0%, var(--oj-sidebar-bg-end) 100%) !important;
  border-color: var(--oj-sidebar-border) !important;
  color: var(--oj-sidebar-text) !important;
}
/* Plain ignores accent-tinted rail — stay monochrome */
html.plain[data-oj-rail="tinted"] .sidebar,
html.plain[data-oj-rail="tinted"] #sidebar,
html[data-oj-theme="plain"][data-oj-rail="tinted"] .sidebar {
  background: linear-gradient(180deg, #2a2a2a 0%, #171717 100%) !important;
}
html.plain .sidebar .nav-link,
html.plain .sidebar .nav-group-btn,
html.plain .sidebar a,
html.plain .sidebar button,
html[data-oj-theme="plain"] .sidebar .nav-link,
html[data-oj-theme="plain"] .sidebar .nav-group-btn {
  color: var(--oj-sidebar-text) !important;
}
html.plain .sidebar .nav-link:hover,
html.plain .sidebar .nav-group-btn:hover,
html[data-oj-theme="plain"] .sidebar .nav-link:hover {
  background: var(--oj-sidebar-hover) !important;
  color: #fafafa !important;
}
html.plain .sidebar .nav-link.active,
html.plain .sidebar .nav-group-btn.active,
html.plain .sidebar .nav-link[aria-current="page"],
html[data-oj-theme="plain"] .sidebar .nav-link.active {
  background: var(--oj-sidebar-active) !important;
  color: #fafafa !important;
  box-shadow: inset 3px 0 0 #a3a3a3 !important;
}
/* Force ALL nav icons grey (override text-sky-400 / amber / fuchsia utilities) */
html.plain .sidebar i,
html.plain #admin-nav i,
html.plain #tradie-nav i,
html.plain #customer-nav i,
html.plain .med-sidebar i,
html.plain .leg-sidebar i,
html.plain .rec-sidebar i,
html[data-oj-theme="plain"] .sidebar i,
html[data-oj-theme="plain"] #admin-nav i,
html[data-oj-theme="plain"] #tradie-nav i,
html[data-oj-theme="plain"] #customer-nav i {
  color: #a3a3a3 !important;
  opacity: 1 !important;
  filter: grayscale(1) !important;
}
html.plain .sidebar .nav-link.active i,
html.plain .sidebar .nav-group-btn.active i,
html[data-oj-theme="plain"] .sidebar .nav-link.active i {
  color: #f5f5f5 !important;
  filter: grayscale(1) !important;
}
html.plain .sidebar .nav-sub,
html[data-oj-theme="plain"] .sidebar .nav-sub {
  border-left-color: #525252 !important;
}
html.plain .sidebar-footer,
html[data-oj-theme="plain"] .sidebar-footer {
  border-top-color: #404040 !important;
  background: transparent !important;
}
/* Status chips / role pills in brand row stay readable greys */
html.plain .sidebar .oj-status-chip,
html.plain .sidebar .tradie-tier-pill,
html[data-oj-theme="plain"] .sidebar .oj-status-chip {
  filter: grayscale(1);
}

/* Section heroes: graphite, not brand colour */
html.plain[data-oj-hero="hybrid"] .oj-section-hero,
html.plain:not([data-oj-hero]) .oj-section-hero,
html.plain[data-oj-hero="match"] .oj-section-hero {
  background: linear-gradient(135deg, #404040 0%, #262626 55%, #171717 100%) !important;
  border-color: #525252 !important;
  color: #fafafa !important;
}

/* Glance + health chart wraps */
html.plain .oj-glance {
  color: #404040;
  --glance-card: #ffffff;
  --glance-card-border: #d4d4d4;
  --glance-muted: #737373;
  --glance-ink: #171717;
  --glance-soft: #f0f0f0;
  --glance-shadow: 0 10px 24px -16px rgba(0, 0, 0, 0.14);
  --glance-accent: #525252;
}
html.plain .oj-health-chart-wrap {
  background: #f5f5f5 !important;
  border-color: #a3a3a3 !important;
  color: #171717 !important;
}

/* Feature pills: monochrome lamps */
html.plain .oj-feature-pill.is-on {
  color: #f5f5f5 !important;
  background: rgba(64, 64, 64, 0.85) !important;
  border-color: #a3a3a3 !important;
  box-shadow: none !important;
}
html.plain .oj-feature-pill.is-on .oj-feature-pill-state {
  background: #e5e5e5 !important;
  color: #171717 !important;
}
html.plain .oj-feature-pill.is-cf-atk,
html.plain .oj-feature-pill.is-cf-high,
html.plain .oj-feature-pill.is-cf-med,
html.plain .oj-feature-pill.is-cf-low {
  color: #f5f5f5 !important;
  background: rgba(64, 64, 64, 0.9) !important;
  border-color: #a3a3a3 !important;
  box-shadow: none !important;
  animation: none !important;
}
html.plain .oj-feature-pill.is-cf-glow-escalate,
html.plain .oj-feature-pill.is-cf-glow-revert {
  animation: none !important;
  box-shadow: 0 0 0 2px #a3a3a3 !important;
}

/* Gradients that inject colour */
html.plain [class*="from-sky-50"],
html.plain [class*="from-emerald-50"],
html.plain [class*="from-violet-50"],
html.plain [class*="from-amber-50"],
html.plain [class*="from-rose-50"],
html.plain [class*="from-indigo-50"],
html.plain [class*="from-fuchsia-50"] {
  background: linear-gradient(145deg, #f5f5f5, #ffffff) !important;
  border-color: var(--plain-border) !important;
}

/* ================================================================
   MONO - pure black & white only (boring on purpose)
   html.mono | data-oj-theme="mono"
   White page, white left menu, black type/icons — zero colour
   ================================================================ */

html.mono {
  color-scheme: light;
  --mono-bg: #ffffff;
  --mono-surface: #ffffff;
  --mono-elevated: #ffffff;
  --mono-soft: #f5f5f5;
  --mono-border: #000000;
  --mono-border-soft: #d4d4d4;
  --mono-ink: #000000;
  --mono-text: #000000;
  --mono-muted: #404040;
  --mono-faint: #737373;
  --mono-input: #ffffff;
  --oj-nav-accent: #000000 !important;
  --oj-nav-accent-vivid: #000000 !important;
  --oj-nav-accent-soft: #000000 !important;
  --oj-header-accent: #000000 !important;
  --oj-header-accent-vivid: #000000 !important;
  --oj-nav-active-fg: #ffffff !important;
}

html.mono body {
  background: #ffffff !important;
  background-image: none !important;
  color: #000000 !important;
}
html.mono body.bg-slate-50,
html.mono body.bg-slate-100,
html.mono body.bg-white {
  background-color: #ffffff !important;
  background-image: none !important;
}

/* Mobile topbar: white + black (matches white rail) */
html.mono .md\:hidden.fixed.top-0.bg-white,
html.mono .md\:hidden.fixed.top-0,
html.mono .oj-mobile-topbar {
  background: #ffffff !important;
  border-color: #000000 !important;
  color: #000000 !important;
}
html.mono #mobile-menu-btn { color: #000000 !important; }
html.mono .oj-theme-toggle-mobile {
  color: #000000 !important;
  background: #ffffff !important;
  border: 1px solid #000000 !important;
}

html.mono .bg-white { background-color: #ffffff !important; }
html.mono .bg-slate-50,
html.mono .bg-slate-100,
html.mono .bg-slate-200 { background-color: #ffffff !important; }
html.mono .hover\:bg-slate-50:hover,
html.mono .hover\:bg-slate-100:hover,
html.mono .hover\:bg-white:hover { background-color: #f5f5f5 !important; }

/* Kill every soft colour wash */
html.mono .bg-emerald-50,
html.mono .bg-amber-50,
html.mono .bg-orange-50,
html.mono .bg-sky-50,
html.mono .bg-blue-50,
html.mono .bg-red-50,
html.mono .bg-rose-50,
html.mono .bg-violet-50,
html.mono .bg-purple-50,
html.mono .bg-cyan-50,
html.mono .bg-teal-50,
html.mono .bg-fuchsia-50,
html.mono .bg-indigo-50 {
  background: #ffffff !important;
  background-image: none !important;
}

html.mono .text-slate-900,
html.mono .text-slate-800,
html.mono .text-slate-700 { color: #000000 !important; }
html.mono .text-slate-600,
html.mono .text-slate-500 { color: #000000 !important; }
html.mono .text-slate-400 { color: #404040 !important; }

html.mono .text-emerald-700,
html.mono .text-emerald-800,
html.mono .text-emerald-600,
html.mono .text-teal-700,
html.mono .text-sky-700,
html.mono .text-sky-800,
html.mono .text-sky-600,
html.mono .text-blue-700,
html.mono .text-indigo-700,
html.mono .text-violet-700,
html.mono .text-fuchsia-700,
html.mono .text-amber-700,
html.mono .text-amber-800,
html.mono .text-amber-600,
html.mono .text-orange-700,
html.mono .text-rose-700,
html.mono .text-red-700,
html.mono .text-red-600,
html.mono .text-cyan-700,
html.mono .text-emerald-900,
html.mono .text-sky-900,
html.mono .text-amber-900,
html.mono .text-violet-900,
html.mono .text-indigo-900,
html.mono .text-rose-900,
html.mono .text-teal-900,
html.mono .text-fuchsia-900 {
  color: #000000 !important;
}

html.mono .border-slate-100,
html.mono .border-slate-200,
html.mono .border-slate-300,
html.mono .border-emerald-200,
html.mono .border-amber-200,
html.mono .border-sky-200,
html.mono .border-blue-200,
html.mono .border-red-200,
html.mono .border-rose-200,
html.mono .border-violet-200,
html.mono .border-indigo-200,
html.mono .border-teal-200,
html.mono .border-fuchsia-200,
html.mono .border-orange-200 {
  border-color: #000000 !important;
}
html.mono .divide-slate-100 > :not([hidden]) ~ :not([hidden]),
html.mono .divide-slate-200 > :not([hidden]) ~ :not([hidden]) {
  border-color: #d4d4d4 !important;
}

html.mono input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
html.mono select,
html.mono textarea {
  background-color: #ffffff !important;
  border-color: #000000 !important;
  color: #000000 !important;
}
html.mono input:focus,
html.mono select:focus,
html.mono textarea:focus {
  border-color: #000000 !important;
  box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.2);
}

html.mono button.bg-white,
html.mono a.bg-white {
  background: #ffffff !important;
  color: #000000 !important;
  border-color: #000000 !important;
}

/* All primary / destructive buttons → pure black */
html.mono button.bg-sky-600,
html.mono button.bg-emerald-600,
html.mono button.bg-violet-600,
html.mono button.bg-indigo-600,
html.mono button.bg-fuchsia-600,
html.mono button.bg-amber-600,
html.mono button.bg-red-600,
html.mono button.bg-rose-600,
html.mono a.bg-sky-600,
html.mono a.bg-emerald-600,
html.mono a.bg-red-600 {
  background: #000000 !important;
  color: #ffffff !important;
  border-color: #000000 !important;
}
html.mono button.bg-sky-600:hover,
html.mono button.bg-emerald-600:hover,
html.mono button.bg-violet-600:hover,
html.mono button.bg-red-600:hover {
  background: #000000 !important;
  opacity: 0.85;
}

html.mono .bg-emerald-100,
html.mono .bg-sky-100,
html.mono .bg-amber-100,
html.mono .bg-violet-100,
html.mono .bg-indigo-100,
html.mono .bg-rose-100,
html.mono .bg-red-100,
html.mono .bg-teal-100,
html.mono .bg-fuchsia-100,
html.mono .bg-orange-100,
html.mono .bg-cyan-100 {
  background: #ffffff !important;
  color: #000000 !important;
  border: 1px solid #000000 !important;
}

html.mono .shadow-sm,
html.mono .shadow,
html.mono .shadow-md,
html.mono .shadow-lg {
  box-shadow: none !important;
}

html.mono table thead,
html.mono thead {
  background-color: #ffffff !important;
  border-bottom: 1px solid #000000 !important;
}
html.mono tr:hover {
  background-color: #f5f5f5;
}

html.mono .rounded-2xl.bg-white,
html.mono .rounded-xl.bg-white,
html.mono .rounded-lg.bg-white,
html.mono .rounded-3xl.bg-white {
  background: #ffffff !important;
  border-color: #000000 !important;
  box-shadow: none !important;
}

html.mono .bg-white\/95,
html.mono .bg-white\/90,
html.mono .bg-white\/80,
html.mono .bg-slate-50\/50,
html.mono .bg-slate-50\/80 {
  background-color: #ffffff !important;
}

/* Sidebar: pure white, black items — no colour, no tinted rail */
html.mono .sidebar,
html.mono aside.sidebar,
html.mono #sidebar,
html.mono #admin-sidebar,
html.mono .med-sidebar,
html.mono .leg-sidebar,
html.mono .rec-sidebar,
html.mono .biz-sidebar,
html[data-oj-theme="mono"] .sidebar,
html[data-oj-theme="mono"] #sidebar,
html[data-oj-theme="mono"] .med-sidebar,
html[data-oj-theme="mono"] .leg-sidebar,
html[data-oj-theme="mono"] .rec-sidebar {
  background: #ffffff !important;
  background-image: none !important;
  border-color: #000000 !important;
  color: #000000 !important;
}
html.mono[data-oj-rail="tinted"] .sidebar,
html.mono[data-oj-rail="tinted"] #sidebar,
html.mono[data-oj-rail="deep"] .sidebar,
html.mono[data-oj-rail="deep"] #sidebar,
html[data-oj-theme="mono"][data-oj-rail="tinted"] .sidebar,
html[data-oj-theme="mono"][data-oj-rail="deep"] .sidebar {
  background: #ffffff !important;
  background-image: none !important;
}
html.mono .sidebar .nav-link,
html.mono .sidebar .nav-group-btn,
html.mono .sidebar a,
html.mono .sidebar button,
html.mono .sidebar .text-slate-300,
html.mono .sidebar .text-slate-400,
html.mono .sidebar .text-white,
html[data-oj-theme="mono"] .sidebar .nav-link,
html[data-oj-theme="mono"] .sidebar .nav-group-btn {
  color: #000000 !important;
}
html.mono .sidebar .nav-link:hover,
html.mono .sidebar .nav-group-btn:hover,
html[data-oj-theme="mono"] .sidebar .nav-link:hover {
  background: #f0f0f0 !important;
  color: #000000 !important;
}
html.mono .sidebar .nav-link.active,
html.mono .sidebar .nav-group-btn.active,
html.mono .sidebar .nav-link[aria-current="page"],
html[data-oj-theme="mono"] .sidebar .nav-link.active {
  background: #e8e8e8 !important;
  color: #000000 !important;
  box-shadow: inset 3px 0 0 #000000 !important;
}
html.mono .sidebar i,
html.mono #admin-nav i,
html.mono #tradie-nav i,
html.mono #customer-nav i,
html.mono .med-sidebar i,
html.mono .leg-sidebar i,
html.mono .rec-sidebar i,
html[data-oj-theme="mono"] .sidebar i,
html[data-oj-theme="mono"] #admin-nav i,
html[data-oj-theme="mono"] #tradie-nav i,
html[data-oj-theme="mono"] #customer-nav i {
  color: #000000 !important;
  opacity: 1 !important;
  filter: grayscale(1) !important;
}
html.mono .sidebar .nav-link.active i,
html.mono .sidebar .nav-group-btn.active i,
html[data-oj-theme="mono"] .sidebar .nav-link.active i {
  color: #000000 !important;
  filter: grayscale(1) !important;
}
html.mono .sidebar .nav-sub,
html[data-oj-theme="mono"] .sidebar .nav-sub {
  border-left-color: #000000 !important;
}
html.mono .sidebar-footer,
html[data-oj-theme="mono"] .sidebar-footer {
  border-top-color: #000000 !important;
  background: #ffffff !important;
}
html.mono .sidebar .oj-status-chip,
html.mono .sidebar .tradie-tier-pill,
html[data-oj-theme="mono"] .sidebar .oj-status-chip {
  filter: grayscale(1) !important;
  background: #ffffff !important;
  color: #000000 !important;
  border-color: #000000 !important;
}
/* Brand row / footer text on white rail (override hard-coded text-white) */
html.mono .sidebar .text-xs,
html.mono .sidebar .text-sm,
html.mono .sidebar .text-white,
html.mono .sidebar span,
html.mono .sidebar p,
html.mono .sidebar div,
html.mono .sidebar-footer,
html.mono .sidebar-footer-user-name,
html.mono .sidebar-footer-user-sub,
html.mono .sidebar-footer-meta,
html[data-oj-theme="mono"] .sidebar .text-white {
  color: #000000 !important;
}
html.mono .sidebar .opacity-70,
html.mono .sidebar .opacity-80,
html.mono .sidebar .text-slate-300,
html.mono .sidebar .text-slate-400,
html.mono .sidebar .text-slate-500 {
  color: #000000 !important;
  opacity: 1 !important;
}

/* Section heroes: flat black bar */
html.mono[data-oj-hero="hybrid"] .oj-section-hero,
html.mono:not([data-oj-hero]) .oj-section-hero,
html.mono[data-oj-hero="match"] .oj-section-hero,
html.mono[data-oj-hero="section"] .oj-section-hero {
  background: #000000 !important;
  background-image: none !important;
  border-color: #000000 !important;
  color: #ffffff !important;
}
html.mono .oj-section-hero * {
  color: inherit;
}

html.mono .oj-glance {
  color: #000000;
  --glance-card: #ffffff;
  --glance-card-border: #000000;
  --glance-muted: #404040;
  --glance-ink: #000000;
  --glance-soft: #ffffff;
  --glance-shadow: none;
  --glance-accent: #000000;
}
html.mono .oj-health-chart-wrap {
  background: #ffffff !important;
  border-color: #000000 !important;
  color: #000000 !important;
}

/* Feature pills: B&W only */
html.mono .oj-feature-pill,
html.mono .oj-feature-pill.is-on,
html.mono .oj-feature-pill.is-cf-atk,
html.mono .oj-feature-pill.is-cf-high,
html.mono .oj-feature-pill.is-cf-med,
html.mono .oj-feature-pill.is-cf-low {
  color: #000000 !important;
  background: #ffffff !important;
  border: 1px solid #000000 !important;
  box-shadow: none !important;
  animation: none !important;
}
html.mono .oj-feature-pill.is-on .oj-feature-pill-state {
  background: #000000 !important;
  color: #ffffff !important;
}
html.mono .oj-feature-pill.is-cf-glow-escalate,
html.mono .oj-feature-pill.is-cf-glow-revert {
  animation: none !important;
  box-shadow: inset 0 0 0 2px #000000 !important;
}

html.mono [class*="from-sky-50"],
html.mono [class*="from-emerald-50"],
html.mono [class*="from-violet-50"],
html.mono [class*="from-amber-50"],
html.mono [class*="from-rose-50"],
html.mono [class*="from-indigo-50"],
html.mono [class*="from-fuchsia-50"],
html.mono [class*="from-"] {
  background: #ffffff !important;
  background-image: none !important;
  border-color: #000000 !important;
}

/* Colour vision modes still stay B&W under Mono */
html.mono[data-oj-vision="colorblind"] .oj-feature-pill,
html.mono[data-oj-vision="tritanopia"] .oj-feature-pill,
html.mono[data-oj-vision="colorblind"] .text-red-600,
html.mono[data-oj-vision="tritanopia"] .text-red-600 {
  color: #000000 !important;
  background: #ffffff !important;
  border-color: #000000 !important;
}

/* Opp filters / comms / ratings under Slate - keep ink text */
html.slate .oj-opp-filters {
  background: var(--slate-surface) !important;
  border-color: var(--slate-border) !important;
}
html.slate .oj-opp-filters-head {
  background: linear-gradient(90deg, #dce4ef, #e8eef5) !important;
}
html.slate .oj-opp-filters-title { color: #0f172a !important; }
html.slate .oj-opp-filters-summary,
html.slate #opp-filter-summary { color: #64748b !important; }
html.slate .oj-opp-chip--off {
  background: #eef2f7 !important;
  border-color: #b8c4d4 !important;
  color: #1e293b !important;
}
html.slate .oj-opp-chip--off .oj-opp-chip-count {
  background: #d5dde8 !important;
  color: #334155 !important;
}
html.slate #opp-filters-panel {
  background: #dce4ef !important;
  border-color: #b8c4d4 !important;
}

html.slate .oj-ws-gallery-drop,
html.slate #website-gallery-drop {
  background: linear-gradient(165deg, #e0e7ff 0%, #e8eef5 60%) !important;
  border-color: color-mix(in srgb, var(--oj-nav-accent, #8b5cf6) 35%, #94a3b8) !important;
}
html.slate .oj-ws-gallery-drop-text,
html.slate #website-gallery-drop p { color: #334155 !important; }
html.slate .oj-ws-gallery-drop-icon,
html.slate #website-gallery-drop i { color: #7c3aed !important; filter: none; }

html.slate .oj-rating-card {
  background: #eef2f7 !important;
  border-color: #b8c4d4 !important;
}
html.slate .oj-rating-comment { color: #1e293b !important; }
html.slate .oj-rating-score { color: #0f172a !important; }
html.slate .oj-rating-chip {
  background: #e2e8f0 !important;
  border-color: #cbd5e1 !important;
  color: #334155 !important;
}

html.slate .oj-comms-pref {
  background: #eef2f7 !important;
  border-color: #b8c4d4 !important;
}
html.slate .oj-comms-pref-label { color: #0f172a !important; }
html.slate .oj-comms-pref-help { color: #475569 !important; }
html.slate .oj-comms-toggle { color: #1e293b !important; }
html.slate .oj-comms-box--emerald {
  background: linear-gradient(145deg, #d1fae5, #ecfdf5) !important;
  border-color: #6ee7b7 !important;
  color: #065f46;
}
html.slate .oj-comms-box--violet,
html.slate #comms-location-block {
  background: linear-gradient(145deg, #ede9fe, #f5f3ff) !important;
  border-color: #c4b5fd !important;
}
html.slate #comms-location-block .font-bold,
html.slate #comms-location-block .text-slate-900 { color: #1e1b4b !important; }
html.slate #comms-location-block .text-slate-600 { color: #4c1d95 !important; }
html.slate #comms-location-block label {
  background: #eef2f7 !important;
  border-color: #c4b5fd !important;
  color: #1e293b !important;
}

/* Website section toggles on Slate */
html.slate .oj-ws-sec {
  border-color: #b8c4d4;
  background: #eef2f7;
}
html.slate .oj-ws-sec.is-on {
  border-color: #a78bfa;
  background: linear-gradient(145deg, #ede9fe, #e0e7ff);
}
html.slate .oj-ws-sec-title { color: #0f172a !important; }
html.slate .oj-ws-sec-blurb { color: #475569 !important; }
html.slate .oj-ws-sec.is-on .oj-ws-sec-title { color: #4c1d95 !important; }

/* Elite email card - soft cool slate */
html.slate .oj-elite-email-card,
html.slate #elite-email-card {
  background: linear-gradient(135deg, #fef3c7 0%, #e8eef5 50%, #ffedd5 100%) !important;
  border-color: #f59e0b !important;
}
html.slate #elite-email-address { color: #0f172a !important; text-shadow: none; }
html.slate .oj-elite-email-kicker { color: #92400e !important; }
html.slate .oj-elite-email-help { color: #334155 !important; }
html.slate .oj-elite-email-secondary {
  background: #eef2f7 !important;
  color: #92400e !important;
  border-color: #fbbf24 !important;
}

/* PayPal logo pad stays white on Slate too */
html.slate .oj-paypal-logo-wrap {
  background: #ffffff !important;
  background-color: #ffffff !important;
}
html.slate .oj-paypal-trust {
  background: linear-gradient(145deg, #e0f2fe, #e8eef5) !important;
  border-color: #7dd3fc !important;
}

/* Theme card preview for Slate */
.oj-chrome-theme-preview--slate {
  background: linear-gradient(135deg, #94a3b8 0%, #cbd5e1 45%, #e2e8f0 100%);
  box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.12);
}
.oj-chrome-theme-card[data-oj-appearance="plain"].is-selected {
  border-color: #737373;
  background: linear-gradient(145deg, rgba(115, 115, 115, 0.2), rgba(212, 212, 212, 0.15));
}
.oj-chrome-theme-preview--clinic {
  background:
    radial-gradient(90% 120% at 0% 0%, rgba(20, 184, 166, 0.45), transparent 55%),
    radial-gradient(80% 100% at 100% 100%, rgba(45, 212, 191, 0.28), transparent 50%),
    linear-gradient(135deg, #ecfdf5 0%, #e0f2f1 45%, #f0fdfa 100%);
  box-shadow: inset 0 0 0 1px rgba(15, 118, 110, 0.18);
}
.oj-chrome-theme-preview--sand {
  background:
    radial-gradient(90% 120% at 0% 0%, rgba(245, 158, 11, 0.35), transparent 55%),
    radial-gradient(80% 100% at 100% 100%, rgba(251, 191, 36, 0.22), transparent 50%),
    linear-gradient(135deg, #fef3c7 0%, #fde68a 40%, #fef9ef 100%);
  box-shadow: inset 0 0 0 1px rgba(180, 83, 9, 0.2);
}
.oj-chrome-theme-preview--ocean {
  background:
    radial-gradient(90% 120% at 0% 0%, rgba(14, 165, 233, 0.4), transparent 55%),
    radial-gradient(80% 100% at 100% 100%, rgba(56, 189, 248, 0.25), transparent 50%),
    linear-gradient(135deg, #e0f2fe 0%, #bae6fd 40%, #f0f9ff 100%);
  box-shadow: inset 0 0 0 1px rgba(2, 132, 199, 0.22);
}
.oj-chrome-theme-preview--nebula {
  background:
    radial-gradient(90% 120% at 10% 0%, rgba(139, 92, 246, 0.55), transparent 52%),
    radial-gradient(80% 100% at 100% 80%, rgba(236, 72, 153, 0.35), transparent 48%),
    radial-gradient(60% 80% at 40% 100%, rgba(56, 189, 248, 0.25), transparent 50%),
    linear-gradient(135deg, #1e1b4b 0%, #4c1d95 40%, #831843 100%);
  box-shadow: inset 0 0 0 1px rgba(196, 181, 253, 0.35);
}
.oj-chrome-theme-preview--graphite {
  background: linear-gradient(135deg, #1e293b 0%, #334155 45%, #0f172a 100%);
  box-shadow: inset 0 0 0 1px rgba(148, 163, 184, 0.25);
}
.oj-chrome-modes--themes {
  grid-template-columns: 1fr 1fr !important;
}
@media (min-width: 0) {
  .oj-chrome-modes--themes {
    grid-template-columns: 1fr 1fr !important;
  }
}
.oj-chrome-theme-card[data-oj-appearance="slate"].is-selected {
  border-color: #64748b;
  background: linear-gradient(145deg, rgba(100, 116, 139, 0.25), rgba(148, 163, 184, 0.12));
  color: #e2e8f0;
}
.oj-chrome-theme-card[data-oj-appearance="clinic"].is-selected {
  border-color: #0f766e;
  background: linear-gradient(145deg, rgba(15, 118, 110, 0.28), rgba(20, 184, 166, 0.12));
  color: #ccfbf1;
}
.oj-chrome-theme-card[data-oj-appearance="sand"].is-selected {
  border-color: #d97706;
  background: linear-gradient(145deg, rgba(217, 119, 6, 0.28), rgba(251, 191, 36, 0.12));
  color: #fef3c7;
}
.oj-chrome-theme-card[data-oj-appearance="ocean"].is-selected {
  border-color: #0284c7;
  background: linear-gradient(145deg, rgba(2, 132, 199, 0.28), rgba(14, 165, 233, 0.12));
  color: #e0f2fe;
}
.oj-chrome-theme-card[data-oj-appearance="nebula"].is-selected {
  border-color: #a78bfa;
  background: linear-gradient(145deg, rgba(109, 40, 217, 0.4), rgba(219, 39, 119, 0.2));
  color: #ede9fe;
}
.oj-chrome-theme-card[data-oj-appearance="graphite"].is-selected {
  border-color: #64748b;
  background: linear-gradient(145deg, rgba(51, 65, 85, 0.55), rgba(15, 23, 42, 0.4));
  color: #e2e8f0;
}

/* Scrollbars */
html.slate * {
  scrollbar-width: thin;
  scrollbar-color: #94a3b8 transparent;
}

/* High contrast slate */
html.slate[data-oj-contrast="high"] body {
  background: #b8c4d4 !important;
}
html.slate[data-oj-contrast="high"] .bg-white {
  background-color: #f8fafc !important;
  box-shadow: inset 0 0 0 1px #64748b !important;
}


/* ================================================================
   Night fixes: empty opp, diary next-up, shopfront, comms, profile
   (Envisage left alone where already good)
   ================================================================ */

/* --- Empty opportunities (too bright on Night) --- */
html.dark .oj-empty-opp {
  background: #111827 !important;
  border-color: #334155 !important;
  box-shadow: 0 12px 28px -16px rgba(0, 0, 0, 0.55) !important;
}
html.dark .oj-empty-opp-wash {
  background:
    radial-gradient(500px 200px at 50% 0%, rgba(234, 88, 12, 0.18), transparent 60%),
    linear-gradient(165deg, #1c1917 0%, #111827 55%, #0f172a 100%) !important;
  opacity: 1 !important;
}
html.dark .oj-empty-opp-title {
  color: #f8fafc !important;
}
html.dark .oj-empty-opp-sub {
  color: #94a3b8 !important;
}

/* --- Diary Next up (Night: dark emerald panel) --- */
html.dark .oj-diary-next-card {
  background: linear-gradient(145deg, rgba(6, 78, 59, 0.55), rgba(15, 23, 42, 0.95)) !important;
  border-color: rgba(52, 211, 153, 0.28) !important;
}
html.dark .oj-diary-next-title {
  color: #6ee7b7 !important;
}
html.dark .oj-diary-next-title i {
  color: #34d399 !important;
}
html.dark .oj-diary-next-body,
html.dark #diary-next-up {
  color: #a7f3d0 !important;
}
html.dark #diary-next-up [class*="text-emerald"],
html.dark #diary-next-up .text-emerald-800\/70 {
  color: #a7f3d0 !important;
}

/* Envisage next-up: keep soft, ensure body not washed */
html.envisage .oj-diary-next-card {
  background: linear-gradient(145deg, rgba(6, 95, 70, 0.42), rgba(36, 49, 72, 0.9)) !important;
  border-color: rgba(52, 211, 153, 0.3) !important;
}
html.envisage .oj-diary-next-title { color: #6ee7b7 !important; }
html.envisage .oj-diary-next-body,
html.envisage #diary-next-up { color: #a7f3d0 !important; }

/* --- Plan cards: equal height + aligned CTAs + current plan border --- */
.oj-plan-cards-grid {
  display: grid !important;
  align-items: stretch !important;
  gap: 1rem;
}
@media (min-width: 768px) {
  .oj-plan-cards-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }
}
.oj-plan-card {
  height: 100%;
  display: flex !important;
  flex-direction: column !important;
  box-sizing: border-box;
  /* Same border width always so columns don’t shift when “current” is selected */
  border-width: 3px !important;
}
.oj-plan-card-main {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.oj-plan-card-price {
  min-height: 4.75rem; /* room for Was + Now + angled tag */
  display: flex;
  align-items: flex-start;
}
.oj-plan-card-blurb {
  min-height: 2.75rem;
}
.oj-plan-card-features {
  flex: 1 1 auto;
  min-height: 7.5rem; /* ~5 tick lines - keeps CTAs level */
}
.oj-plan-card--current {
  border-color: #7c3aed !important;
  box-shadow:
    0 0 0 3px rgba(124, 58, 237, 0.22),
    0 12px 40px -10px rgba(91, 33, 182, 0.45),
    0 0 32px -4px rgba(167, 139, 250, 0.35) !important;
  background: linear-gradient(165deg, #faf5ff 0%, #ffffff 42%, #f5f3ff 100%) !important;
}
.oj-plan-cta-slot {
  margin-top: auto !important;
  padding-top: 1rem;
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 5.25rem; /* button + hint - same on every card */
}
.oj-plan-cta-btn {
  min-height: 3rem !important;
  height: 3rem;
  display: flex !important;
  align-items: center;
  justify-content: center;
  width: 100%;
  box-sizing: border-box;
}
.oj-plan-cta-down {
  background: linear-gradient(145deg, #ef4444, #dc2626 55%, #b91c1c) !important;
  color: #fff !important;
  border: none !important;
}
.oj-plan-cta-down:hover {
  filter: brightness(1.05);
}
.oj-plan-cta-hint {
  min-height: 1.25rem !important;
  height: 1.25rem;
  margin-top: 0.375rem !important;
  line-height: 1.25rem;
  overflow: hidden;
}
html.dark .oj-plan-card--current,
html.envisage .oj-plan-card--current {
  border-color: #a78bfa !important;
  background: linear-gradient(165deg, rgba(91, 33, 182, 0.35) 0%, #0f172a 50%, #1e1b4b 100%) !important;
  box-shadow:
    0 0 0 3px rgba(167, 139, 250, 0.28),
    0 16px 48px -12px rgba(91, 33, 182, 0.55) !important;
}

/* --- My plan: shop-style sale price tag (campaign only) --- */
.oj-sale-price {
  align-items: center;
}
.oj-sale-was {
  line-height: 1.2;
}
.oj-sale-tag {
  display: inline-flex;
  flex-shrink: 0;
  transform: rotate(-11deg);
  transform-origin: center center;
  filter: drop-shadow(0 4px 8px rgba(185, 28, 28, 0.35));
  margin-left: 0.15rem;
  margin-top: -0.15rem;
}
.oj-sale-tag-inner {
  display: inline-block;
  background: linear-gradient(145deg, #ef4444 0%, #dc2626 45%, #b91c1c 100%);
  color: #fff;
  font-size: 0.7rem;
  font-weight: 900;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1;
  padding: 0.45rem 0.55rem;
  border-radius: 0.35rem;
  border: 2px solid #fff;
  box-shadow:
    0 0 0 1px rgba(127, 29, 29, 0.35),
    inset 0 1px 0 rgba(255, 255, 255, 0.25);
  white-space: nowrap;
}
html.dark .oj-sale-now,
html.envisage .oj-sale-now {
  color: #f8fafc !important;
}
html.dark .oj-sale-was,
html.envisage .oj-sale-was {
  color: #94a3b8 !important;
}
html.dark .oj-sale-tag-inner,
html.envisage .oj-sale-tag-inner {
  border-color: #1e293b;
}

/* --- Website layout / hero template cards (selected state must be unmistakable) --- */
.oj-ws-layout-card {
  position: relative;
}
.oj-ws-layout-card--off {
  background: #f8fafc;
  border-color: #e2e8f0;
  box-shadow: none;
}
.oj-ws-layout-card--on {
  background: linear-gradient(145deg, #f5f3ff 0%, #ede9fe 55%, #faf5ff 100%) !important;
  border-color: #7c3aed !important;
  box-shadow: 0 0 0 2px rgba(124, 58, 237, 0.22), 0 8px 20px -8px rgba(91, 33, 182, 0.35) !important;
}
.oj-ws-layout-card--on .oj-ws-layout-title {
  color: #4c1d95 !important;
}
.oj-ws-selected-tick {
  z-index: 2;
}

html.dark .oj-ws-layout-card--off,
html.dark #website-layout-options button.oj-ws-layout-card--off,
html.dark #website-hero-options button.oj-ws-layout-card--off {
  background: #1e2937 !important;
  border-color: #475569 !important;
  box-shadow: none !important;
}
html.dark .oj-ws-layout-title,
html.dark #website-layout-options .text-slate-900,
html.dark #website-hero-options .text-slate-900 {
  color: #f1f5f9 !important;
}
html.dark .oj-ws-layout-blurb,
html.dark #website-layout-options .text-slate-500,
html.dark #website-hero-options .text-slate-500 {
  color: #94a3b8 !important;
}
html.dark .oj-ws-layout-card--on,
html.dark #website-layout-options button.oj-ws-layout-card--on,
html.dark #website-hero-options button.oj-ws-layout-card--on {
  background: linear-gradient(145deg, rgba(91, 33, 182, 0.55), #1e1b4b 60%, #0f172a) !important;
  border-color: #a78bfa !important;
  box-shadow: 0 0 0 2px rgba(167, 139, 250, 0.35), 0 10px 24px -8px rgba(139, 92, 246, 0.45) !important;
}
html.dark .oj-ws-layout-card--on .oj-ws-layout-title {
  color: #ede9fe !important;
}
html.dark .oj-ws-layout-card--on .oj-ws-layout-blurb {
  color: #c4b5fd !important;
}

/* Envisage layout cards (grey was hard to read) */
html.envisage .oj-ws-layout-card--off,
html.envisage #website-layout-options button.oj-ws-layout-card--off,
html.envisage #website-hero-options button.oj-ws-layout-card--off {
  background: #243148 !important;
  border-color: rgba(130, 175, 220, 0.22) !important;
  box-shadow: none !important;
}
html.envisage .oj-ws-layout-title,
html.envisage #website-layout-options .font-bold,
html.envisage #website-hero-options .font-bold {
  color: #f4f8fc !important;
}
html.envisage .oj-ws-layout-blurb,
html.envisage #website-layout-options .text-slate-500,
html.envisage #website-hero-options .text-slate-500 {
  color: #94a8c0 !important;
}
html.envisage .oj-ws-layout-card--on,
html.envisage #website-layout-options button.oj-ws-layout-card--on,
html.envisage #website-hero-options button.oj-ws-layout-card--on {
  background: linear-gradient(145deg, rgba(91, 33, 182, 0.5), #1e293b 55%, #243148) !important;
  border-color: color-mix(in srgb, var(--oj-nav-accent, #8b5cf6) 70%, #c4b5fd) !important;
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--oj-nav-accent, #8b5cf6) 40%, transparent),
    0 10px 24px -8px rgba(139, 92, 246, 0.4) !important;
}
html.envisage .oj-ws-layout-card--on .oj-ws-layout-title {
  color: #f5f3ff !important;
}

/* --- Emergency strip toggle --- */
html.dark .oj-ws-emergency {
  background: rgba(127, 29, 29, 0.35) !important;
  border-color: rgba(248, 113, 113, 0.35) !important;
}
html.dark .oj-ws-emergency-title {
  color: #fecaca !important;
}
html.dark .oj-ws-emergency-help {
  color: #fca5a5 !important;
}
html.envisage .oj-ws-emergency {
  background: rgba(127, 29, 29, 0.32) !important;
  border-color: rgba(248, 113, 113, 0.32) !important;
}
html.envisage .oj-ws-emergency-title { color: #fecaca !important; }
html.envisage .oj-ws-emergency-help { color: #fca5a5 !important; }

/* --- Comms: Job alert locations (Night) --- */
html.dark #comms-location-block,
html.dark .oj-comms-box--violet {
  background: linear-gradient(145deg, rgba(76, 29, 149, 0.35), #0f172a 70%) !important;
  border-color: rgba(139, 92, 246, 0.35) !important;
}
html.dark #comms-location-block .font-bold,
html.dark #comms-location-block .text-slate-900 {
  color: #ede9fe !important;
}
html.dark #comms-location-block .text-slate-600,
html.dark #comms-location-block .text-slate-500,
html.dark #comms-location-block #comms-loc-summary {
  color: #c4b5fd !important;
}
html.dark #comms-location-block .comms-region-btn {
  background: #1e2937 !important;
  border-color: #475569 !important;
  color: #e2e8f0 !important;
}
html.dark #comms-location-block .comms-region-btn[class*="bg-violet"],
html.dark #comms-location-block .comms-region-btn.border-violet-600 {
  background: rgba(91, 33, 182, 0.45) !important;
  border-color: #a78bfa !important;
  color: #f5f3ff !important;
}
html.dark #comms-location-block .oj-comms-town,
html.dark #comms-location-block label {
  background: #1e2937 !important;
  border-color: #334155 !important;
  color: #e2e8f0 !important;
}
html.dark #comms-location-block label[class*="bg-violet"] {
  background: rgba(91, 33, 182, 0.4) !important;
  border-color: rgba(167, 139, 250, 0.45) !important;
  color: #ede9fe !important;
}
html.dark #comms-section .oj-comms-pref {
  background: #1e2937 !important;
  border-color: #334155 !important;
}
html.dark #comms-section .oj-comms-pref-label { color: #f1f5f9 !important; }
html.dark #comms-section .oj-comms-pref-help { color: #94a3b8 !important; }
html.dark #comms-section .oj-comms-toggle { color: #e2e8f0 !important; }
html.dark #comms-section .oj-comms-box--emerald {
  background: linear-gradient(145deg, rgba(6, 78, 59, 0.45), #0f172a) !important;
  border-color: rgba(52, 211, 153, 0.3) !important;
}
html.dark #comms-section .oj-comms-box--emerald .font-bold,
html.dark #comms-section .oj-comms-box--emerald .text-slate-900 {
  color: #d1fae5 !important;
}
html.dark #comms-section .oj-comms-box--emerald .text-slate-600 {
  color: #a7f3d0 !important;
}

/* --- My Profile (profile-setup) Night + Envisage --- */
html.dark body.bg-slate-100,
html.envisage body.bg-slate-100 {
  /* already themed body; ensure */
}
html.dark #profile-form .bg-white,
html.dark .bg-white.border.rounded-3xl,
html.envisage #profile-form .bg-white {
  /* covered by global .bg-white */
}
/* Profile KPI / about cards */
html.dark .text-slate-800 {
  color: #e2e8f0 !important;
}
/* Stronger profile labels */
html.dark #main-content .text-slate-400,
html.envisage #main-content .text-slate-400 {
  color: #94a3b8 !important;
}
html.dark #main-content .text-slate-600,
html.envisage #main-content .text-slate-600 {
  color: #cbd5e1 !important;
}
html.dark #main-content .text-slate-700,
html.envisage #main-content .text-slate-700 {
  color: #e2e8f0 !important;
}
html.dark #view-bio,
html.envisage #view-bio {
  color: #e2e8f0 !important;
}
html.dark #view-company-detail,
html.dark #view-rates-detail,
html.envisage #view-company-detail,
html.envisage #view-rates-detail {
  color: #cbd5e1 !important;
}
html.dark #view-phone,
html.dark #view-trade-card,
html.envisage #view-phone,
html.envisage #view-trade-card {
  color: #f1f5f9 !important;
}
/* Profile form fields / section cards */
html.dark #profile-form .border-slate-200,
html.envisage #profile-form .border-slate-200 {
  border-color: rgba(148, 163, 184, 0.25) !important;
}
html.dark #profile-form label,
html.envisage #profile-form label {
  color: #cbd5e1;
}
html.dark #profile-form .text-xs.font-bold,
html.envisage #profile-form .text-xs.font-bold {
  color: #94a3b8 !important;
}
/* Indigo/emerald bordered profile cards */
html.dark .border-indigo-100,
html.envisage .border-indigo-100 {
  border-color: rgba(129, 140, 248, 0.3) !important;
}
html.dark .border-emerald-100,
html.envisage .border-emerald-100 {
  border-color: rgba(52, 211, 153, 0.28) !important;
}
html.dark .bg-slate-100.text-slate-600,
html.envisage .bg-slate-100 {
  /* icon chips */
}
html.dark span.bg-slate-100 {
  background-color: #334155 !important;
  color: #e2e8f0 !important;
}
html.envisage span.bg-slate-100 {
  background-color: #2c3b55 !important;
  color: #e2ebf6 !important;
}

/* Website builder white body panel under Night */
html.dark #website-builder-fields,
html.dark #my-website-section .bg-white.p-5,
html.dark #my-website-section .relative.bg-white {
  color: #e2e8f0;
}
html.dark #my-website-section .text-slate-500,
html.dark #my-website-section .text-slate-400 {
  color: #94a3b8 !important;
}
html.dark #my-website-section .text-slate-900,
html.dark #my-website-section .font-bold.text-slate-900 {
  color: #f8fafc !important;
}

/* sticky save bar website */
html.dark .sticky.bottom-3.bg-white\/90 {
  background: rgba(15, 23, 42, 0.94) !important;
  border-color: #334155 !important;
}
html.envisage .sticky.bottom-3.bg-white\/90 {
  background: rgba(26, 39, 64, 0.94) !important;
  border-color: rgba(130, 175, 220, 0.2) !important;
}

/* Diary next-up inner content (Night + Envisage) */
html.dark #diary-next-up .text-emerald-950,
html.dark #diary-next-up .font-bold,
html.envisage #diary-next-up .text-emerald-950,
html.envisage #diary-next-up .font-bold {
  color: #ecfdf5 !important;
}
html.dark #diary-next-up [class*="text-emerald"],
html.envisage #diary-next-up [class*="text-emerald"] {
  color: #a7f3d0 !important;
}
html.dark #diary-next-up .bg-emerald-200\/80,
html.dark #diary-next-up [class*="bg-emerald-200"] {
  background: rgba(6, 95, 70, 0.55) !important;
  color: #d1fae5 !important;
}
html.dark #diary-next-up .bg-amber-200\/80,
html.dark #diary-next-up [class*="bg-amber-200"] {
  background: rgba(120, 53, 15, 0.55) !important;
  color: #fde68a !important;
}
html.envisage #diary-next-up [class*="bg-emerald-200"] {
  background: rgba(6, 95, 70, 0.45) !important;
  color: #d1fae5 !important;
}
html.envisage #diary-next-up [class*="bg-amber-200"] {
  background: rgba(120, 53, 15, 0.45) !important;
  color: #fde68a !important;
}
html.dark #diary-next-up .text-emerald-900,
html.dark #diary-next-up .text-amber-900 {
  color: #ecfdf5 !important;
}

/* ================================================================
   Admin + Customer dashboards - Night / Envisage readability
   ================================================================ */

/* Shared empty states */
html.dark .oj-empty-state,
html.envisage .oj-empty-state {
  background: #111827 !important;
  border-color: #334155 !important;
  color: #94a3b8 !important;
}
html.envisage .oj-empty-state {
  background: #1c2740 !important;
  border-color: rgba(130, 175, 220, 0.2) !important;
}
html.dark .oj-empty-title,
html.envisage .oj-empty-title {
  color: #f8fafc !important;
}
html.dark .oj-empty-sub,
html.envisage .oj-empty-sub {
  color: #94a3b8 !important;
}
html.dark .oj-empty-icon,
html.envisage .oj-empty-icon {
  background: rgba(120, 53, 15, 0.45) !important;
}

/* Customer home: attention, recent lists, welcome cards */
html.dark #dashboard-attention [class*="bg-amber"],
html.dark #dashboard-attention [class*="bg-emerald"],
html.dark #dashboard-attention [class*="bg-red"],
html.envisage #dashboard-attention [class*="bg-amber"],
html.envisage #dashboard-attention [class*="bg-emerald"],
html.envisage #dashboard-attention [class*="bg-red"] {
  color: #f8fafc;
}
html.dark #dashboard-attention .font-semibold,
html.envisage #dashboard-attention .font-semibold {
  color: #f8fafc !important;
}
html.dark #dashboard-attention .text-xs,
html.envisage #dashboard-attention .text-xs {
  color: #cbd5e1 !important;
}
html.dark #dashboard-attention button,
html.envisage #dashboard-attention button {
  background: rgba(15, 23, 42, 0.85) !important;
  color: #e0f2fe !important;
  border-color: rgba(148, 163, 184, 0.25) !important;
}

/* Customer assigned tradie / soft gradient cards */
html.dark .from-sky-50,
html.envisage .from-sky-50 {
  /* already partial; force common card pattern */
}
html.dark [class*="from-sky-50"][class*="to-emerald"],
html.envisage [class*="from-sky-50"][class*="to-emerald"] {
  background: linear-gradient(90deg, rgba(12, 74, 110, 0.45), rgba(6, 78, 59, 0.4)) !important;
  border-color: rgba(56, 189, 248, 0.25) !important;
}
html.dark [class*="from-sky-50"] .text-sky-600,
html.envisage [class*="from-sky-50"] .text-sky-600 {
  color: #7dd3fc !important;
}

/* Customer/admin comms rows */
html.dark #comms-section .oj-comms-pref,
html.dark #admin-comms-panel .oj-comms-pref,
html.envisage #comms-section .oj-comms-pref,
html.envisage #admin-comms-panel .oj-comms-pref {
  background: #1e2937 !important;
  border-color: #334155 !important;
}
html.envisage #comms-section .oj-comms-pref,
html.envisage #admin-comms-panel .oj-comms-pref {
  background: #1c2740 !important;
  border-color: rgba(130, 175, 220, 0.18) !important;
}
html.dark #comms-section .oj-comms-pref-label,
html.dark #admin-comms-panel .oj-comms-pref-label,
html.envisage #comms-section .oj-comms-pref-label,
html.envisage #admin-comms-panel .oj-comms-pref-label {
  color: #f1f5f9 !important;
}
html.dark #comms-section .oj-comms-pref-help,
html.dark #admin-comms-panel .oj-comms-pref-help,
html.envisage #comms-section .oj-comms-pref-help,
html.envisage #admin-comms-panel .oj-comms-pref-help {
  color: #94a3b8 !important;
}
html.dark #comms-section .oj-comms-toggle,
html.dark #admin-comms-panel .oj-comms-toggle,
html.envisage #comms-section .oj-comms-toggle,
html.envisage #admin-comms-panel .oj-comms-toggle {
  color: #e2e8f0 !important;
}
html.dark #comms-panel,
html.dark #admin-comms-panel,
html.envisage #comms-panel,
html.envisage #admin-comms-panel {
  /* panel shell */
}

/* Customer profile section forms */
html.dark #profile-section .text-slate-600,
html.envisage #profile-section .text-slate-600 {
  color: #cbd5e1 !important;
}
html.dark #profile-section .text-slate-500,
html.envisage #profile-section .text-slate-500 {
  color: #94a3b8 !important;
}
html.dark #profile-section label,
html.envisage #profile-section label {
  color: #cbd5e1;
}
html.dark #profile-section .text-xs.font-bold,
html.envisage #profile-section .text-xs.font-bold {
  color: #94a3b8 !important;
}

/* Job filter / estimate tabs inactive */
html.dark .job-filter-tab,
html.dark .estimate-filter-tab,
html.envisage .job-filter-tab,
html.envisage .estimate-filter-tab {
  color: #cbd5e1;
}
html.dark .job-filter-tab.bg-white,
html.dark .estimate-filter-tab.bg-white,
html.envisage .job-filter-tab.bg-white,
html.envisage .estimate-filter-tab.bg-white {
  background: #1e2937 !important;
  border-color: #475569 !important;
  color: #e2e8f0 !important;
}
html.envisage .job-filter-tab.bg-white,
html.envisage .estimate-filter-tab.bg-white {
  background: #243148 !important;
  border-color: rgba(130, 175, 220, 0.22) !important;
}

/*
 * Opacity pastel panels (bg-*-50/50…/80) - Tailwind generates distinct classes,
 * so solid .bg-emerald-50 remaps miss them. Common on admin Health ops/cron tiles.
 */
html.dark [class*="bg-amber-50\/"],
html.envisage [class*="bg-amber-50\/"] {
  background: rgba(120, 53, 15, 0.42) !important;
  border-color: rgba(245, 158, 11, 0.35) !important;
}
html.dark [class*="bg-emerald-50\/"],
html.envisage [class*="bg-emerald-50\/"] {
  background: rgba(6, 78, 59, 0.42) !important;
  border-color: rgba(52, 211, 153, 0.32) !important;
}
html.dark [class*="bg-red-50\/"],
html.dark [class*="bg-rose-50\/"],
html.envisage [class*="bg-red-50\/"],
html.envisage [class*="bg-rose-50\/"] {
  background: rgba(127, 29, 29, 0.42) !important;
  border-color: rgba(248, 113, 113, 0.35) !important;
}
html.dark [class*="bg-sky-50\/"],
html.dark [class*="bg-blue-50\/"],
html.envisage [class*="bg-sky-50\/"],
html.envisage [class*="bg-blue-50\/"] {
  background: rgba(12, 74, 110, 0.42) !important;
  border-color: rgba(56, 189, 248, 0.32) !important;
}
html.dark [class*="bg-indigo-50\/"],
html.envisage [class*="bg-indigo-50\/"] {
  background: rgba(49, 46, 129, 0.45) !important;
  border-color: rgba(129, 140, 248, 0.35) !important;
}
html.dark [class*="bg-violet-50\/"],
html.dark [class*="bg-purple-50\/"],
html.envisage [class*="bg-violet-50\/"],
html.envisage [class*="bg-purple-50\/"] {
  background: rgba(76, 29, 149, 0.4) !important;
  border-color: rgba(167, 139, 250, 0.32) !important;
}
html.dark [class*="bg-orange-50\/"],
html.envisage [class*="bg-orange-50\/"] {
  background: rgba(154, 52, 18, 0.42) !important;
  border-color: rgba(251, 146, 60, 0.35) !important;
}
html.dark [class*="bg-cyan-50\/"],
html.envisage [class*="bg-cyan-50\/"] {
  background: rgba(14, 116, 144, 0.42) !important;
  border-color: rgba(34, 211, 238, 0.32) !important;
}
/* Teal / pink pastels (Medical · Recruitment max cards & similar) */
html.dark [class*="bg-teal-50\/"],
html.envisage [class*="bg-teal-50\/"] {
  background: rgba(19, 78, 74, 0.5) !important;
  border-color: rgba(45, 212, 191, 0.4) !important;
}
html.dark [class*="bg-pink-50\/"],
html.envisage [class*="bg-pink-50\/"] {
  background: rgba(131, 24, 67, 0.48) !important;
  border-color: rgba(244, 114, 182, 0.4) !important;
}
html.dark .bg-teal-50,
html.envisage .bg-teal-50 {
  background: linear-gradient(145deg, rgba(19, 78, 74, 0.5), rgba(45, 212, 191, 0.12)) !important;
}
html.dark .bg-pink-50,
html.envisage .bg-pink-50 {
  background: linear-gradient(145deg, rgba(131, 24, 67, 0.48), rgba(244, 114, 182, 0.12)) !important;
}
html.dark .border-teal-200,
html.envisage .border-teal-200 {
  border-color: rgba(45, 212, 191, 0.45) !important;
}
html.dark .border-pink-200,
html.envisage .border-pink-200 {
  border-color: rgba(244, 114, 182, 0.45) !important;
}
html.dark .text-teal-700,
html.dark .text-teal-800,
html.dark .text-teal-900,
html.envisage .text-teal-700,
html.envisage .text-teal-800,
html.envisage .text-teal-900 {
  color: #5eead4 !important;
}
html.dark .text-pink-700,
html.dark .text-pink-800,
html.dark .text-pink-900,
html.envisage .text-pink-700,
html.envisage .text-pink-800,
html.envisage .text-pink-900 {
  color: #f9a8d4 !important;
}
html.dark [class*="bg-slate-50\/"],
html.envisage [class*="bg-slate-50\/"] {
  background: rgba(15, 23, 42, 0.65) !important;
}
html.envisage [class*="bg-slate-50\/"] {
  background: rgba(28, 39, 64, 0.75) !important;
}

/* Solid indigo (used on health push cards; was only sky/blue before) */
html.dark .bg-indigo-50 {
  background-color: rgba(49, 46, 129, 0.4) !important;
}
html.envisage .bg-indigo-50 {
  background: linear-gradient(145deg, rgba(49, 46, 129, 0.45), rgba(99, 102, 241, 0.12)) !important;
}
html.dark .border-indigo-200,
html.envisage .border-indigo-200 {
  border-color: rgba(129, 140, 248, 0.4) !important;
}
html.dark .bg-indigo-100,
html.envisage .bg-indigo-100 {
  background: rgba(49, 46, 129, 0.55) !important;
  color: #c7d2fe !important;
}
html.dark .text-indigo-800,
html.dark .text-indigo-700,
html.dark .text-indigo-900,
html.envisage .text-indigo-800,
html.envisage .text-indigo-700,
html.envisage .text-indigo-900 {
  color: #a5b4fc !important;
}
html.dark .text-violet-800,
html.dark .text-violet-700,
html.envisage .text-violet-800,
html.envisage .text-violet-700 {
  color: #c4b5fd !important;
}

/* Opacity text utilities (e.g. text-emerald-700/80 on billing) */
html.dark [class*="text-emerald-7"],
html.dark [class*="text-emerald-8"],
html.dark [class*="text-emerald-9"],
html.envisage [class*="text-emerald-7"],
html.envisage [class*="text-emerald-8"],
html.envisage [class*="text-emerald-9"] {
  color: #6ee7b7 !important;
}
html.dark [class*="text-amber-7"],
html.dark [class*="text-amber-8"],
html.dark [class*="text-amber-9"],
html.envisage [class*="text-amber-7"],
html.envisage [class*="text-amber-8"],
html.envisage [class*="text-amber-9"] {
  color: #fcd34d !important;
}
html.dark [class*="text-red-7"],
html.dark [class*="text-red-8"],
html.dark [class*="text-red-9"],
html.envisage [class*="text-red-7"],
html.envisage [class*="text-red-8"],
html.envisage [class*="text-red-9"] {
  color: #fca5a5 !important;
}

/* Admin accordion bodies / table hovers */
html.dark [id$="-body"].bg-slate-50\/40,
html.dark .bg-slate-50\/40 {
  background: #0f172a !important;
}
html.dark tr.hover\:bg-slate-50\/80:hover,
html.dark .hover\:bg-slate-50\/80:hover {
  background-color: rgba(51, 65, 85, 0.45) !important;
}

/* Admin empty list messages */
html.dark .p-12.text-center .font-semibold,
html.dark .p-12.text-center.text-slate-500,
html.envisage .p-12.text-center .font-semibold {
  color: #e2e8f0 !important;
}
html.dark .p-12.text-center.text-slate-500,
html.dark td.text-center.text-slate-500 {
  color: #94a3b8 !important;
}

/* Admin billing gradient cards */
html.dark [class*="from-emerald-50"][class*="via-white"],
html.dark [class*="from-sky-50"][class*="via-white"],
html.dark [class*="from-slate-50"][class*="to-white"],
html.envisage [class*="from-emerald-50"][class*="via-white"],
html.envisage [class*="from-sky-50"][class*="via-white"] {
  background: linear-gradient(145deg, #1e2937, #0f172a) !important;
  border-color: #334155 !important;
}
html.envisage [class*="from-emerald-50"][class*="via-white"],
html.envisage [class*="from-sky-50"][class*="via-white"] {
  background: linear-gradient(145deg, #243148, #1c2740) !important;
  border-color: rgba(130, 175, 220, 0.18) !important;
}

/* Customer home KPI icon tiles */
html.dark .bg-amber-50.text-amber-600,
html.dark .bg-emerald-50.text-emerald-600,
html.dark .bg-violet-50.text-violet-600 {
  color: inherit;
}
html.dark .w-11.h-11.bg-amber-50 { color: #fbbf24 !important; }
html.dark .w-11.h-11.bg-emerald-50 { color: #34d399 !important; }
html.dark .w-11.h-11.bg-violet-50 { color: #a78bfa !important; }

/* Customer dashboard list rows */
html.dark #dashboard-recent-jobs .text-slate-900,
html.dark #dashboard-recent-quotes .text-slate-900,
html.envisage #dashboard-recent-jobs .text-slate-900,
html.envisage #dashboard-recent-quotes .text-slate-900 {
  color: #f1f5f9 !important;
}
html.dark #dashboard-recent-jobs button:hover,
html.dark #dashboard-recent-quotes button:hover,
html.envisage #dashboard-recent-jobs button:hover,
html.envisage #dashboard-recent-quotes button:hover {
  background: rgba(51, 65, 85, 0.35) !important;
}

/* Post-a-job response mode cards customer */
html.dark .response-mode-card,
html.envisage .response-mode-card {
  background: #1e2937 !important;
  border-color: #334155 !important;
}
html.envisage .response-mode-card {
  background: #243148 !important;
  border-color: rgba(130, 175, 220, 0.2) !important;
}
html.dark .response-mode-card .text-slate-900,
html.envisage .response-mode-card .text-slate-900 {
  color: #f8fafc !important;
}
html.dark .response-mode-card .text-slate-600,
html.envisage .response-mode-card .text-slate-600 {
  color: #94a3b8 !important;
}
html.dark .response-mode-card.border-blue-500,
html.envisage .response-mode-card.border-blue-500 {
  border-color: color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 55%, #38bdf8) !important;
  background: linear-gradient(145deg, rgba(12, 74, 110, 0.4), #1e2937) !important;
}

/* Job cards customer */
html.dark .job-card .text-slate-900,
html.envisage .job-card .text-slate-900 {
  color: #f8fafc !important;
}
html.dark .job-card .text-slate-700,
html.envisage .job-card .text-slate-700 {
  color: #e2e8f0 !important;
}

/* Admin code chips in amber warnings */
html.dark code.bg-amber-100,
html.dark code.bg-white,
html.envisage code.bg-amber-100,
html.envisage code.bg-white {
  background: #0f172a !important;
  color: #e0f2fe !important;
  border-color: #334155 !important;
}

/* Devices host on customer/admin */
html.dark #comms-devices-host .bg-white,
html.dark #comms-devices-host [class*="bg-slate-50"],
html.envisage #comms-devices-host .bg-white {
  background: #1e2937 !important;
  border-color: #334155 !important;
}
html.dark #comms-devices-host .text-slate-900,
html.dark #comms-devices-host .font-semibold,
html.envisage #comms-devices-host .text-slate-900 {
  color: #f1f5f9 !important;
}


/* ================================================================
   Admin Billing / Reports messaging / Health / Settings
   Night + Envisage contrast (sky-grey metrics were unreadable)
   ================================================================ */

/* --- Billing metric cards (If things go well, Who's on what, etc.) --- */
html.dark .oj-admin-metric,
html.envisage .oj-admin-metric {
  border-width: 1px;
  box-shadow: 0 10px 22px -16px rgba(0, 0, 0, 0.45);
}
html.dark .oj-admin-metric-title,
html.envisage .oj-admin-metric-title {
  color: #cbd5e1 !important;
}
html.dark .oj-admin-metric-value,
html.envisage .oj-admin-metric-value {
  color: #f8fafc !important;
}
html.dark .oj-admin-metric-hint,
html.envisage .oj-admin-metric-hint {
  color: #94a3b8 !important;
}

/* Tone fills - solid dusk (not washed pastel) */
html.dark .oj-admin-metric--sky,
html.envisage .oj-admin-metric--sky {
  background: linear-gradient(145deg, rgba(12, 74, 110, 0.55), rgba(15, 23, 42, 0.95)) !important;
  border-color: rgba(56, 189, 248, 0.4) !important;
}
html.dark .oj-admin-metric--emerald,
html.envisage .oj-admin-metric--emerald {
  background: linear-gradient(145deg, rgba(6, 78, 59, 0.55), rgba(15, 23, 42, 0.95)) !important;
  border-color: rgba(52, 211, 153, 0.38) !important;
}
html.dark .oj-admin-metric--amber,
html.envisage .oj-admin-metric--amber {
  background: linear-gradient(145deg, rgba(120, 53, 15, 0.5), rgba(15, 23, 42, 0.95)) !important;
  border-color: rgba(251, 191, 36, 0.38) !important;
}
html.dark .oj-admin-metric--red,
html.envisage .oj-admin-metric--red {
  background: linear-gradient(145deg, rgba(127, 29, 29, 0.5), rgba(15, 23, 42, 0.95)) !important;
  border-color: rgba(248, 113, 113, 0.38) !important;
}
html.dark .oj-admin-metric--violet,
html.envisage .oj-admin-metric--violet {
  background: linear-gradient(145deg, rgba(76, 29, 149, 0.48), rgba(15, 23, 42, 0.95)) !important;
  border-color: rgba(167, 139, 250, 0.35) !important;
}
html.dark .oj-admin-metric--slate,
html.envisage .oj-admin-metric--slate {
  background: linear-gradient(145deg, #1e2937, #0f172a) !important;
  border-color: #475569 !important;
}
html.envisage .oj-admin-metric--slate {
  background: linear-gradient(145deg, #2c3b55, #1c2740) !important;
  border-color: rgba(130, 175, 220, 0.22) !important;
}
html.dark .oj-admin-metric--sky .oj-admin-metric-title,
html.envisage .oj-admin-metric--sky .oj-admin-metric-title { color: #7dd3fc !important; }
html.dark .oj-admin-metric--emerald .oj-admin-metric-title,
html.envisage .oj-admin-metric--emerald .oj-admin-metric-title { color: #6ee7b7 !important; }
html.dark .oj-admin-metric--amber .oj-admin-metric-title,
html.envisage .oj-admin-metric--amber .oj-admin-metric-title { color: #fcd34d !important; }
html.dark .oj-admin-metric--sky .oj-admin-metric-hint,
html.envisage .oj-admin-metric--sky .oj-admin-metric-hint { color: #bae6fd !important; }

/* Billing chart cards - ink plate so canvas plots aren't pale white blobs */
html.dark .oj-billing-chart-card,
html.envisage .oj-billing-chart-card,
html.graphite .oj-billing-chart-card {
  background: linear-gradient(165deg, #1e2937 0%, #0f172a 100%) !important;
  border-color: #334155 !important;
}
html.envisage .oj-billing-chart-card {
  background: linear-gradient(165deg, #2a3a54 0%, #1c2740 100%) !important;
  border-color: rgba(130, 175, 220, 0.22) !important;
}
html.dark .oj-billing-chart-wrap,
html.envisage .oj-billing-chart-wrap,
html.graphite .oj-billing-chart-wrap {
  background: transparent !important;
  border-radius: 1rem;
}
html.dark .oj-billing-chart-wrap canvas,
html.envisage .oj-billing-chart-wrap canvas,
html.graphite .oj-billing-chart-wrap canvas {
  filter: none !important;
}

/* Billing hero band + legend + lists */
html.dark #billing-hub-root [class*="from-emerald-50"],
html.envisage #billing-hub-root [class*="from-emerald-50"] {
  background: linear-gradient(145deg, rgba(6, 78, 59, 0.35), #0f172a 55%, rgba(12, 74, 110, 0.25)) !important;
  border-color: rgba(52, 211, 153, 0.28) !important;
}
html.dark #billing-hub-root .bg-white\/80,
html.envisage #billing-hub-root .bg-white\/80 {
  background: rgba(15, 23, 42, 0.85) !important;
  border-color: #334155 !important;
  color: #cbd5e1 !important;
}
html.dark #billing-hub-root .bg-slate-50,
html.envisage #billing-hub-root .bg-slate-50 {
  background: #1e2937 !important;
  border-color: #334155 !important;
}
html.dark #billing-hub-root table .font-medium,
html.dark #billing-hub-root h3,
html.dark #billing-hub-root h4,
html.envisage #billing-hub-root table .font-medium,
html.envisage #billing-hub-root h3 {
  color: #f1f5f9 !important;
}
html.dark #billing-hub-root .text-slate-400,
html.dark #billing-hub-root .font-mono,
html.envisage #billing-hub-root .text-slate-400 {
  color: #94a3b8 !important;
}

/* --- Reports: messaging deep dive + pulse messaging strip --- */
html.dark .oj-msg-deepdive,
html.envisage .oj-msg-deepdive {
  background:
    radial-gradient(500px 180px at 0% 0%, rgba(139, 92, 246, 0.22), transparent 55%),
    linear-gradient(145deg, #1e1b4b 0%, #0f172a 55%, #1c1917 100%) !important;
  border-color: rgba(167, 139, 250, 0.35) !important;
}
html.dark .oj-msg-deepdive-title,
html.envisage .oj-msg-deepdive-title { color: #f5f3ff !important; }
html.dark .oj-msg-deepdive-sub,
html.envisage .oj-msg-deepdive-sub { color: #c4b5fd !important; }

html.dark .oj-msg-period-strip,
html.envisage .oj-msg-period-strip {
  background: linear-gradient(145deg, rgba(76, 29, 149, 0.4), #0f172a 70%) !important;
  border-color: rgba(167, 139, 250, 0.35) !important;
}
html.dark .oj-msg-period-label,
html.envisage .oj-msg-period-label {
  color: #ddd6fe !important;
}
html.dark .oj-msg-period-grid .oj-pulse-card,
html.dark .oj-msg-period-grid .rounded-2xl.border,
html.envisage .oj-msg-period-grid .oj-pulse-card,
html.envisage .oj-msg-period-grid .rounded-2xl.border {
  background: #1e2937 !important;
  border-color: #475569 !important;
}

/* Pulse / report KPI cards */
html.dark .oj-pulse-card,
html.envisage .oj-pulse-card {
  background: #1e2937 !important;
  border-color: #334155 !important;
}
html.envisage .oj-pulse-card {
  background: #243148 !important;
  border-color: rgba(130, 175, 220, 0.2) !important;
}
html.dark .oj-pulse-card-title,
html.envisage .oj-pulse-card-title { color: #94a3b8 !important; }
html.dark .oj-pulse-card-value,
html.envisage .oj-pulse-card-value { color: #f8fafc !important; }
html.dark .oj-pulse-card-sub,
html.envisage .oj-pulse-card-sub { color: #cbd5e1 !important; }

html.dark .oj-report-stat,
html.envisage .oj-report-stat {
  background: #1e2937 !important;
  border-color: #334155 !important;
}
html.envisage .oj-report-stat {
  background: #243148 !important;
  border-color: rgba(130, 175, 220, 0.18) !important;
}
html.dark .oj-report-stat-value,
html.envisage .oj-report-stat-value { color: #f8fafc !important; }
html.dark .oj-report-stat-label,
html.envisage .oj-report-stat-label { color: #94a3b8 !important; }
html.dark .oj-report-stat-icon,
html.envisage .oj-report-stat-icon {
  /* keep tinted icons readable */
  filter: none;
  opacity: 1;
}

/* Health page sections outside At a glance (ops board, cron, windows) */
html.dark #health-ops .text-slate-500,
html.dark #health-ops .text-slate-600,
html.dark #health-cron-jobs .text-slate-500,
html.dark #health-cron-jobs .text-slate-600,
html.envisage #health-ops .text-slate-500,
html.envisage #health-ops .text-slate-600,
html.envisage #health-cron-jobs .text-slate-500,
html.envisage #health-cron-jobs .text-slate-600 {
  color: #cbd5e1 !important;
}
html.dark #health-windows .border-slate-50,
html.envisage #health-windows .border-slate-50 {
  border-color: rgba(148, 163, 184, 0.15) !important;
}
html.dark #health-mod-metrics .text-slate-900,
html.envisage #health-mod-metrics .text-slate-900 {
  color: #f8fafc !important;
}
html.dark #health-error,
html.envisage #health-error {
  background: rgba(127, 29, 29, 0.4) !important;
  border-color: rgba(248, 113, 113, 0.4) !important;
  color: #fecaca !important;
}

/* Admin tables: thead + cells stay readable (many list views) */
html.dark #admin-main-shell thead,
html.envisage #admin-main-shell thead {
  background-color: #0f172a !important;
}
html.envisage #admin-main-shell thead {
  background-color: #1c2740 !important;
}
html.dark #admin-main-shell th,
html.envisage #admin-main-shell th {
  color: #cbd5e1 !important;
  border-color: #334155 !important;
}
html.dark #admin-main-shell td,
html.envisage #admin-main-shell td {
  border-color: rgba(51, 65, 85, 0.85) !important;
}
html.dark #admin-main-shell tr:hover,
html.envisage #admin-main-shell tr:hover {
  background-color: rgba(51, 65, 85, 0.35) !important;
}

/* Universal / report modals on admin */
html.dark #universal-modal .bg-white,
html.dark #universal-modal .modal,
html.envisage #universal-modal .bg-white,
html.envisage #universal-modal .modal {
  background-color: #1e2937 !important;
  color: #e2e8f0 !important;
}
html.envisage #universal-modal .bg-white,
html.envisage #universal-modal .modal {
  background-color: #243148 !important;
}

/* Activity / tall modals: keep footer reachable on phones */
html.oj-modal-open,
html.oj-modal-open body,
body.oj-modal-open {
  overflow: hidden !important;
  overscroll-behavior: none;
}
#universal-modal-panel {
  max-height: min(88dvh, 88vh) !important;
  max-height: min(88svh, 88vh) !important;
}
#modal-content {
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
.oj-activity-modal-body {
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
.oj-activity-modal-footer {
  box-shadow: 0 -8px 20px -12px rgba(15, 23, 42, 0.25);
}
html.dark .oj-activity-modal-footer,
html.envisage .oj-activity-modal-footer {
  background-color: #1e2937 !important;
  border-color: #334155 !important;
  box-shadow: 0 -8px 20px -12px rgba(0, 0, 0, 0.45);
}
html.envisage .oj-activity-modal-footer {
  background-color: #243148 !important;
}
html.dark .oj-activity-modal .border-slate-100,
html.envisage .oj-activity-modal .border-slate-100 {
  border-color: #334155 !important;
}
html.dark .oj-activity-modal .bg-slate-50,
html.envisage .oj-activity-modal .bg-slate-50 {
  background-color: #0f172a !important;
  border-color: #334155 !important;
}

/* This Server cards — long hostnames / hints wrap instead of clipping */
#health-server-metrics {
  align-items: stretch;
}
#health-server-metrics .oj-health-server-card {
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}
#health-server-metrics .oj-health-server-card > div {
  overflow-wrap: anywhere;
  word-break: break-word;
  white-space: normal;
}

/* --- Health metrics: stronger blue / violet / cyan tiles --- */
html.dark .oj-health-metric,
html.envisage .oj-health-metric {
  box-shadow: 0 10px 22px -16px rgba(0, 0, 0, 0.5);
}
html.dark .oj-health-metric-kicker,
html.envisage .oj-health-metric-kicker {
  color: #94a3b8 !important;
}
html.dark .oj-health-metric-value,
html.envisage .oj-health-metric-value {
  color: #f8fafc !important;
}
html.dark .oj-health-metric-sub,
html.envisage .oj-health-metric-sub {
  color: #cbd5e1 !important;
}
html.dark .oj-health-metric-status,
html.envisage .oj-health-metric-status {
  color: #6ee7b7 !important;
}

/* Sky / indigo / cyan health tiles - clearer blue on dusk */
html.dark .oj-health-metric.border-sky-200,
html.dark [class*="border-sky-200"][class*="bg-sky"],
html.envisage .oj-health-metric.border-sky-200,
html.envisage [class*="bg-sky-50"] {
  background: linear-gradient(145deg, rgba(7, 89, 133, 0.55), #0f172a) !important;
  border-color: rgba(56, 189, 248, 0.45) !important;
}
html.dark .oj-health-metric.border-indigo-200,
html.dark [class*="border-indigo-200"][class*="bg-indigo"],
html.envisage .oj-health-metric.border-indigo-200 {
  background: linear-gradient(145deg, rgba(49, 46, 129, 0.55), #0f172a) !important;
  border-color: rgba(129, 140, 248, 0.45) !important;
}
html.dark .oj-health-metric.border-cyan-200,
html.dark [class*="border-cyan-200"][class*="bg-cyan"],
html.envisage .oj-health-metric.border-cyan-200 {
  background: linear-gradient(145deg, rgba(14, 116, 144, 0.5), #0f172a) !important;
  border-color: rgba(34, 211, 238, 0.4) !important;
}
html.dark .oj-health-metric.border-purple-200,
html.dark [class*="border-purple-200"][class*="bg-purple"],
html.envisage .oj-health-metric.border-purple-200 {
  background: linear-gradient(145deg, rgba(88, 28, 135, 0.5), #0f172a) !important;
  border-color: rgba(192, 132, 252, 0.4) !important;
}
html.dark .oj-health-metric.border-emerald-200,
html.envisage .oj-health-metric.border-emerald-200 {
  background: linear-gradient(145deg, rgba(6, 78, 59, 0.5), #0f172a) !important;
  border-color: rgba(52, 211, 153, 0.4) !important;
}
html.dark .oj-health-metric.border-violet-200,
html.envisage .oj-health-metric.border-violet-200 {
  background: linear-gradient(145deg, rgba(76, 29, 149, 0.5), #0f172a) !important;
  border-color: rgba(167, 139, 250, 0.4) !important;
}
html.dark .oj-health-metric.border-amber-200,
html.envisage .oj-health-metric.border-amber-200 {
  background: linear-gradient(145deg, rgba(120, 53, 15, 0.48), #0f172a) !important;
  border-color: rgba(251, 191, 36, 0.4) !important;
}
html.dark .oj-health-metric.border-orange-200,
html.envisage .oj-health-metric.border-orange-200 {
  background: linear-gradient(145deg, rgba(154, 52, 18, 0.48), #0f172a) !important;
  border-color: rgba(251, 146, 60, 0.4) !important;
}
/* --- System Health → At a glance: full readable contrast (Night + Envisage) --- */
html.dark #health-glance,
html.envisage #health-glance {
  background: #1e2937 !important;
  border-color: color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 28%, #334155) !important;
  color: #e2e8f0;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 12%, transparent);
}
html.envisage #health-glance {
  background: #243148 !important;
  border-color: color-mix(in srgb, var(--oj-nav-accent, #22d3ee) 30%, rgba(130, 175, 220, 0.22)) !important;
}

/* Section chrome labels */
html.dark #health-glance > .flex .text-slate-400,
html.envisage #health-glance > .flex .text-slate-400,
html.dark #health-updated,
html.envisage #health-updated,
html.dark #health-glance-tip,
html.envisage #health-glance-tip {
  color: #94a3b8 !important;
}
html.dark #health-glance-sub,
html.envisage #health-glance-sub {
  color: #cbd5e1 !important;
}
html.dark #health-auto-label,
html.envisage #health-auto-label {
  color: #6ee7b7 !important;
}

/* Headline status (overrides Tailwind emerald-700 etc. which fail on dark) */
html.dark #health-glance-headline,
html.envisage #health-glance-headline {
  color: #f1f5f9 !important;
}
html.dark #health-glance-headline.text-emerald-700,
html.envisage #health-glance-headline.text-emerald-700 {
  color: #6ee7b7 !important;
}
html.dark #health-glance-headline.text-amber-700,
html.envisage #health-glance-headline.text-amber-700 {
  color: #fbbf24 !important;
}
html.dark #health-glance-headline.text-red-700,
html.envisage #health-glance-headline.text-red-700 {
  color: #fca5a5 !important;
}

/* All body text on cards */
html.dark #health-glance .text-slate-900,
html.envisage #health-glance .text-slate-900,
html.dark #health-glance .text-slate-800,
html.envisage #health-glance .text-slate-800 {
  color: #f8fafc !important;
}
html.dark #health-glance .text-slate-600,
html.envisage #health-glance .text-slate-600,
html.dark #health-glance .text-slate-500,
html.envisage #health-glance .text-slate-500 {
  color: #cbd5e1 !important;
}
html.dark #health-glance .text-slate-400,
html.envisage #health-glance .text-slate-400 {
  color: #94a3b8 !important;
}
html.dark #health-glance .text-emerald-700,
html.dark #health-glance .text-emerald-800,
html.envisage #health-glance .text-emerald-700,
html.envisage #health-glance .text-emerald-800 {
  color: #6ee7b7 !important;
}
html.dark #health-glance .text-amber-900,
html.dark #health-glance .text-amber-700,
html.envisage #health-glance .text-amber-900,
html.envisage #health-glance .text-amber-700 {
  color: #fcd34d !important;
}
html.dark #health-glance .text-red-800,
html.dark #health-glance .text-red-700,
html.dark #health-glance .text-red-600,
html.envisage #health-glance .text-red-800,
html.envisage #health-glance .text-red-700,
html.envisage #health-glance .text-red-600 {
  color: #fca5a5 !important;
}
html.dark #health-glance .text-sky-900,
html.envisage #health-glance .text-sky-900 {
  color: #7dd3fc !important;
}

/* Pastel light cards → solid dusk shells (counters + status tiles) */
html.dark #health-glance [class*="bg-emerald-50"],
html.envisage #health-glance [class*="bg-emerald-50"] {
  background: linear-gradient(145deg, rgba(6, 78, 59, 0.55), #0f172a) !important;
  border-color: rgba(52, 211, 153, 0.4) !important;
}
html.dark #health-glance [class*="bg-violet-50"],
html.envisage #health-glance [class*="bg-violet-50"] {
  background: linear-gradient(145deg, rgba(76, 29, 149, 0.52), #0f172a) !important;
  border-color: rgba(167, 139, 250, 0.4) !important;
}
html.dark #health-glance [class*="bg-amber-50"],
html.envisage #health-glance [class*="bg-amber-50"] {
  background: linear-gradient(145deg, rgba(120, 53, 15, 0.5), #0f172a) !important;
  border-color: rgba(251, 191, 36, 0.4) !important;
}
html.dark #health-glance [class*="bg-orange-50"],
html.envisage #health-glance [class*="bg-orange-50"] {
  background: linear-gradient(145deg, rgba(154, 52, 18, 0.5), #0f172a) !important;
  border-color: rgba(251, 146, 60, 0.4) !important;
}
html.dark #health-glance [class*="bg-sky-50"],
html.envisage #health-glance [class*="bg-sky-50"] {
  background: linear-gradient(145deg, rgba(7, 89, 133, 0.55), #0f172a) !important;
  border-color: rgba(56, 189, 248, 0.45) !important;
}
html.dark #health-glance [class*="bg-indigo-50"],
html.envisage #health-glance [class*="bg-indigo-50"] {
  background: linear-gradient(145deg, rgba(49, 46, 129, 0.55), #0f172a) !important;
  border-color: rgba(129, 140, 248, 0.45) !important;
}
html.dark #health-glance [class*="bg-purple-50"],
html.envisage #health-glance [class*="bg-purple-50"] {
  background: linear-gradient(145deg, rgba(88, 28, 135, 0.5), #0f172a) !important;
  border-color: rgba(192, 132, 252, 0.4) !important;
}
html.dark #health-glance [class*="bg-cyan-50"],
html.envisage #health-glance [class*="bg-cyan-50"] {
  background: linear-gradient(145deg, rgba(14, 116, 144, 0.5), #0f172a) !important;
  border-color: rgba(34, 211, 238, 0.4) !important;
}
html.dark #health-glance [class*="bg-red-50"],
html.envisage #health-glance [class*="bg-red-50"] {
  background: linear-gradient(145deg, rgba(127, 29, 29, 0.55), #0f172a) !important;
  border-color: rgba(248, 113, 113, 0.45) !important;
}
html.dark #health-glance [class*="bg-slate-50"],
html.envisage #health-glance [class*="bg-slate-50"] {
  background: #1e2937 !important;
  border-color: #475569 !important;
}
html.envisage #health-glance [class*="bg-slate-50"] {
  background: #2a3a54 !important;
  border-color: rgba(130, 175, 220, 0.22) !important;
}

/* Status pills on glance tiles */
html.dark #health-glance .bg-emerald-100,
html.envisage #health-glance .bg-emerald-100 {
  background: rgba(16, 185, 129, 0.22) !important;
  color: #a7f3d0 !important;
}
html.dark #health-glance .bg-amber-100,
html.envisage #health-glance .bg-amber-100 {
  background: rgba(245, 158, 11, 0.22) !important;
  color: #fde68a !important;
}
html.dark #health-glance .bg-red-100,
html.envisage #health-glance .bg-red-100 {
  background: rgba(239, 68, 68, 0.22) !important;
  color: #fecaca !important;
}
html.dark #health-glance .bg-sky-100,
html.envisage #health-glance .bg-sky-100 {
  background: rgba(14, 165, 233, 0.22) !important;
  color: #bae6fd !important;
}
html.dark #health-glance .bg-slate-200,
html.envisage #health-glance .bg-slate-200 {
  background: rgba(148, 163, 184, 0.2) !important;
  color: #e2e8f0 !important;
}

/* Dividers inside switch cards */
html.dark #health-glance .border-black\/5,
html.envisage #health-glance .border-black\/5 {
  border-color: rgba(148, 163, 184, 0.18) !important;
}

/* Disabled switch status shouldn't look "ok" */
html.dark #health-glance .oj-health-metric-status.text-slate-500,
html.envisage #health-glance .oj-health-metric-status.text-slate-500 {
  color: #94a3b8 !important;
}

html.dark #health-metrics .bg-white,
html.envisage #health-metrics .bg-white {
  /* chart cards already remapped */
}
html.dark #health-metrics .text-slate-500,
html.dark #health-metrics .text-slate-400,
html.envisage #health-metrics .text-slate-500 {
  color: #94a3b8 !important;
}

/* --- System settings --- */
html.dark #main-content [id*="settings"] .bg-white,
html.dark #main-content .bg-white.border.rounded-3xl,
html.envisage #main-content [id*="settings"] .bg-white {
  /* global handles */
}
/* Settings cards / toggles / forms in admin */
html.dark #main-content .peer-checked\:bg-emerald-500,
html.dark #main-content label.text-sm,
html.envisage #main-content label.text-sm {
  color: #e2e8f0;
}
html.dark #main-content .text-slate-700,
html.envisage #main-content .text-slate-700 {
  color: #e2e8f0 !important;
}
html.dark #main-content .bg-slate-50.border,
html.envisage #main-content .bg-slate-50.border {
  background: #1e2937 !important;
  border-color: #334155 !important;
}
html.dark #main-content details.bg-slate-50,
html.envisage #main-content details.bg-slate-50 {
  background: #1e2937 !important;
  border-color: #334155 !important;
  color: #e2e8f0;
}
html.dark #main-content details summary,
html.envisage #main-content details summary {
  color: #f1f5f9 !important;
}
/* Settings switch tracks */
html.dark #main-content .bg-slate-200.peer-checked\:bg-emerald-500,
html.dark #main-content span.bg-slate-200 {
  background-color: #475569 !important;
}
html.dark #main-content code.bg-white,
html.envisage #main-content code.bg-white {
  background: #0f172a !important;
  color: #bae6fd !important;
  border-color: #334155 !important;
}

/* Marketplace pulse outer shell */
html.dark [class*="from-slate-50"][class*="to-white"],
html.envisage [class*="from-slate-50"][class*="to-white"] {
  background: linear-gradient(145deg, #1e2937, #0f172a) !important;
  border-color: #334155 !important;
}
html.envisage [class*="from-slate-50"][class*="to-white"] {
  background: linear-gradient(145deg, #243148, #1c2740) !important;
  border-color: rgba(130, 175, 220, 0.18) !important;
}

/* --- Security dashboard: Thresholds / Dog House (Envisage contrast) --- */
html.envisage #sec-thresholds-panel,
html.dark #sec-thresholds-panel {
  background: linear-gradient(145deg, #1a2740 0%, #152033 55%, #1e1b4b 100%) !important;
  border-color: rgba(56, 189, 248, 0.45) !important;
  box-shadow: 0 0 0 1px rgba(56, 189, 248, 0.12), 0 12px 28px rgba(0, 0, 0, 0.28) !important;
}
html.envisage #sec-thresholds-panel > div:first-child,
html.dark #sec-thresholds-panel > div:first-child {
  background: rgba(15, 23, 42, 0.72) !important;
  border-bottom-color: rgba(56, 189, 248, 0.25) !important;
}
html.envisage #sec-thresholds-panel h3,
html.dark #sec-thresholds-panel h3 {
  color: #f0f9ff !important;
}
html.envisage #sec-thresholds-panel h3 + p,
html.envisage #sec-thresholds-panel p.text-\[11px\],
html.dark #sec-thresholds-panel h3 + p {
  color: #bae6fd !important;
}
html.envisage #sec-thresholds-panel .text-slate-500,
html.envisage #sec-thresholds-body .text-slate-500,
html.envisage #sec-thresholds-body .text-\[10px\],
html.envisage #sec-thresholds-body .text-\[11px\],
html.dark #sec-thresholds-panel .text-slate-500,
html.dark #sec-thresholds-body .text-slate-500 {
  color: #cbd5e1 !important;
}
html.envisage #sec-thresholds-panel .text-slate-800,
html.envisage #sec-thresholds-body .text-slate-800,
html.envisage #sec-thresholds-body .text-slate-900,
html.dark #sec-thresholds-body .text-slate-800,
html.dark #sec-thresholds-body .text-slate-900 {
  color: #f8fafc !important;
}
html.envisage #sec-thresholds-panel .text-sky-700,
html.envisage #sec-thresholds-body .text-sky-700,
html.dark #sec-thresholds-body .text-sky-700 {
  color: #7dd3fc !important;
}
html.envisage #sec-thresholds-panel .text-indigo-700,
html.envisage #sec-thresholds-body .text-indigo-700,
html.dark #sec-thresholds-body .text-indigo-700 {
  color: #c4b5fd !important;
}
html.envisage #sec-thresholds-body label,
html.dark #sec-thresholds-body label {
  background: rgba(15, 23, 42, 0.85) !important;
  border-color: rgba(148, 163, 184, 0.35) !important;
  color: #e2e8f0 !important;
}
html.envisage #sec-thresholds-body input[type="number"],
html.dark #sec-thresholds-body input[type="number"] {
  background: #0f172a !important;
  border-color: rgba(125, 211, 252, 0.35) !important;
  color: #f8fafc !important;
}
html.envisage #sec-thresholds-body .border-t,
html.dark #sec-thresholds-body .border-t {
  border-color: rgba(56, 189, 248, 0.22) !important;
}
html.envisage #sec-dash-policy,
html.dark #sec-dash-policy {
  background: linear-gradient(145deg, #1a2740, #152033) !important;
  border-color: rgba(56, 189, 248, 0.35) !important;
  color: #e2e8f0 !important;
}
/* end security thresholds envisage block — continue marketplace rules below */
/* (placeholder to keep cascade intact if following rules expect adjacency) */
html.envisage [class*="from-sky-50"][class*="to-indigo-50"],
html.dark [class*="from-sky-50"][class*="to-indigo-50"] {
  background: linear-gradient(145deg, #1a2740 0%, #152033 55%, #1e1b4b 100%) !important;
  border-color: rgba(56, 189, 248, 0.35) !important;
}

/* ================================================================
   Admin palette chrome - menu accent on page heroes + primary CTAs
   ================================================================ */

/* Primary slate buttons → menu accent (whole admin main content) */
#admin-main-shell #main-content button.bg-slate-800,
#admin-main-shell #main-content button.bg-slate-900,
#admin-main-shell #main-content a.bg-slate-800,
#admin-main-shell #main-content a.bg-slate-900,
#admin-main-shell #main-content .bg-slate-800.rounded-2xl,
#admin-main-shell #main-content .bg-slate-900.rounded-2xl,
#admin-main-shell #main-content .bg-slate-900.rounded-xl {
  background: linear-gradient(
    135deg,
    var(--oj-nav-accent-vivid, var(--oj-nav-accent, #0ea5e9)) 0%,
    color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 55%, #0f172a) 100%
  ) !important;
  border-color: transparent !important;
  box-shadow: 0 8px 18px -10px color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 55%, transparent);
}
#admin-main-shell #main-content button.bg-slate-800:hover,
#admin-main-shell #main-content button.bg-slate-900:hover,
#admin-main-shell #main-content a.bg-slate-800:hover,
#admin-main-shell #main-content a.bg-slate-900:hover {
  filter: brightness(1.08);
}

/* Settings accordion icons follow accent */
.oj-settings-icon {
  background: color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 16%, #f1f5f9) !important;
  color: var(--oj-nav-accent-vivid, var(--oj-nav-accent, #0ea5e9)) !important;
}
html.dark .oj-settings-icon,
html.envisage .oj-settings-icon {
  background: color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 22%, #1e2937) !important;
  color: var(--oj-nav-accent-vivid, var(--oj-nav-accent, #0ea5e9)) !important;
}
html.dark .oj-settings-panel,
html.envisage .oj-settings-panel {
  border-color: rgba(148, 163, 184, 0.2) !important;
}
html.dark .oj-settings-panel > button:hover,
html.envisage .oj-settings-panel > button:hover,
html.dark .oj-settings-toggle:hover,
html.envisage .oj-settings-toggle:hover {
  background: rgba(51, 65, 85, 0.35) !important;
}
/* Flat settings sections (always open - no accordion) */
html.dark .oj-settings-panel,
html.envisage .oj-settings-panel {
  background: #1e2937 !important;
  border-color: rgba(148, 163, 184, 0.22) !important;
}
html.dark .oj-settings-panel .oj-settings-head,
html.envisage .oj-settings-panel .oj-settings-head {
  border-bottom-color: rgba(148, 163, 184, 0.15) !important;
}
html.dark .oj-settings-panel .oj-settings-body,
html.envisage .oj-settings-panel .oj-settings-body {
  background: rgba(15, 23, 42, 0.45) !important;
}
html.dark .oj-settings-panel .font-semibold.text-slate-900,
html.envisage .oj-settings-panel .font-semibold.text-slate-900 {
  color: #f1f5f9 !important;
}
#admin-main-shell #main-content .oj-settings-panel {
  max-width: none !important;
  width: 100%;
}

/* Admin page hero selects/options readable on dark banner */
.oj-admin-page-hero select option {
  color: #0f172a;
  background: #fff;
}
.oj-admin-hero-actions .bg-white\/15,
.oj-admin-page-hero .bg-white\/15 {
  backdrop-filter: blur(6px);
}

/* Report / billing icons pick up accent a bit when slate tone */
html.dark .oj-report-stat-icon.bg-slate-50,
html.envisage .oj-report-stat-icon.bg-slate-50 {
  background: color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 18%, #1e2937) !important;
  color: var(--oj-nav-accent-vivid, var(--oj-nav-accent)) !important;
}

/* Focus rings on admin forms use accent */
#admin-main-shell #main-content input:focus,
#admin-main-shell #main-content select:focus,
#admin-main-shell #main-content textarea:focus {
  border-color: color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 60%, #64748b) !important;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 18%, transparent);
}


/* ================================================================
   Admin / global: menu colour always tints CTAs + icons;
   Psychology heroes stay fixed until Hybrid / Match menu selected
   ================================================================ */

/* Primary actions - always menu colour (all themes including Light) */
#admin-main-shell #main-content button.bg-slate-800,
#admin-main-shell #main-content button.bg-slate-900,
#admin-main-shell #main-content a.bg-slate-800,
#admin-main-shell #main-content a.bg-slate-900,
#admin-main-shell #main-content .bg-slate-800,
#admin-main-shell #main-content .bg-slate-900,
#admin-main-shell #main-content button.bg-blue-600,
#admin-main-shell #main-content a.bg-blue-600 {
  background: linear-gradient(
    135deg,
    var(--oj-nav-accent-vivid, var(--oj-nav-accent, #0ea5e9)) 0%,
    color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 62%, #0f172a) 100%
  ) !important;
  border-color: transparent !important;
  color: #fff !important;
  box-shadow: 0 8px 18px -10px color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 50%, transparent);
}
#admin-main-shell #main-content button.bg-slate-800:hover,
#admin-main-shell #main-content button.bg-slate-900:hover,
#admin-main-shell #main-content button.bg-blue-600:hover,
#admin-main-shell #main-content a.bg-blue-600:hover {
  filter: brightness(1.07);
}

/* Sky utility links → menu accent (so palette is visible on Light) */
#admin-main-shell #main-content .text-sky-600,
#admin-main-shell #main-content .text-sky-700,
#admin-main-shell #main-content a.text-sky-600,
#admin-main-shell #main-content a.text-sky-700 {
  color: var(--oj-nav-accent-vivid, var(--oj-nav-accent, #0ea5e9)) !important;
}

/* Settings icons always accent */
#admin-main-shell .oj-settings-icon {
  background: color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 14%, #f1f5f9) !important;
  color: var(--oj-nav-accent-vivid, var(--oj-nav-accent, #0ea5e9)) !important;
  border: 1px solid color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 22%, transparent);
}
html.dark #admin-main-shell .oj-settings-icon,
html.envisage #admin-main-shell .oj-settings-icon {
  background: color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 22%, #1e2937) !important;
  color: var(--oj-nav-accent-vivid, var(--oj-nav-accent, #0ea5e9)) !important;
}

/* When Hybrid / Match menu: soft accent wash on white metric shells in Light */
html[data-oj-hero="hybrid"] #admin-main-shell #main-content .oj-admin-metric--slate,
html[data-oj-hero="match"] #admin-main-shell #main-content .oj-admin-metric--slate,
html[data-oj-hero="hybrid"] #admin-main-shell #main-content .oj-pulse-card,
html[data-oj-hero="match"] #admin-main-shell #main-content .oj-pulse-card,
html[data-oj-hero="hybrid"] #admin-main-shell #main-content .oj-report-stat,
html[data-oj-hero="match"] #admin-main-shell #main-content .oj-report-stat {
  border-color: color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 28%, #e2e8f0) !important;
  box-shadow: 0 8px 20px -14px color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 35%, transparent);
}
html[data-oj-hero="hybrid"] #admin-main-shell #main-content .oj-report-stat-icon,
html[data-oj-hero="match"] #admin-main-shell #main-content .oj-report-stat-icon {
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 20%, transparent);
}

/* Health tiles get accent-tinted border when Hybrid/Match */
html[data-oj-hero="hybrid"] #admin-main-shell #health-glance-counters .oj-health-metric,
html[data-oj-hero="match"] #admin-main-shell #health-glance-counters .oj-health-metric {
  border-color: color-mix(in srgb, var(--oj-nav-accent, #0ea5e9) 32%, #e2e8f0) !important;
}

/* Psychology mode (Light default): leave hero tones alone - no extra override */

/* Page colour mode buttons in chrome: make Psychology stand out as default */
.oj-chrome-modes [data-oj-hero-mode="section"].is-selected {
  border-color: #64748b;
}


/* Header colour defaults (Auto follows menu; overridden by data-oj-header-colour maps) */
:root {
  --oj-header-accent: #0ea5e9;
  --oj-header-accent-vivid: #0ea5e9;
}

/* Header colour picker layout: "Same as menu" on its own row, swatches below */
.oj-chrome-header-block {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.oj-chrome-header-auto {
  align-self: flex-start;
  flex-shrink: 0;
}
.oj-chrome-header-swatches {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
}
.oj-chrome-header-swatches .oj-chrome-swatch,
.oj-chrome-header-auto {
  cursor: pointer;
  pointer-events: auto;
}

/* Customer avatar picker - obvious scroll affordance (mobile + desktop) */
.oj-avatar-picker-scroll {
  scrollbar-gutter: stable;
  scrollbar-width: auto;
  scrollbar-color: #64748b #e2e8f0;
  -webkit-overflow-scrolling: touch;
}
.oj-avatar-picker-scroll::-webkit-scrollbar {
  width: 12px;
}
.oj-avatar-picker-scroll::-webkit-scrollbar-track {
  background: #e2e8f0;
  border-radius: 999px;
  margin: 4px 0;
}
.oj-avatar-picker-scroll::-webkit-scrollbar-thumb {
  background: #64748b;
  border-radius: 999px;
  border: 2px solid #e2e8f0;
  min-height: 40px;
}
.oj-avatar-picker-scroll::-webkit-scrollbar-thumb:hover {
  background: #475569;
}
.oj-avatar-scroll-fade {
  background: linear-gradient(to top, rgba(248, 250, 252, 0.98) 10%, rgba(248, 250, 252, 0));
  transition: opacity 0.2s ease;
}
.oj-avatar-scroll-hint {
  transition: opacity 0.2s ease, transform 0.15s ease;
}
.oj-avatar-scroll-hint:active {
  transform: translate(-50%, 1px) scale(0.98);
}
html.dark .oj-avatar-scroll-wrap,
html.envisage .oj-avatar-scroll-wrap {
  border-color: #475569 !important;
  background: rgba(15, 23, 42, 0.45) !important;
}
html.envisage .oj-avatar-scroll-wrap {
  background: rgba(28, 39, 64, 0.55) !important;
  border-color: rgba(130, 175, 220, 0.25) !important;
}
html.dark .oj-avatar-picker-scroll,
html.envisage .oj-avatar-picker-scroll {
  scrollbar-color: #94a3b8 #1e2937;
}
html.dark .oj-avatar-picker-scroll::-webkit-scrollbar-track,
html.envisage .oj-avatar-picker-scroll::-webkit-scrollbar-track {
  background: #1e2937;
}
html.dark .oj-avatar-picker-scroll::-webkit-scrollbar-thumb,
html.envisage .oj-avatar-picker-scroll::-webkit-scrollbar-thumb {
  background: #94a3b8;
  border-color: #1e2937;
}
html.dark .oj-avatar-scroll-fade,
html.envisage .oj-avatar-scroll-fade {
  background: linear-gradient(to top, rgba(30, 41, 55, 0.98) 15%, transparent);
}
html.envisage .oj-avatar-scroll-fade {
  background: linear-gradient(to top, rgba(36, 49, 72, 0.98) 15%, transparent);
}
html.dark .oj-avatar-scroll-hint,
html.envisage .oj-avatar-scroll-hint {
  background: #1e2937 !important;
  border-color: #475569 !important;
  color: #e2e8f0 !important;
}
html.envisage .oj-avatar-scroll-hint {
  background: #243148 !important;
  border-color: rgba(130, 175, 220, 0.28) !important;
}


/* ================================================================
   Customer + Tradie - Night parity for remnants Envisage already fixed
   (status 950 text, report minis, gradient cards, borders, banners)
   ================================================================ */

/* Deep 950 text (trial banners, cert, pipeline pills) */
html.dark .text-emerald-950,
html.dark .text-amber-950,
html.dark .text-red-950,
html.dark .text-orange-950,
html.dark .text-sky-950,
html.dark .text-violet-950,
html.dark .text-blue-950,
html.dark .text-indigo-950 {
  color: #f8fafc !important;
}
html.dark .text-emerald-950 { color: #d1fae5 !important; }
html.dark .text-amber-950 { color: #fef3c7 !important; }
html.dark .text-red-950 { color: #fee2e2 !important; }
html.dark .text-orange-950 { color: #ffedd5 !important; }
html.dark .text-sky-950,
html.dark .text-blue-950 { color: #e0f2fe !important; }
html.dark .text-violet-950,
html.dark .text-indigo-950 { color: #ede9fe !important; }

/* Soft tint borders used on tradie report minis / empty states */
html.dark .border-amber-100,
html.dark .border-emerald-100,
html.dark .border-sky-100,
html.dark .border-blue-100,
html.dark .border-red-100,
html.dark .border-violet-100,
html.dark .border-purple-100,
html.dark .border-orange-100,
html.dark .border-teal-100,
html.dark .border-indigo-100 {
  border-color: rgba(148, 163, 184, 0.22) !important;
}
html.dark .border-amber-100 { border-color: rgba(251, 191, 36, 0.32) !important; }
html.dark .border-emerald-100 { border-color: rgba(52, 211, 153, 0.3) !important; }
html.dark .border-sky-100,
html.dark .border-blue-100 { border-color: rgba(56, 189, 248, 0.3) !important; }
html.dark .border-red-100 { border-color: rgba(248, 113, 113, 0.32) !important; }
html.dark .border-violet-100,
html.dark .border-purple-100 { border-color: rgba(167, 139, 250, 0.3) !important; }
html.dark .border-orange-100 { border-color: rgba(251, 146, 60, 0.32) !important; }
html.dark .border-indigo-100 { border-color: rgba(129, 140, 248, 0.32) !important; }

/* Report mini labels on Night (bg remapped; text was still dark) */
html.dark .oj-report-mini .text-orange-800,
html.dark .oj-report-mini [class*="text-orange"] { color: #ffedd5 !important; }
html.dark .oj-report-mini .text-sky-900,
html.dark .oj-report-mini [class*="text-sky"],
html.dark .oj-report-mini [class*="text-indigo"] { color: #e0f2fe !important; }
html.dark .oj-report-mini .text-emerald-900,
html.dark .oj-report-mini [class*="text-emerald"] { color: #d1fae5 !important; }
html.dark .oj-report-mini .text-violet-900,
html.dark .oj-report-mini [class*="text-violet"] { color: #ede9fe !important; }
html.dark .oj-report-mini .text-slate-500,
html.dark .oj-report-mini .text-slate-600 { color: #cbd5e1 !important; }

/* Gradient utility stops Night (tradie reports / diary / billing strips) */
html.dark .from-emerald-50 {
  --tw-gradient-from: rgba(6, 78, 59, 0.5) var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(6 78 59 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.dark .to-teal-50 {
  --tw-gradient-to: rgba(19, 78, 74, 0.45) var(--tw-gradient-to-position) !important;
}
html.dark .from-amber-50 {
  --tw-gradient-from: rgba(120, 53, 15, 0.5) var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(120 53 15 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.dark .to-orange-50 {
  --tw-gradient-to: rgba(154, 52, 18, 0.45) var(--tw-gradient-to-position) !important;
}
html.dark .from-orange-50 {
  --tw-gradient-from: rgba(154, 52, 18, 0.5) var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(154 52 18 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.dark .to-amber-50 {
  --tw-gradient-to: rgba(120, 53, 15, 0.45) var(--tw-gradient-to-position) !important;
}
html.dark .from-violet-50 {
  --tw-gradient-from: rgba(76, 29, 149, 0.48) var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(76 29 149 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.dark .to-purple-50 {
  --tw-gradient-to: rgba(88, 28, 135, 0.45) var(--tw-gradient-to-position) !important;
}
html.dark .from-indigo-50 {
  --tw-gradient-from: rgba(49, 46, 129, 0.45) var(--tw-gradient-from-position) !important;
  --tw-gradient-to: rgb(49 46 129 / 0) var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}
html.dark .to-indigo-50 {
  --tw-gradient-to: rgba(49, 46, 129, 0.45) var(--tw-gradient-to-position) !important;
}
html.dark .to-white,
html.dark .via-white {
  --tw-gradient-via: #1e2937 var(--tw-gradient-via-position) !important;
  --tw-gradient-to: #0f172a var(--tw-gradient-to-position) !important;
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-via), var(--tw-gradient-to) !important;
}
html.dark .to-white {
  --tw-gradient-to: #0f172a var(--tw-gradient-to-position) !important;
}

/* Opacity pastels on customer post-job + tradie website emergency (Night) */
html.dark .bg-blue-50\/50,
html.dark .bg-blue-50\/60,
html.dark [class*="bg-blue-50\/"] {
  background-color: rgba(12, 74, 110, 0.4) !important;
}
html.dark .bg-red-50\/50,
html.dark [class*="bg-red-50\/"] {
  background-color: rgba(127, 29, 29, 0.4) !important;
}
html.dark .bg-violet-50\/40,
html.dark [class*="bg-violet-50\/"] {
  background-color: rgba(76, 29, 149, 0.35) !important;
}

/* Customer home attention + estimate gradient chips */
html.dark #dashboard-attention .bg-white\/80,
html.dark #dashboard-attention .bg-white\/90 {
  background: rgba(15, 23, 42, 0.9) !important;
}
html.dark #dashboard-attention [class*="text-amber"],
html.dark #dashboard-attention [class*="text-emerald"],
html.dark #dashboard-attention [class*="text-red"] {
  color: #fde68a !important;
}
html.dark #dashboard-attention [class*="text-emerald"] { color: #a7f3d0 !important; }
html.dark #dashboard-attention [class*="text-red"] { color: #fecaca !important; }

/* Tradie cert / trial / verification banners */
html.dark #certification-banner,
html.dark #trial-banner:not(.hidden),
html.dark #verified-success-banner {
  color: #fef3c7 !important;
}
html.dark #certification-banner .text-amber-800,
html.dark #certification-banner .text-amber-700,
html.dark #certification-banner h3,
html.dark #certification-banner [class*="text-amber"] {
  color: #fde68a !important;
}
html.dark #verified-success-banner,
html.dark #verified-success-banner [class*="text-emerald"] {
  color: #a7f3d0 !important;
}

/* Customer estimates / jobs filter pills inactive white tabs */
html.dark .estimate-filter-tab.bg-white,
html.dark .job-filter-tab.bg-white,
html.envisage .estimate-filter-tab.bg-white,
html.envisage .job-filter-tab.bg-white {
  background: #1e2937 !important;
  color: #e2e8f0 !important;
  border-color: #475569 !important;
}
html.envisage .estimate-filter-tab.bg-white,
html.envisage .job-filter-tab.bg-white {
  background: #243148 !important;
  border-color: rgba(130, 175, 220, 0.22) !important;
}

/* Profile setup (tradie) soft cards */
html.dark #profile-form .bg-indigo-50,
html.dark #profile-form [class*="bg-indigo-50"],
html.envisage #profile-form .bg-indigo-50 {
  background: linear-gradient(145deg, rgba(49, 46, 129, 0.4), #0f172a) !important;
  border-color: rgba(129, 140, 248, 0.3) !important;
}
html.dark #profile-form .text-indigo-900,
html.envisage #profile-form .text-indigo-900 {
  color: #c7d2fe !important;
}

/* Customer assigned-tradie / soft info strips */
html.dark [class*="from-sky-50"][class*="to-emerald-50"],
html.envisage [class*="from-sky-50"][class*="to-emerald-50"] {
  background: linear-gradient(90deg, rgba(12, 74, 110, 0.45), rgba(6, 78, 59, 0.4)) !important;
  border-color: rgba(56, 189, 248, 0.25) !important;
  color: #e0f2fe !important;
}

/* Empty opportunity / empty lists on tradie */
html.dark .oj-empty-opp-title,
html.envisage .oj-empty-opp-title {
  color: #f8fafc !important;
}
html.dark .oj-empty-opp-sub,
html.envisage .oj-empty-opp-sub {
  color: #94a3b8 !important;
}

/* Job card status chips - keep pill text light when bg is remapped */
html.dark .job-card [class*="bg-amber-1"],
html.dark .job-card [class*="bg-emerald-1"],
html.dark .job-card [class*="bg-sky-1"],
html.dark .job-card [class*="bg-blue-1"],
html.dark .job-card [class*="bg-violet-1"],
html.dark .job-card [class*="bg-red-1"],
html.envisage .job-card [class*="bg-amber-1"],
html.envisage .job-card [class*="bg-emerald-1"],
html.envisage .job-card [class*="bg-sky-1"],
html.envisage .job-card [class*="bg-blue-1"],
html.envisage .job-card [class*="bg-violet-1"],
html.envisage .job-card [class*="bg-red-1"] {
  color: inherit;
}


/* ================================================================
   i18n language cards (Languages & Translations) � light + dark + envisage
   ================================================================ */
.oj-i18n-card {
  border-color: #e2e8f0;
  background: #fff;
  color: #0f172a;
}
.oj-i18n-card-title { color: #0f172a; }
.oj-i18n-card-sub,
.oj-i18n-card-muted { color: #64748b; }
.oj-i18n-card--source { background: #f8fafc; border-color: #e2e8f0; }
.oj-i18n-card--never { background: #f8fafc; border-color: #e2e8f0; }
.oj-i18n-card--fresh { background: rgba(236, 253, 245, 0.7); border-color: #a7f3d0; }
.oj-i18n-card--live-fresh { background: #d1fae5; border-color: #34d399; box-shadow: 0 1px 2px rgba(16, 185, 129, 0.12); }
.oj-i18n-card--stale {
  background: #fef3c7;
  border-color: #f59e0b;
  box-shadow: 0 1px 2px rgba(245, 158, 11, 0.15);
  color: #78350f;
}
.oj-i18n-card--stale .oj-i18n-card-title { color: #78350f; }
.oj-i18n-card--stale .oj-i18n-card-sub,
.oj-i18n-card--stale .oj-i18n-card-muted { color: #92400e; }
.oj-i18n-card--selected { box-shadow: 0 0 0 2px #8b5cf6, 0 0 0 4px rgba(139, 92, 246, 0.25); }

.oj-i18n-pill { border-width: 1px; border-style: solid; }
.oj-i18n-pill--source { background: #f1f5f9; color: #334155; border-color: #e2e8f0; }
.oj-i18n-pill--never { background: #f8fafc; color: #64748b; border-color: #e2e8f0; }
.oj-i18n-pill--stale { background: #fde68a; color: #78350f; border-color: #f59e0b; }
.oj-i18n-pill--fresh { background: #d1fae5; color: #065f46; border-color: #6ee7b7; }

/* Dark (Night) */
html.dark .oj-i18n-card {
  background: #1e293b;
  border-color: #334155;
  color: #e2e8f0;
}
html.dark .oj-i18n-card-title { color: #f1f5f9; }
html.dark .oj-i18n-card-sub,
html.dark .oj-i18n-card-muted { color: #94a3b8; }
html.dark .oj-i18n-card--source,
html.dark .oj-i18n-card--never { background: #0f172a; border-color: #334155; }
html.dark .oj-i18n-card--fresh { background: rgba(6, 78, 59, 0.45); border-color: #059669; }
html.dark .oj-i18n-card--live-fresh { background: rgba(6, 95, 70, 0.55); border-color: #34d399; }
html.dark .oj-i18n-card--stale {
  background: rgba(120, 53, 15, 0.55);
  border-color: #fbbf24;
  color: #fef3c7;
  box-shadow: none;
}
html.dark .oj-i18n-card--stale .oj-i18n-card-title { color: #fef3c7; }
html.dark .oj-i18n-card--stale .oj-i18n-card-sub,
html.dark .oj-i18n-card--stale .oj-i18n-card-muted { color: #fde68a; }
html.dark .oj-i18n-pill--source { background: #334155; color: #e2e8f0; border-color: #475569; }
html.dark .oj-i18n-pill--never { background: #1e293b; color: #94a3b8; border-color: #334155; }
html.dark .oj-i18n-pill--stale { background: #92400e; color: #fef3c7; border-color: #fbbf24; }
html.dark .oj-i18n-pill--fresh { background: #065f46; color: #d1fae5; border-color: #34d399; }

/* Envisage (dusk) � high contrast amber, no pale yellow on dark steel */
html.envisage .oj-i18n-card {
  background: var(--env-surface, #243148);
  border-color: var(--env-border, rgba(130, 175, 220, 0.18));
  color: var(--env-text, #eef4fb);
}
html.envisage .oj-i18n-card-title { color: var(--env-text, #eef4fb); }
html.envisage .oj-i18n-card-sub,
html.envisage .oj-i18n-card-muted { color: var(--env-muted, #8fa8c4); }
html.envisage .oj-i18n-card--source,
html.envisage .oj-i18n-card--never {
  background: var(--env-soft, #1c2740);
  border-color: var(--env-border, rgba(130, 175, 220, 0.18));
}
html.envisage .oj-i18n-card--fresh {
  background: rgba(16, 185, 129, 0.18);
  border-color: rgba(52, 211, 153, 0.45);
}
html.envisage .oj-i18n-card--live-fresh {
  background: rgba(16, 185, 129, 0.28);
  border-color: rgba(52, 211, 153, 0.65);
}
html.envisage .oj-i18n-card--stale {
  background: rgba(251, 191, 36, 0.16);
  border-color: rgba(251, 191, 36, 0.55);
  color: #fef3c7;
  box-shadow: 0 0 0 1px rgba(251, 191, 36, 0.12);
}
html.envisage .oj-i18n-card--stale .oj-i18n-card-title { color: #fde68a; }
html.envisage .oj-i18n-card--stale .oj-i18n-card-sub,
html.envisage .oj-i18n-card--stale .oj-i18n-card-muted { color: #fcd34d; }
html.envisage .oj-i18n-card--selected {
  box-shadow: 0 0 0 2px #a78bfa, 0 0 0 4px rgba(167, 139, 250, 0.25);
}
html.envisage .oj-i18n-pill--source {
  background: var(--env-elevated, #354864);
  color: var(--env-text-soft, #c8d6ea);
  border-color: var(--env-border-strong, rgba(148, 190, 230, 0.28));
}
html.envisage .oj-i18n-pill--never {
  background: var(--env-soft, #1c2740);
  color: var(--env-muted, #8fa8c4);
  border-color: var(--env-border, rgba(130, 175, 220, 0.18));
}
html.envisage .oj-i18n-pill--stale {
  background: rgba(180, 83, 9, 0.55);
  color: #fff7ed;
  border-color: #fbbf24;
}
html.envisage .oj-i18n-pill--fresh {
  background: rgba(6, 95, 70, 0.55);
  color: #d1fae5;
  border-color: #34d399;
}

/* ========== Admin Changelog cards (light + dark + envisage) ========== */
/* Pale Tailwind from-*-50 gradients stay light under dark mode while global
   text remaps go light - so cards need their own surfaces + text. */

#oj-cl-list .oj-cl-card {
  border-radius: 1.5rem;
  border-width: 1px;
  border-style: solid;
  padding: 1.5rem;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
  background: linear-gradient(145deg, #f8fafc 0%, #f1f5f9 100%);
  border-color: #e2e8f0;
  color: #1e293b;
}
@media (min-width: 640px) {
  #oj-cl-list .oj-cl-card { padding: 2rem; }
}

#oj-cl-list .oj-cl-card--birth {
  background: linear-gradient(145deg, #fffbeb 0%, #ffedd5 100%);
  border-color: #fcd34d;
}
#oj-cl-list .oj-cl-card--feature {
  background: linear-gradient(145deg, #f5f3ff 0%, #fae8ff 100%);
  border-color: #c4b5fd;
}
#oj-cl-list .oj-cl-card--fix {
  background: linear-gradient(145deg, #fff1f2 0%, #ffedd5 100%);
  border-color: #fda4af;
}
#oj-cl-list .oj-cl-card--security {
  background: linear-gradient(145deg, #f1f5f9 0%, #e2e8f0 100%);
  border-color: #94a3b8;
}
#oj-cl-list .oj-cl-card--polish {
  background: linear-gradient(145deg, #fdf2f8 0%, #ffe4e6 100%);
  border-color: #f9a8d4;
}
#oj-cl-list .oj-cl-card--branding {
  background: linear-gradient(145deg, #eef2ff 0%, #e0f2fe 100%);
  border-color: #a5b4fc;
}
#oj-cl-list .oj-cl-card--messaging {
  background: linear-gradient(145deg, #ecfeff 0%, #e0f2fe 100%);
  border-color: #67e8f9;
}
#oj-cl-list .oj-cl-card--ops {
  background: linear-gradient(145deg, #fafafa 0%, #f1f5f9 100%);
  border-color: #d4d4d8;
}
#oj-cl-list .oj-cl-card--recovery {
  background: linear-gradient(145deg, #fef2f2 0%, #fffbeb 100%);
  border-color: #fca5a5;
}
#oj-cl-list .oj-cl-card--plan {
  background: linear-gradient(145deg, #f7fee7 0%, #ecfdf5 100%);
  border-color: #bef264;
}
#oj-cl-list .oj-cl-card--paused {
  background: linear-gradient(145deg, #f5f5f4 0%, #e7e5e4 100%);
  border-color: #a8a29e;
}

/* Light-theme text (explicit so dark remaps cannot wash cards) */
#oj-cl-list .oj-cl-card .oj-cl-title { color: #0f172a; }
#oj-cl-list .oj-cl-card .oj-cl-summary { color: #334155; }
#oj-cl-list .oj-cl-card .oj-cl-body p { color: #334155; }
#oj-cl-list .oj-cl-card .oj-cl-area { color: #6d28d9; }
#oj-cl-list .oj-cl-card .oj-cl-date { color: #1e293b; }
#oj-cl-list .oj-cl-card .oj-cl-dot { color: #94a3b8; }
#oj-cl-list .oj-cl-card .oj-cl-version {
  background: #ede9fe;
  border: 1px solid #c4b5fd;
  color: #5b21b6;
}
#oj-cl-list .oj-cl-card .oj-cl-kind-pill {
  background: rgba(255, 255, 255, 0.88);
  border: 1px solid rgba(15, 23, 42, 0.08);
  color: #1e293b;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
}
#oj-cl-list .oj-cl-card .oj-cl-unknown {
  background: #fffbeb;
  border: 1px solid #fcd34d;
  color: #78350f;
}
#oj-cl-list .oj-cl-card .oj-cl-highlights {
  background: rgba(248, 250, 252, 0.9);
  border: 1px solid #e2e8f0;
}
#oj-cl-list .oj-cl-card .oj-cl-highlights-label { color: #64748b; }
#oj-cl-list .oj-cl-card .oj-cl-highlights li { color: #334155; }
#oj-cl-list .oj-cl-card .oj-cl-tag {
  background: #f5f3ff;
  border: 1px solid #ddd6fe;
  color: #5b21b6;
}
#oj-cl-list .oj-cl-card .oj-cl-divider {
  border-color: rgba(226, 232, 240, 0.95);
}
#oj-cl-list .oj-cl-card .oj-cl-aud-admin {
  background: #f1f5f9; color: #334155; border-color: #e2e8f0;
}
#oj-cl-list .oj-cl-card .oj-cl-aud-tradie {
  background: #ecfdf5; color: #065f46; border-color: #a7f3d0;
}
#oj-cl-list .oj-cl-card .oj-cl-aud-customer {
  background: #f0f9ff; color: #075985; border-color: #bae6fd;
}

/* ----- Night (dark) ----- */
html.dark #oj-cl-list .oj-cl-card {
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.35);
  background: linear-gradient(145deg, #1e293b 0%, #0f172a 100%) !important;
  border-color: #475569 !important;
  color: #e2e8f0 !important;
}
html.dark #oj-cl-list .oj-cl-card--birth {
  background: linear-gradient(145deg, #422006 0%, #1c1917 55%, #292524 100%) !important;
  border-color: rgba(251, 191, 36, 0.45) !important;
}
html.dark #oj-cl-list .oj-cl-card--feature {
  background: linear-gradient(145deg, #2e1065 0%, #1e1b4b 50%, #0f172a 100%) !important;
  border-color: rgba(167, 139, 250, 0.45) !important;
}
html.dark #oj-cl-list .oj-cl-card--fix {
  background: linear-gradient(145deg, #4c0519 0%, #431407 50%, #1c1917 100%) !important;
  border-color: rgba(251, 113, 133, 0.45) !important;
}
html.dark #oj-cl-list .oj-cl-card--security {
  background: linear-gradient(145deg, #1e293b 0%, #0f172a 100%) !important;
  border-color: rgba(148, 163, 184, 0.45) !important;
}
html.dark #oj-cl-list .oj-cl-card--polish {
  background: linear-gradient(145deg, #500724 0%, #1f0a1a 55%, #0f172a 100%) !important;
  border-color: rgba(244, 114, 182, 0.4) !important;
}
html.dark #oj-cl-list .oj-cl-card--branding {
  background: linear-gradient(145deg, #1e1b4b 0%, #0c4a6e 55%, #0f172a 100%) !important;
  border-color: rgba(129, 140, 248, 0.45) !important;
}
html.dark #oj-cl-list .oj-cl-card--messaging {
  background: linear-gradient(145deg, #083344 0%, #0c4a6e 55%, #0f172a 100%) !important;
  border-color: rgba(34, 211, 238, 0.4) !important;
}
html.dark #oj-cl-list .oj-cl-card--ops {
  background: linear-gradient(145deg, #27272a 0%, #18181b 55%, #0f172a 100%) !important;
  border-color: rgba(161, 161, 170, 0.4) !important;
}
html.dark #oj-cl-list .oj-cl-card--recovery {
  background: linear-gradient(145deg, #450a0a 0%, #431407 50%, #0f172a 100%) !important;
  border-color: rgba(248, 113, 113, 0.45) !important;
}
html.dark #oj-cl-list .oj-cl-card--plan {
  background: linear-gradient(145deg, #14532d 0%, #1a2e05 50%, #0f172a 100%) !important;
  border-color: rgba(163, 230, 53, 0.4) !important;
}
html.dark #oj-cl-list .oj-cl-card--paused {
  background: linear-gradient(145deg, #292524 0%, #1c1917 100%) !important;
  border-color: rgba(168, 162, 158, 0.4) !important;
}

html.dark #oj-cl-list .oj-cl-card .oj-cl-title { color: #f8fafc !important; }
html.dark #oj-cl-list .oj-cl-card .oj-cl-summary { color: #e2e8f0 !important; }
html.dark #oj-cl-list .oj-cl-card .oj-cl-body p { color: #cbd5e1 !important; }
html.dark #oj-cl-list .oj-cl-card .oj-cl-area { color: #c4b5fd !important; }
html.dark #oj-cl-list .oj-cl-card .oj-cl-date { color: #f1f5f9 !important; }
html.dark #oj-cl-list .oj-cl-card .oj-cl-dot { color: #64748b !important; }
html.dark #oj-cl-list .oj-cl-card .oj-cl-kind-pill {
  background: rgba(15, 23, 42, 0.75) !important;
  border-color: rgba(148, 163, 184, 0.35) !important;
  color: #f1f5f9 !important;
}
html.dark #oj-cl-list .oj-cl-card .oj-cl-version {
  background: rgba(76, 29, 149, 0.55) !important;
  border-color: rgba(167, 139, 250, 0.45) !important;
  color: #ede9fe !important;
}
html.dark #oj-cl-list .oj-cl-card .oj-cl-unknown {
  background: rgba(120, 53, 15, 0.55) !important;
  border-color: rgba(251, 191, 36, 0.5) !important;
  color: #fef3c7 !important;
}
html.dark #oj-cl-list .oj-cl-card .oj-cl-highlights {
  background: rgba(15, 23, 42, 0.55) !important;
  border-color: rgba(71, 85, 105, 0.8) !important;
}
html.dark #oj-cl-list .oj-cl-card .oj-cl-highlights-label { color: #94a3b8 !important; }
html.dark #oj-cl-list .oj-cl-card .oj-cl-highlights li { color: #e2e8f0 !important; }
html.dark #oj-cl-list .oj-cl-card .oj-cl-tag {
  background: rgba(76, 29, 149, 0.45) !important;
  border-color: rgba(167, 139, 250, 0.4) !important;
  color: #ede9fe !important;
}
html.dark #oj-cl-list .oj-cl-card .oj-cl-divider {
  border-color: rgba(71, 85, 105, 0.85) !important;
}
html.dark #oj-cl-list .oj-cl-card .oj-cl-aud-admin {
  background: rgba(51, 65, 85, 0.7) !important;
  color: #e2e8f0 !important;
  border-color: #475569 !important;
}
html.dark #oj-cl-list .oj-cl-card .oj-cl-aud-tradie {
  background: rgba(6, 78, 59, 0.55) !important;
  color: #a7f3d0 !important;
  border-color: rgba(52, 211, 153, 0.4) !important;
}
html.dark #oj-cl-list .oj-cl-card .oj-cl-aud-customer {
  background: rgba(12, 74, 110, 0.55) !important;
  color: #bae6fd !important;
  border-color: rgba(56, 189, 248, 0.4) !important;
}

/* Filters on dark/envisage - native select options */
html.dark #oj-cl-area,
html.dark #oj-cl-kind,
html.dark #oj-cl-audience,
html.dark #oj-cl-q,
html.envisage #oj-cl-area,
html.envisage #oj-cl-kind,
html.envisage #oj-cl-audience,
html.envisage #oj-cl-q {
  color: #f8fafc !important;
  background-color: rgba(15, 23, 42, 0.55) !important;
  border-color: rgba(148, 163, 184, 0.35) !important;
}
html.dark #oj-cl-area option,
html.dark #oj-cl-kind option,
html.dark #oj-cl-audience option,
html.envisage #oj-cl-area option,
html.envisage #oj-cl-kind option,
html.envisage #oj-cl-audience option {
  background-color: #0f172a;
  color: #f1f5f9;
}

/* ----- Envisage (dusk) ----- */
html.envisage #oj-cl-list .oj-cl-card {
  box-shadow: 0 4px 22px rgba(0, 0, 0, 0.28);
  background: linear-gradient(145deg, #243247 0%, #1a2438 100%) !important;
  border-color: rgba(148, 190, 230, 0.22) !important;
  color: #e8eef8 !important;
}
html.envisage #oj-cl-list .oj-cl-card--birth {
  background: linear-gradient(145deg, #3d2a12 0%, #1f2436 100%) !important;
  border-color: rgba(251, 191, 36, 0.4) !important;
}
html.envisage #oj-cl-list .oj-cl-card--feature {
  background: linear-gradient(145deg, #2a1f4a 0%, #1a2438 100%) !important;
  border-color: rgba(167, 139, 250, 0.4) !important;
}
html.envisage #oj-cl-list .oj-cl-card--fix {
  background: linear-gradient(145deg, #3b1520 0%, #1a2438 100%) !important;
  border-color: rgba(251, 113, 133, 0.4) !important;
}
html.envisage #oj-cl-list .oj-cl-card--security {
  background: linear-gradient(145deg, #1e2a3c 0%, #152033 100%) !important;
  border-color: rgba(148, 190, 230, 0.28) !important;
}
html.envisage #oj-cl-list .oj-cl-card--polish {
  background: linear-gradient(145deg, #3a1a32 0%, #1a2438 100%) !important;
  border-color: rgba(244, 114, 182, 0.35) !important;
}
html.envisage #oj-cl-list .oj-cl-card--branding {
  background: linear-gradient(145deg, #1e2a4a 0%, #1a2438 100%) !important;
  border-color: rgba(129, 140, 248, 0.4) !important;
}
html.envisage #oj-cl-list .oj-cl-card--messaging {
  background: linear-gradient(145deg, #143240 0%, #1a2438 100%) !important;
  border-color: rgba(34, 211, 238, 0.35) !important;
}
html.envisage #oj-cl-list .oj-cl-card--ops {
  background: linear-gradient(145deg, #252e40 0%, #1a2438 100%) !important;
  border-color: rgba(148, 163, 184, 0.35) !important;
}
html.envisage #oj-cl-list .oj-cl-card--recovery {
  background: linear-gradient(145deg, #3b1515 0%, #1a2438 100%) !important;
  border-color: rgba(248, 113, 113, 0.4) !important;
}
html.envisage #oj-cl-list .oj-cl-card--plan {
  background: linear-gradient(145deg, #143528 0%, #1a2438 100%) !important;
  border-color: rgba(134, 239, 172, 0.35) !important;
}
html.envisage #oj-cl-list .oj-cl-card--paused {
  background: linear-gradient(145deg, #2a2830 0%, #1a2438 100%) !important;
  border-color: rgba(168, 162, 158, 0.35) !important;
}

html.envisage #oj-cl-list .oj-cl-card .oj-cl-title { color: #f4f7fc !important; }
html.envisage #oj-cl-list .oj-cl-card .oj-cl-summary { color: #d4deee !important; }
html.envisage #oj-cl-list .oj-cl-card .oj-cl-body p { color: #c8d6ea !important; }
html.envisage #oj-cl-list .oj-cl-card .oj-cl-area { color: #c4b5fd !important; }
html.envisage #oj-cl-list .oj-cl-card .oj-cl-date { color: #e8eef8 !important; }
html.envisage #oj-cl-list .oj-cl-card .oj-cl-dot { color: #8fa8c4 !important; }
html.envisage #oj-cl-list .oj-cl-card .oj-cl-kind-pill {
  background: rgba(28, 39, 64, 0.9) !important;
  border-color: rgba(148, 190, 230, 0.28) !important;
  color: #f4f7fc !important;
}
html.envisage #oj-cl-list .oj-cl-card .oj-cl-unknown {
  background: rgba(120, 53, 15, 0.5) !important;
  border-color: rgba(251, 191, 36, 0.45) !important;
  color: #fef3c7 !important;
}
html.envisage #oj-cl-list .oj-cl-card .oj-cl-highlights {
  background: rgba(28, 39, 64, 0.65) !important;
  border-color: rgba(148, 190, 230, 0.18) !important;
}
html.envisage #oj-cl-list .oj-cl-card .oj-cl-highlights-label { color: #8fa8c4 !important; }
html.envisage #oj-cl-list .oj-cl-card .oj-cl-highlights li { color: #d4deee !important; }
html.envisage #oj-cl-list .oj-cl-card .oj-cl-tag {
  background: rgba(76, 29, 149, 0.4) !important;
  border-color: rgba(167, 139, 250, 0.35) !important;
  color: #ede9fe !important;
}
html.envisage #oj-cl-list .oj-cl-card .oj-cl-divider {
  border-color: rgba(148, 190, 230, 0.16) !important;
}
html.envisage #oj-cl-list .oj-cl-card .oj-cl-aud-admin {
  background: rgba(53, 72, 100, 0.75) !important;
  color: #e8eef8 !important;
  border-color: rgba(148, 190, 230, 0.22) !important;
}
html.envisage #oj-cl-list .oj-cl-card .oj-cl-aud-tradie {
  background: rgba(6, 78, 59, 0.5) !important;
  color: #a7f3d0 !important;
  border-color: rgba(52, 211, 153, 0.35) !important;
}
html.envisage #oj-cl-list .oj-cl-card .oj-cl-aud-customer {
  background: rgba(12, 74, 110, 0.5) !important;
  color: #bae6fd !important;
  border-color: rgba(56, 189, 248, 0.35) !important;
}

/* Empty / loading states on dark themes */
html.dark #oj-cl-list > p,
html.envisage #oj-cl-list > p {
  color: #cbd5e1 !important;
  background: rgba(30, 41, 59, 0.85) !important;
  border-color: #475569 !important;
}

/* ---------- Clinic theme (medical-esque clinical wash) ---------- */
/* ================================================================
   Purple / Fuchsia (Careers look) - platform default
   Soft lilac wash, fuchsia accent, white cards
   ================================================================ */
html.fuchsia,
html[data-oj-theme="fuchsia"] {
  --fuchsia-surface: #f1e7f6;
  --fuchsia-card: #ffffff;
  --fuchsia-border: #e9d5ff;
  --fuchsia-ink: #0f172a;
  --fuchsia-muted: #64748b;
  --fuchsia-accent: #c026d3;
  color-scheme: light;
}
html.fuchsia body,
html[data-oj-theme="fuchsia"] body {
  background:
    radial-gradient(1000px 520px at 0% 0%, rgba(192, 38, 211, 0.14), transparent 52%),
    radial-gradient(800px 480px at 100% 10%, rgba(232, 121, 249, 0.12), transparent 50%),
    linear-gradient(168deg, #f5e9fb 0%, #faf5ff 42%, #f1e7f6 100%) !important;
  color: var(--fuchsia-ink);
}
html.fuchsia body.bg-slate-50,
html.fuchsia body.bg-slate-100,
html[data-oj-theme="fuchsia"] body.bg-slate-50,
html[data-oj-theme="fuchsia"] body.bg-slate-100 {
  background:
    radial-gradient(1000px 520px at 0% 0%, rgba(192, 38, 211, 0.14), transparent 52%),
    linear-gradient(168deg, #f5e9fb 0%, #f1e7f6 100%) !important;
}
html.fuchsia .bg-white,
html[data-oj-theme="fuchsia"] .bg-white {
  background-color: var(--fuchsia-card) !important;
}
html.fuchsia .bg-slate-50,
html[data-oj-theme="fuchsia"] .bg-slate-50 {
  background-color: #f3e8ff !important;
}
html.fuchsia .bg-slate-100,
html[data-oj-theme="fuchsia"] .bg-slate-100 {
  background-color: #ede4f7 !important;
}
html.fuchsia .border-slate-100,
html.fuchsia .border-slate-200,
html[data-oj-theme="fuchsia"] .border-slate-100,
html[data-oj-theme="fuchsia"] .border-slate-200 {
  border-color: var(--fuchsia-border) !important;
}
html.fuchsia .text-slate-900,
html.fuchsia .text-slate-800,
html[data-oj-theme="fuchsia"] .text-slate-900,
html[data-oj-theme="fuchsia"] .text-slate-800 {
  color: #0f172a !important;
}
html.fuchsia .text-slate-700,
html[data-oj-theme="fuchsia"] .text-slate-700 {
  color: #1e293b !important;
}
html.fuchsia .text-slate-600,
html.fuchsia .text-slate-500,
html[data-oj-theme="fuchsia"] .text-slate-600,
html[data-oj-theme="fuchsia"] .text-slate-500 {
  color: var(--fuchsia-muted) !important;
}
html.fuchsia .rounded-2xl.bg-white,
html.fuchsia .rounded-xl.bg-white,
html.fuchsia .rounded-3xl.bg-white,
html[data-oj-theme="fuchsia"] .rounded-2xl.bg-white,
html[data-oj-theme="fuchsia"] .rounded-xl.bg-white,
html[data-oj-theme="fuchsia"] .rounded-3xl.bg-white {
  background: linear-gradient(180deg, #ffffff 0%, #fdf4ff 100%) !important;
  border-color: var(--fuchsia-border);
  box-shadow: 0 12px 28px -18px rgba(112, 26, 117, 0.22);
}
html.fuchsia .shadow-sm,
html.fuchsia .shadow,
html.fuchsia .shadow-md,
html[data-oj-theme="fuchsia"] .shadow-sm,
html[data-oj-theme="fuchsia"] .shadow,
html[data-oj-theme="fuchsia"] .shadow-md {
  --tw-shadow-color: rgb(112 26 117 / 0.12);
}
html.fuchsia .sidebar,
html.fuchsia #sidebar,
html[data-oj-theme="fuchsia"] .sidebar,
html[data-oj-theme="fuchsia"] #sidebar {
  background: linear-gradient(180deg, var(--oj-sidebar-bg) 0%, var(--oj-sidebar-bg-end) 100%) !important;
  border-color: var(--oj-sidebar-border) !important;
}
html.fuchsia .nav-link.active,
html[data-oj-theme="fuchsia"] .nav-link.active {
  box-shadow: inset 3px 0 0 var(--oj-nav-accent, #c026d3);
  background-color: var(--oj-sidebar-active) !important;
}
html.fuchsia * ,
html[data-oj-theme="fuchsia"] * {
  scrollbar-width: thin;
  scrollbar-color: #e879f9 transparent;
}
html.fuchsia[data-oj-contrast="high"] body,
html[data-oj-theme="fuchsia"][data-oj-contrast="high"] body {
  background: #e9d5ff !important;
}

/* ========== At a glance - Purple / Fuchsia ==========
 * oj-noc-mode forces a plain slate wash; re-assert the lilac aurora +
 * purple card tokens so the board matches the rest of admin Purple.
 */
html.fuchsia body.oj-noc-mode,
html.fuchsia body.oj-noc-mode #admin-main-shell,
html[data-oj-theme="fuchsia"] body.oj-noc-mode,
html[data-oj-theme="fuchsia"] body.oj-noc-mode #admin-main-shell {
  background:
    radial-gradient(1000px 520px at 0% 0%, rgba(192, 38, 211, 0.16), transparent 52%),
    radial-gradient(800px 480px at 100% 10%, rgba(232, 121, 249, 0.14), transparent 50%),
    linear-gradient(168deg, #f5e9fb 0%, #faf5ff 42%, #f1e7f6 100%) !important;
}

html.fuchsia .oj-glance,
html[data-oj-theme="fuchsia"] .oj-glance {
  color: #4a2858;
  --glance-card: #ffffff;
  --glance-card-border: #e9d5ff;
  --glance-muted: #7c5a8a;
  --glance-ink: #1a0b24;
  --glance-soft: #f3e8ff;
  --glance-shadow:
    0 12px 28px -18px rgba(112, 26, 117, 0.24),
    0 0 0 1px rgba(232, 121, 249, 0.08);
  --glance-accent: var(--oj-header-accent, var(--oj-nav-accent, #c026d3));
}

html.fuchsia .oj-glance-kpi,
html.fuchsia .oj-glance-queue,
html.fuchsia .oj-glance-today,
html.fuchsia .oj-glance-panel,
html.fuchsia .oj-glance-today-cell,
html.fuchsia .oj-glance-stat,
html.fuchsia .oj-glance-svc-chip,
html.fuchsia .oj-glance-today-block,
html.fuchsia .oj-glance-chart-card,
html[data-oj-theme="fuchsia"] .oj-glance-kpi,
html[data-oj-theme="fuchsia"] .oj-glance-queue,
html[data-oj-theme="fuchsia"] .oj-glance-today,
html[data-oj-theme="fuchsia"] .oj-glance-panel,
html[data-oj-theme="fuchsia"] .oj-glance-today-cell,
html[data-oj-theme="fuchsia"] .oj-glance-stat,
html[data-oj-theme="fuchsia"] .oj-glance-svc-chip,
html[data-oj-theme="fuchsia"] .oj-glance-today-block,
html[data-oj-theme="fuchsia"] .oj-glance-chart-card {
  background:
    radial-gradient(280px 100px at 0% 0%, color-mix(in srgb, var(--glance-accent, #c026d3) 10%, transparent), transparent 70%),
    linear-gradient(180deg, #ffffff 0%, #fdf4ff 100%);
  border-color: var(--glance-card-border);
  box-shadow: var(--glance-shadow);
  color: var(--glance-ink);
}

html.fuchsia .oj-glance-today-charts .oj-glance-chart-card,
html.fuchsia .oj-glance-today-block,
html[data-oj-theme="fuchsia"] .oj-glance-today-charts .oj-glance-chart-card,
html[data-oj-theme="fuchsia"] .oj-glance-today-block {
  background: var(--glance-soft);
  box-shadow: none;
}

html.fuchsia .oj-glance-today-block .oj-glance-stat,
html[data-oj-theme="fuchsia"] .oj-glance-today-block .oj-glance-stat {
  background: var(--glance-card);
}

html.fuchsia .oj-glance-hero,
html[data-oj-theme="fuchsia"] .oj-glance-hero {
  background:
    radial-gradient(900px 280px at 8% -30%, color-mix(in srgb, var(--glance-accent, #c026d3) 32%, transparent), transparent 55%),
    radial-gradient(600px 200px at 95% 0%, rgba(232, 121, 249, 0.22), transparent 50%),
    linear-gradient(145deg, #1a0b24 0%, #2a1238 48%, #1a0b24 100%) !important;
  border: 1px solid rgba(232, 121, 249, 0.28);
  box-shadow:
    0 16px 36px -18px rgba(88, 28, 135, 0.45),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
}

html.fuchsia .oj-glance-kpi-label,
html.fuchsia .oj-glance-kpi-hint,
html.fuchsia .oj-glance-svc-state,
html.fuchsia .oj-glance-svc-meta,
html[data-oj-theme="fuchsia"] .oj-glance-kpi-label,
html[data-oj-theme="fuchsia"] .oj-glance-kpi-hint,
html[data-oj-theme="fuchsia"] .oj-glance-svc-state,
html[data-oj-theme="fuchsia"] .oj-glance-svc-meta {
  color: var(--glance-muted);
}

html.fuchsia .oj-glance-kpi-value,
html.fuchsia .oj-glance-svc-name,
html[data-oj-theme="fuchsia"] .oj-glance-kpi-value,
html[data-oj-theme="fuchsia"] .oj-glance-svc-name {
  color: var(--glance-ink);
}

html.fuchsia .oj-glance-svc-chip.is-on .oj-glance-svc-state,
html[data-oj-theme="fuchsia"] .oj-glance-svc-chip.is-on .oj-glance-svc-state {
  color: #059669;
}
html.fuchsia .oj-glance-svc-chip.is-warn .oj-glance-svc-state,
html[data-oj-theme="fuchsia"] .oj-glance-svc-chip.is-warn .oj-glance-svc-state {
  color: #d97706;
}

html.fuchsia .oj-glance-today-delta.up,
html[data-oj-theme="fuchsia"] .oj-glance-today-delta.up { color: #059669; }
html.fuchsia .oj-glance-today-delta.down,
html[data-oj-theme="fuchsia"] .oj-glance-today-delta.down { color: #e11d48; }

html.fuchsia .oj-glance-queue.is-hot .oj-glance-queue-num,
html[data-oj-theme="fuchsia"] .oj-glance-queue.is-hot .oj-glance-queue-num {
  color: color-mix(in srgb, var(--glance-accent, #c026d3) 55%, #f43f5e);
}

html.fuchsia .oj-glance-kpi--violet::before,
html[data-oj-theme="fuchsia"] .oj-glance-kpi--violet::before {
  background: #c026d3;
}

html.clinic {
  --clinic-surface: #e8f4f2;
  --clinic-card: #f7fbfa;
  --clinic-border: #b7d9d4;
  --clinic-ink: #0c1f24;
  --clinic-muted: #4a6b72;
  color-scheme: light;
}
html.clinic body {
  background:
    radial-gradient(900px 480px at 100% 0%, rgba(15, 118, 110, 0.1), transparent 55%),
    radial-gradient(700px 420px at 0% 40%, rgba(45, 212, 191, 0.08), transparent 50%),
    linear-gradient(168deg, #e4f2ef 0%, #eef7f5 45%, #e8f4f2 100%) !important;
  color: var(--clinic-ink);
}
html.clinic body.bg-slate-50,
html.clinic body.bg-slate-100 {
  background:
    radial-gradient(900px 480px at 100% 0%, rgba(15, 118, 110, 0.1), transparent 55%),
    linear-gradient(168deg, #e4f2ef 0%, #eef7f5 100%) !important;
}
html.clinic .bg-white {
  background-color: var(--clinic-card) !important;
}
html.clinic .bg-slate-50 {
  background-color: #e4f0ee !important;
}
html.clinic .bg-slate-100 {
  background-color: #d9ebe8 !important;
}
html.clinic .border-slate-100,
html.clinic .border-slate-200 {
  border-color: var(--clinic-border) !important;
}
html.clinic .text-slate-900,
html.clinic .text-slate-800 { color: #0c1f24 !important; }
html.clinic .text-slate-700 { color: #14333a !important; }
html.clinic .text-slate-600,
html.clinic .text-slate-500 { color: var(--clinic-muted) !important; }
html.clinic .rounded-2xl.bg-white,
html.clinic .rounded-xl.bg-white,
html.clinic .rounded-3xl.bg-white {
  background: linear-gradient(180deg, #ffffff 0%, var(--clinic-card) 100%) !important;
  border-color: var(--clinic-border);
  box-shadow: 0 12px 28px -18px rgba(12, 61, 66, 0.22);
}
html.clinic .shadow-sm,
html.clinic .shadow,
html.clinic .shadow-md {
  --tw-shadow-color: rgb(12 61 66 / 0.12);
}
html.clinic * {
  scrollbar-width: thin;
  scrollbar-color: #5eead4 transparent;
}
html.clinic[data-oj-contrast="high"] body {
  background: #d5ebe7 !important;
}

/* ---------- Sand (warm parchment) ---------- */
html.sand,
html[data-oj-theme="sand"] {
  --sand-surface: #f6efe4;
  --sand-card: #fffaf3;
  --sand-border: #e8d5b8;
  --sand-ink: #1c1410;
  --sand-muted: #7c6a55;
  color-scheme: light;
}
html.sand body,
html[data-oj-theme="sand"] body {
  background:
    radial-gradient(900px 480px at 0% 0%, rgba(245, 158, 11, 0.14), transparent 55%),
    radial-gradient(700px 420px at 100% 20%, rgba(251, 191, 36, 0.1), transparent 50%),
    linear-gradient(168deg, #f8f0e4 0%, #faf6ef 45%, #f3e8d6 100%) !important;
  color: var(--sand-ink);
}
html.sand body.bg-slate-50,
html.sand body.bg-slate-100,
html[data-oj-theme="sand"] body.bg-slate-50,
html[data-oj-theme="sand"] body.bg-slate-100 {
  background:
    radial-gradient(900px 480px at 0% 0%, rgba(245, 158, 11, 0.12), transparent 55%),
    linear-gradient(168deg, #f8f0e4 0%, #f3e8d6 100%) !important;
}
html.sand .bg-white,
html[data-oj-theme="sand"] .bg-white {
  background-color: var(--sand-card) !important;
}
html.sand .bg-slate-50,
html[data-oj-theme="sand"] .bg-slate-50 {
  background-color: #f3e9da !important;
}
html.sand .bg-slate-100,
html[data-oj-theme="sand"] .bg-slate-100 {
  background-color: #eadfce !important;
}
html.sand .border-slate-100,
html.sand .border-slate-200,
html[data-oj-theme="sand"] .border-slate-100,
html[data-oj-theme="sand"] .border-slate-200 {
  border-color: var(--sand-border) !important;
}
html.sand .text-slate-900,
html.sand .text-slate-800,
html[data-oj-theme="sand"] .text-slate-900,
html[data-oj-theme="sand"] .text-slate-800 { color: #1c1410 !important; }
html.sand .text-slate-700,
html[data-oj-theme="sand"] .text-slate-700 { color: #3d2f24 !important; }
html.sand .text-slate-600,
html.sand .text-slate-500,
html[data-oj-theme="sand"] .text-slate-600,
html[data-oj-theme="sand"] .text-slate-500 { color: var(--sand-muted) !important; }
html.sand .rounded-2xl.bg-white,
html.sand .rounded-xl.bg-white,
html.sand .rounded-3xl.bg-white,
html[data-oj-theme="sand"] .rounded-2xl.bg-white,
html[data-oj-theme="sand"] .rounded-xl.bg-white,
html[data-oj-theme="sand"] .rounded-3xl.bg-white {
  background: linear-gradient(180deg, #fffefb 0%, var(--sand-card) 100%) !important;
  border-color: var(--sand-border);
  box-shadow: 0 12px 28px -18px rgba(120, 80, 20, 0.22);
}
html.sand .shadow-sm,
html.sand .shadow,
html.sand .shadow-md,
html[data-oj-theme="sand"] .shadow-sm,
html[data-oj-theme="sand"] .shadow,
html[data-oj-theme="sand"] .shadow-md {
  --tw-shadow-color: rgb(120 80 20 / 0.12);
}
html.sand *,
html[data-oj-theme="sand"] * {
  scrollbar-width: thin;
  scrollbar-color: #d97706 transparent;
}
html.sand[data-oj-contrast="high"] body,
html[data-oj-theme="sand"][data-oj-contrast="high"] body {
  background: #e8dcc8 !important;
}

/* ---------- Ocean (cool blue wash) ---------- */
html.ocean,
html[data-oj-theme="ocean"] {
  --ocean-surface: #e8f4fc;
  --ocean-card: #f5fbff;
  --ocean-border: #b6d9f0;
  --ocean-ink: #0b1e2e;
  --ocean-muted: #4a6b82;
  color-scheme: light;
}
html.ocean body,
html[data-oj-theme="ocean"] body {
  background:
    radial-gradient(900px 480px at 100% 0%, rgba(14, 165, 233, 0.14), transparent 55%),
    radial-gradient(700px 420px at 0% 40%, rgba(56, 189, 248, 0.1), transparent 50%),
    linear-gradient(168deg, #e4f1fb 0%, #eef7fc 45%, #e8f4fc 100%) !important;
  color: var(--ocean-ink);
}
html.ocean body.bg-slate-50,
html.ocean body.bg-slate-100,
html[data-oj-theme="ocean"] body.bg-slate-50,
html[data-oj-theme="ocean"] body.bg-slate-100 {
  background:
    radial-gradient(900px 480px at 100% 0%, rgba(14, 165, 233, 0.12), transparent 55%),
    linear-gradient(168deg, #e4f1fb 0%, #e8f4fc 100%) !important;
}
html.ocean .bg-white,
html[data-oj-theme="ocean"] .bg-white {
  background-color: var(--ocean-card) !important;
}
html.ocean .bg-slate-50,
html[data-oj-theme="ocean"] .bg-slate-50 {
  background-color: #e2f0fa !important;
}
html.ocean .bg-slate-100,
html[data-oj-theme="ocean"] .bg-slate-100 {
  background-color: #d4e8f5 !important;
}
html.ocean .border-slate-100,
html.ocean .border-slate-200,
html[data-oj-theme="ocean"] .border-slate-100,
html[data-oj-theme="ocean"] .border-slate-200 {
  border-color: var(--ocean-border) !important;
}
html.ocean .text-slate-900,
html.ocean .text-slate-800,
html[data-oj-theme="ocean"] .text-slate-900,
html[data-oj-theme="ocean"] .text-slate-800 { color: #0b1e2e !important; }
html.ocean .text-slate-700,
html[data-oj-theme="ocean"] .text-slate-700 { color: #16344a !important; }
html.ocean .text-slate-600,
html.ocean .text-slate-500,
html[data-oj-theme="ocean"] .text-slate-600,
html[data-oj-theme="ocean"] .text-slate-500 { color: var(--ocean-muted) !important; }
html.ocean .rounded-2xl.bg-white,
html.ocean .rounded-xl.bg-white,
html.ocean .rounded-3xl.bg-white,
html[data-oj-theme="ocean"] .rounded-2xl.bg-white,
html[data-oj-theme="ocean"] .rounded-xl.bg-white,
html[data-oj-theme="ocean"] .rounded-3xl.bg-white {
  background: linear-gradient(180deg, #ffffff 0%, var(--ocean-card) 100%) !important;
  border-color: var(--ocean-border);
  box-shadow: 0 12px 28px -18px rgba(12, 74, 110, 0.22);
}
html.ocean .shadow-sm,
html.ocean .shadow,
html.ocean .shadow-md,
html[data-oj-theme="ocean"] .shadow-sm,
html[data-oj-theme="ocean"] .shadow,
html[data-oj-theme="ocean"] .shadow-md {
  --tw-shadow-color: rgb(12 74 110 / 0.12);
}
html.ocean *,
html[data-oj-theme="ocean"] * {
  scrollbar-width: thin;
  scrollbar-color: #38bdf8 transparent;
}
html.ocean[data-oj-contrast="high"] body,
html[data-oj-theme="ocean"][data-oj-contrast="high"] body {
  background: #d0e8f6 !important;
}

/* ---------- Nebula (cosmic violet / creativity & vision) ---------- */
html.nebula,
html[data-oj-theme="nebula"] {
  --nebula-surface: #efe8fb;
  --nebula-card: #faf7ff;
  --nebula-border: #d8c8f5;
  --nebula-ink: #1a1030;
  --nebula-muted: #6b5b85;
  color-scheme: light;
}
html.nebula body,
html[data-oj-theme="nebula"] body {
  background:
    radial-gradient(1000px 520px at 0% 0%, rgba(139, 92, 246, 0.2), transparent 52%),
    radial-gradient(800px 480px at 100% 8%, rgba(236, 72, 153, 0.14), transparent 50%),
    radial-gradient(600px 400px at 50% 100%, rgba(56, 189, 248, 0.08), transparent 55%),
    linear-gradient(168deg, #ebe4fa 0%, #f5f0ff 42%, #efe8fb 100%) !important;
  color: var(--nebula-ink);
}
html.nebula body.bg-slate-50,
html.nebula body.bg-slate-100,
html[data-oj-theme="nebula"] body.bg-slate-50,
html[data-oj-theme="nebula"] body.bg-slate-100 {
  background:
    radial-gradient(1000px 520px at 0% 0%, rgba(139, 92, 246, 0.18), transparent 52%),
    linear-gradient(168deg, #ebe4fa 0%, #efe8fb 100%) !important;
}
html.nebula .bg-white,
html[data-oj-theme="nebula"] .bg-white {
  background-color: var(--nebula-card) !important;
}
html.nebula .bg-slate-50,
html[data-oj-theme="nebula"] .bg-slate-50 {
  background-color: #ebe3f8 !important;
}
html.nebula .bg-slate-100,
html[data-oj-theme="nebula"] .bg-slate-100 {
  background-color: #e0d6f2 !important;
}
html.nebula .border-slate-100,
html.nebula .border-slate-200,
html[data-oj-theme="nebula"] .border-slate-100,
html[data-oj-theme="nebula"] .border-slate-200 {
  border-color: var(--nebula-border) !important;
}
html.nebula .text-slate-900,
html.nebula .text-slate-800,
html[data-oj-theme="nebula"] .text-slate-900,
html[data-oj-theme="nebula"] .text-slate-800 { color: #1a1030 !important; }
html.nebula .text-slate-700,
html[data-oj-theme="nebula"] .text-slate-700 { color: #2e1f4a !important; }
html.nebula .text-slate-600,
html.nebula .text-slate-500,
html[data-oj-theme="nebula"] .text-slate-600,
html[data-oj-theme="nebula"] .text-slate-500 { color: var(--nebula-muted) !important; }
html.nebula .rounded-2xl.bg-white,
html.nebula .rounded-xl.bg-white,
html.nebula .rounded-3xl.bg-white,
html[data-oj-theme="nebula"] .rounded-2xl.bg-white,
html[data-oj-theme="nebula"] .rounded-xl.bg-white,
html[data-oj-theme="nebula"] .rounded-3xl.bg-white {
  background: linear-gradient(180deg, #ffffff 0%, var(--nebula-card) 100%) !important;
  border-color: var(--nebula-border);
  box-shadow: 0 12px 28px -18px rgba(91, 33, 182, 0.28);
}
html.nebula .shadow-sm,
html.nebula .shadow,
html.nebula .shadow-md,
html[data-oj-theme="nebula"] .shadow-sm,
html[data-oj-theme="nebula"] .shadow,
html[data-oj-theme="nebula"] .shadow-md {
  --tw-shadow-color: rgb(91 33 182 / 0.14);
}
html.nebula *,
html[data-oj-theme="nebula"] * {
  scrollbar-width: thin;
  scrollbar-color: #a78bfa transparent;
}
html.nebula[data-oj-contrast="high"] body,
html[data-oj-theme="nebula"][data-oj-contrast="high"] body {
  background: #ddd2f5 !important;
}

/* ---------- Graphite (cool charcoal mid-dark) ---------- */
html.graphite,
html[data-oj-theme="graphite"] {
  --graphite-surface: #1a2332;
  --graphite-card: #232d3f;
  --graphite-border: #3d4b63;
  --graphite-ink: #e8eef7;
  --graphite-muted: #94a3b8;
  color-scheme: dark;
}
html.graphite body,
html[data-oj-theme="graphite"] body {
  background:
    radial-gradient(900px 480px at 20% 0%, rgba(100, 116, 139, 0.16), transparent 55%),
    linear-gradient(168deg, #151c28 0%, #1a2332 50%, #121820 100%) !important;
  color: var(--graphite-ink);
}
html.graphite body.bg-slate-50,
html.graphite body.bg-slate-100,
html[data-oj-theme="graphite"] body.bg-slate-50,
html[data-oj-theme="graphite"] body.bg-slate-100 {
  background: linear-gradient(168deg, #151c28 0%, #1a2332 100%) !important;
}
html.graphite .bg-white,
html[data-oj-theme="graphite"] .bg-white {
  background-color: var(--graphite-card) !important;
}
html.graphite .bg-slate-50,
html[data-oj-theme="graphite"] .bg-slate-50 {
  background-color: #1e2838 !important;
}
html.graphite .bg-slate-100,
html[data-oj-theme="graphite"] .bg-slate-100 {
  background-color: #252f42 !important;
}
html.graphite .border-slate-100,
html.graphite .border-slate-200,
html[data-oj-theme="graphite"] .border-slate-100,
html[data-oj-theme="graphite"] .border-slate-200 {
  border-color: var(--graphite-border) !important;
}
html.graphite .text-slate-900,
html.graphite .text-slate-800,
html[data-oj-theme="graphite"] .text-slate-900,
html[data-oj-theme="graphite"] .text-slate-800 { color: #f1f5f9 !important; }
html.graphite .text-slate-700,
html[data-oj-theme="graphite"] .text-slate-700 { color: #e2e8f0 !important; }
html.graphite .text-slate-600,
html.graphite .text-slate-500,
html[data-oj-theme="graphite"] .text-slate-600,
html[data-oj-theme="graphite"] .text-slate-500 { color: var(--graphite-muted) !important; }
html.graphite .text-slate-400,
html[data-oj-theme="graphite"] .text-slate-400 { color: #94a3b8 !important; }
html.graphite .rounded-2xl.bg-white,
html.graphite .rounded-xl.bg-white,
html.graphite .rounded-3xl.bg-white,
html[data-oj-theme="graphite"] .rounded-2xl.bg-white,
html[data-oj-theme="graphite"] .rounded-xl.bg-white,
html[data-oj-theme="graphite"] .rounded-3xl.bg-white {
  background: linear-gradient(180deg, #2a3548 0%, var(--graphite-card) 100%) !important;
  border-color: var(--graphite-border);
  box-shadow: 0 12px 28px -18px rgba(0, 0, 0, 0.45);
}
html.graphite .shadow-sm,
html.graphite .shadow,
html.graphite .shadow-md,
html[data-oj-theme="graphite"] .shadow-sm,
html[data-oj-theme="graphite"] .shadow,
html[data-oj-theme="graphite"] .shadow-md {
  --tw-shadow-color: rgb(0 0 0 / 0.35);
}
html.graphite input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
html.graphite select,
html.graphite textarea,
html[data-oj-theme="graphite"] input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
html[data-oj-theme="graphite"] select,
html[data-oj-theme="graphite"] textarea {
  background-color: #1a2332 !important;
  border-color: #3d4b63 !important;
  color: #e8eef7 !important;
}
html.graphite *,
html[data-oj-theme="graphite"] * {
  scrollbar-width: thin;
  scrollbar-color: #64748b transparent;
}
html.graphite[data-oj-contrast="high"] body,
html[data-oj-theme="graphite"][data-oj-contrast="high"] body {
  background: #0f141c !important;
}

/* ================================================================
   Campaigns & billing (admin) - theme-safe cards (light + envisage + dark)
   ================================================================ */
.camp-admin { color: inherit; }
.camp-panel {
  border: 1px solid #e2e8f0;
  background: #fff;
  color: #0f172a;
}
.camp-stat {
  border-radius: 1rem;
  border: 1px solid #e2e8f0;
  background: #fff;
  padding: 0.65rem 0.75rem;
  text-align: center;
}
.camp-stat-n { font-size: 1.25rem; font-weight: 800; color: #0f172a; }
.camp-stat-l { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; color: #94a3b8; }

.camp-tab {
  padding: 0.4rem 0.75rem;
  border-radius: 999px;
  border: 1px solid #e2e8f0;
  background: #fff;
  color: #334155;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}
.camp-tab.is-active {
  border-color: #7dd3fc;
  background: #e0f2fe;
  color: #0c4a6e;
}
.camp-tab:hover { filter: brightness(1.03); }

.camp-banner--live {
  border: 1px solid rgba(16, 185, 129, 0.45);
  background: linear-gradient(135deg, rgba(6, 95, 70, 0.12), rgba(16, 185, 129, 0.08));
  color: #064e3b;
}
.camp-banner--idle {
  border: 1px solid #e2e8f0;
  background: #f8fafc;
  color: #334155;
}
.camp-banner-sub { display: block; font-size: 12px; margin-top: 0.25rem; opacity: 0.9; }
.camp-banner-warn { display: block; font-size: 12px; margin-top: 0.25rem; font-weight: 700; color: #92400e; }

.camp-callout {
  border-radius: 1rem;
  border: 1px solid #e2e8f0;
  padding: 0.9rem 1rem;
  background: #f8fafc;
  color: #334155;
}
.camp-callout--warn {
  border-color: rgba(245, 158, 11, 0.45);
  background: linear-gradient(135deg, rgba(120, 53, 15, 0.08), rgba(245, 158, 11, 0.06));
}
.camp-callout--agency {
  border-color: rgba(14, 165, 233, 0.35);
  background: linear-gradient(135deg, rgba(12, 74, 110, 0.06), rgba(56, 189, 248, 0.05));
}
.camp-callout-title { font-size: 0.875rem; font-weight: 800; color: #0f172a; }
.camp-callout-body { font-size: 12px; margin-top: 0.35rem; line-height: 1.5; color: #475569; }
.camp-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
  cursor: pointer;
  user-select: none;
  border-radius: 0.75rem;
  border: 1px solid #e2e8f0;
  background: #fff;
  padding: 0.5rem 0.75rem;
  font-size: 12px;
  font-weight: 700;
  color: #0f172a;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.camp-h3 { font-weight: 800; color: #0f172a; margin-bottom: 0.25rem; }
.camp-lead { font-size: 12px; color: #64748b; margin-bottom: 1rem; line-height: 1.5; }
.camp-foot { font-size: 11px; color: #94a3b8; }
.camp-empty { font-size: 0.875rem; color: #94a3b8; }
.camp-link {
  font-weight: 800;
  color: #0284c7;
  text-decoration: underline;
  background: none;
  border: 0;
  cursor: pointer;
  padding: 0;
  font-size: inherit;
}

.camp-card {
  border-radius: 1rem;
  border: 1px solid #e2e8f0;
  padding: 1rem;
  background: #f8fafc;
}
.camp-card--trades {
  border-color: rgba(14, 165, 233, 0.35);
  background: linear-gradient(145deg, rgba(224, 242, 254, 0.85), rgba(248, 250, 252, 0.95));
}
.camp-card--medical {
  border-color: rgba(20, 184, 166, 0.35);
  background: linear-gradient(145deg, rgba(204, 251, 241, 0.75), rgba(248, 250, 252, 0.95));
}
.camp-card--legal {
  border-color: rgba(99, 102, 241, 0.35);
  background: linear-gradient(145deg, rgba(224, 231, 255, 0.8), rgba(248, 250, 252, 0.95));
}
.camp-card--agency {
  border-color: rgba(56, 189, 248, 0.4);
  background: linear-gradient(145deg, rgba(224, 242, 254, 0.7), rgba(248, 250, 252, 0.95));
}
.camp-card-title {
  font-size: 0.875rem;
  font-weight: 800;
  color: #0f172a;
  margin-bottom: 0.5rem;
}
.camp-card-note {
  font-size: 11px;
  color: #475569;
  margin-bottom: 0.75rem;
  line-height: 1.45;
}
.camp-card-foot {
  font-size: 11px;
  color: #64748b;
  margin-top: 0.75rem;
}
.camp-label {
  display: block;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #64748b;
}
.camp-input {
  margin-top: 0.25rem;
  width: 100%;
  border-radius: 0.75rem;
  border: 1px solid #e2e8f0;
  padding: 0.5rem 0.75rem;
  font-family: ui-monospace, monospace;
  font-weight: 700;
  background: #fff;
  color: #0f172a;
}

.camp-btn-primary {
  display: inline-flex;
  align-items: center;
  padding: 0.6rem 1rem;
  border-radius: 1rem;
  background: #0f172a;
  color: #fff;
  font-size: 0.875rem;
  font-weight: 800;
  border: 0;
  cursor: pointer;
}
.camp-btn-primary:hover { filter: brightness(1.08); }
.camp-btn-accent {
  display: inline-flex;
  align-items: center;
  padding: 0.5rem 0.75rem;
  border-radius: 0.75rem;
  background: #0284c7;
  color: #fff;
  font-size: 12px;
  font-weight: 800;
  border: 0;
  cursor: pointer;
}
.camp-btn-accent:hover { background: #0369a1; }
.camp-btn-ghost {
  display: inline-flex;
  align-items: center;
  padding: 0.5rem 0.85rem;
  border-radius: 0.75rem;
  background: #fff;
  color: #0f172a;
  font-size: 12px;
  font-weight: 800;
  border: 1px solid #e2e8f0;
  cursor: pointer;
}
.camp-btn-ghost:hover { background: #f8fafc; }

.camp-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  border-radius: 1rem;
  border: 1px solid #e2e8f0;
  background: #fff;
  padding: 0.65rem 0.75rem;
}
.camp-row-title {
  font-weight: 800;
  color: #0f172a;
  font-size: 0.875rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.camp-row-slug {
  font-size: 10px;
  font-family: ui-monospace, monospace;
  font-weight: 500;
  color: #94a3b8;
}
.camp-row-meta { font-size: 11px; color: #64748b; margin-top: 0.15rem; }
.camp-chip {
  font-size: 12px;
  font-weight: 800;
  padding: 0.25rem 0.5rem;
  border-radius: 0.5rem;
  border: 1px solid #e2e8f0;
  background: #fff;
  color: #334155;
  cursor: pointer;
}
.camp-chip--go { background: #059669; border-color: #059669; color: #fff; }
.camp-chip--pay { border-color: rgba(139, 92, 246, 0.4); color: #6d28d9; background: rgba(139, 92, 246, 0.06); }
.camp-chip--danger { border-color: rgba(248, 113, 113, 0.45); color: #b91c1c; background: rgba(254, 226, 226, 0.5); }

.camp-badge {
  display: inline-flex;
  padding: 0.15rem 0.5rem;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 800;
}
.camp-badge--live { background: #d1fae5; color: #065f46; }
.camp-badge--sched { background: #e0f2fe; color: #075985; }
.camp-badge--ended { background: #f1f5f9; color: #475569; }
.camp-badge--draft { background: #e2e8f0; color: #334155; }

.camp-editor {
  border-radius: 1rem;
  border: 1px solid rgba(14, 165, 233, 0.35);
  background: linear-gradient(145deg, rgba(224, 242, 254, 0.55), #fff);
}
.camp-editor-tip {
  font-size: 12px;
  border-radius: 0.75rem;
  border: 1px solid rgba(14, 165, 233, 0.25);
  background: rgba(255, 255, 255, 0.7);
  color: #0c4a6e;
  padding: 0.5rem 0.75rem;
  margin-bottom: 0.5rem;
}

/* �� Envisage: steel cards, cool accents, no sick pastels �� */
html.envisage .camp-panel {
  background: var(--env-surface) !important;
  border-color: var(--env-border) !important;
  color: var(--env-text);
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.22);
}
html.envisage .camp-stat {
  background: var(--env-soft) !important;
  border-color: var(--env-border) !important;
}
html.envisage .camp-stat-n { color: var(--env-text) !important; }
html.envisage .camp-stat-l { color: var(--env-muted) !important; }

html.envisage .camp-tab {
  background: var(--env-soft) !important;
  border-color: var(--env-border) !important;
  color: var(--env-text-soft) !important;
}
html.envisage .camp-tab.is-active {
  background: linear-gradient(145deg, rgba(12, 74, 110, 0.55), rgba(34, 211, 238, 0.12)) !important;
  border-color: rgba(56, 189, 248, 0.45) !important;
  color: #e0f2fe !important;
}

html.envisage .camp-banner--live {
  background: linear-gradient(145deg, rgba(6, 78, 59, 0.55), rgba(16, 185, 129, 0.14)) !important;
  border-color: rgba(52, 211, 153, 0.4) !important;
  color: #d1fae5 !important;
}
html.envisage .camp-banner--idle {
  background: var(--env-soft) !important;
  border-color: var(--env-border) !important;
  color: var(--env-text-soft) !important;
}
html.envisage .camp-banner-warn { color: #fcd34d !important; }

/* Careers front-page switch callout - high contrast on Envisage (was mid-tone on mid-tone) */
html.envisage .camp-callout {
  background: linear-gradient(160deg, #1e2d48 0%, #243148 100%) !important;
  border: 1px solid rgba(148, 190, 230, 0.32) !important;
  color: #eef4fb !important;
  box-shadow: 0 10px 28px -16px rgba(0, 0, 0, 0.45);
}
html.envisage .camp-callout--warn {
  background:
    radial-gradient(420px 140px at 0% 0%, rgba(251, 191, 36, 0.22), transparent 65%),
    linear-gradient(155deg, #3f2a10 0%, #2a2118 48%, #243148 100%) !important;
  border-color: rgba(251, 191, 36, 0.55) !important;
  color: #fffbeb !important;
}
html.envisage .camp-callout--agency {
  background:
    radial-gradient(420px 140px at 0% 0%, rgba(56, 189, 248, 0.2), transparent 65%),
    linear-gradient(155deg, #0c3d5c 0%, #1a2f48 48%, #243148 100%) !important;
  border-color: rgba(125, 211, 252, 0.5) !important;
  color: #f0f9ff !important;
}
html.envisage .camp-callout-title {
  color: #f8fafc !important;
  font-weight: 800 !important;
  letter-spacing: 0.01em;
}
html.envisage .camp-callout--warn .camp-callout-title {
  color: #fde68a !important;
}
html.envisage .camp-callout--agency .camp-callout-title {
  color: #e0f2fe !important;
}
html.envisage .camp-callout-body {
  color: #dbe7f5 !important;
  font-size: 0.8125rem !important;
  line-height: 1.55 !important;
  opacity: 1 !important;
}
html.envisage .camp-callout--warn .camp-callout-body {
  color: #f5e6c8 !important;
}
html.envisage .camp-callout--agency .camp-callout-body {
  color: #cfe9fa !important;
}
html.envisage .camp-callout-body strong {
  color: #ffffff !important;
  font-weight: 800 !important;
}
html.envisage .camp-callout--warn .camp-callout-body strong {
  color: #fffbeb !important;
}
html.envisage .camp-callout--agency .camp-callout-body strong {
  color: #f0f9ff !important;
}
html.envisage .camp-toggle {
  background: #2c3b55 !important;
  border: 1px solid rgba(148, 190, 230, 0.4) !important;
  color: #f0f9ff !important;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.25);
  font-weight: 800 !important;
}
html.envisage .camp-callout--warn .camp-toggle {
  background: rgba(120, 53, 15, 0.55) !important;
  border-color: rgba(251, 191, 36, 0.45) !important;
  color: #fffbeb !important;
}
html.envisage .camp-callout--agency .camp-toggle {
  background: rgba(12, 74, 110, 0.65) !important;
  border-color: rgba(56, 189, 248, 0.45) !important;
  color: #e0f2fe !important;
}

html.envisage .camp-h3 { color: var(--env-text) !important; }
html.envisage .camp-lead,
html.envisage .camp-foot,
html.envisage .camp-empty,
html.envisage .camp-row-meta,
html.envisage .camp-row-slug,
html.envisage .camp-card-note,
html.envisage .camp-card-foot,
html.envisage .camp-label { color: var(--env-muted) !important; }
html.envisage .camp-link { color: #7dd3fc !important; }

html.envisage .camp-card {
  background: var(--env-soft) !important;
  border-color: var(--env-border) !important;
}
html.envisage .camp-card--trades {
  background: linear-gradient(145deg, rgba(12, 74, 110, 0.42), rgba(36, 49, 72, 0.95)) !important;
  border-color: rgba(56, 189, 248, 0.32) !important;
}
html.envisage .camp-card--medical {
  background: linear-gradient(145deg, rgba(19, 78, 74, 0.45), rgba(36, 49, 72, 0.95)) !important;
  border-color: rgba(45, 212, 191, 0.32) !important;
}
html.envisage .camp-card--legal {
  background: linear-gradient(145deg, rgba(49, 46, 129, 0.42), rgba(36, 49, 72, 0.95)) !important;
  border-color: rgba(129, 140, 248, 0.35) !important;
}
html.envisage .camp-card--agency {
  background: linear-gradient(145deg, rgba(12, 74, 110, 0.38), rgba(36, 49, 72, 0.95)) !important;
  border-color: rgba(56, 189, 248, 0.35) !important;
}
html.envisage .camp-card-title,
html.envisage .camp-row-title { color: var(--env-text) !important; }

html.envisage .camp-input {
  background: var(--env-input) !important;
  border-color: var(--env-border-strong) !important;
  color: var(--env-text) !important;
}

html.envisage .camp-btn-primary {
  background: linear-gradient(180deg, #3d5470, #2c3b55) !important;
  color: #f0f9ff !important;
  border: 1px solid var(--env-border-strong);
}
html.envisage .camp-btn-accent {
  background: linear-gradient(180deg, #0ea5e9, #0284c7) !important;
  color: #fff !important;
}
html.envisage .camp-btn-ghost {
  background: var(--env-soft) !important;
  border-color: var(--env-border-strong) !important;
  color: var(--env-text) !important;
}
html.envisage .camp-btn-ghost:hover {
  background: var(--env-surface-2) !important;
}
/* Plan list prices panel (System Settings) */
html.envisage .oj-plan-prices .camp-lead {
  color: var(--env-muted) !important;
}
html.envisage .oj-plan-prices .camp-lead strong {
  color: var(--env-text) !important;
}
html.envisage .oj-plan-prices .camp-foot,
html.envisage #plan-prices-status {
  color: var(--env-muted) !important;
}
html.envisage #plan-prices-status strong {
  color: var(--env-text) !important;
}

html.envisage .camp-row {
  background: var(--env-soft) !important;
  border-color: var(--env-border) !important;
}
html.envisage .camp-chip {
  background: var(--env-surface-2) !important;
  border-color: var(--env-border) !important;
  color: var(--env-text-soft) !important;
}
html.envisage .camp-chip--go {
  background: #059669 !important;
  border-color: #34d399 !important;
  color: #ecfdf5 !important;
}
html.envisage .camp-chip--pay {
  background: rgba(76, 29, 149, 0.35) !important;
  border-color: rgba(167, 139, 250, 0.4) !important;
  color: #ddd6fe !important;
}
html.envisage .camp-chip--danger {
  background: rgba(127, 29, 29, 0.35) !important;
  border-color: rgba(248, 113, 113, 0.4) !important;
  color: #fecaca !important;
}

html.envisage .camp-badge--live { background: rgba(6, 95, 70, 0.55) !important; color: #a7f3d0 !important; }
html.envisage .camp-badge--sched { background: rgba(12, 74, 110, 0.55) !important; color: #bae6fd !important; }
html.envisage .camp-badge--ended { background: var(--env-elevated) !important; color: var(--env-muted) !important; }
html.envisage .camp-badge--draft { background: var(--env-elevated) !important; color: var(--env-text-soft) !important; }

html.envisage .camp-editor {
  background: linear-gradient(145deg, rgba(12, 74, 110, 0.35), var(--env-surface)) !important;
  border-color: rgba(56, 189, 248, 0.3) !important;
}
html.envisage .camp-editor-tip {
  background: rgba(15, 23, 42, 0.45) !important;
  border-color: rgba(56, 189, 248, 0.28) !important;
  color: #bae6fd !important;
}

/* Leftover pastel utilities: keep identity, never flatten all to grey steel */
html.envisage .bg-fuchsia-50,
html.envisage .bg-fuchsia-50\/70,
html.envisage .bg-fuchsia-50\/40 {
  background: linear-gradient(145deg, rgba(112, 26, 117, 0.42), rgba(36, 49, 72, 0.95)) !important;
}
html.envisage .bg-sky-50\/40,
html.envisage .bg-sky-50\/50 {
  background: linear-gradient(145deg, rgba(12, 74, 110, 0.45), rgba(36, 49, 72, 0.95)) !important;
}
html.envisage .bg-amber-50\/80 {
  background: linear-gradient(145deg, rgba(120, 53, 15, 0.42), rgba(36, 49, 72, 0.95)) !important;
}
html.envisage .border-fuchsia-100,
html.envisage .border-fuchsia-200 {
  border-color: rgba(232, 121, 249, 0.4) !important;
}
html.envisage .border-amber-300 {
  border-color: rgba(251, 191, 36, 0.4) !important;
}
html.envisage .text-fuchsia-950,
html.envisage .text-fuchsia-900,
html.envisage .text-sky-950 {
  color: #f5d0fe !important;
}
html.envisage .text-indigo-950 {
  color: #c7d2fe !important;
}
html.envisage .text-teal-950 {
  color: #99f6e4 !important;
}
html.envisage .text-fuchsia-800,
html.envisage .text-fuchsia-600 {
  color: #f0abfc !important;
}

/* Dark night theme: mirror camp surfaces */
html.dark .camp-panel,
html.dark .camp-stat,
html.dark .camp-row {
  background: #1e293b !important;
  border-color: #334155 !important;
  color: #e2e8f0;
}
html.dark .camp-callout {
  background: #1e293b !important;
  border-color: #475569 !important;
  color: #e2e8f0 !important;
}
html.dark .camp-callout--warn {
  background: linear-gradient(155deg, #422006 0%, #1e293b 100%) !important;
  border-color: rgba(251, 191, 36, 0.45) !important;
  color: #fef3c7 !important;
}
html.dark .camp-callout--agency {
  background: linear-gradient(155deg, #0c4a6e 0%, #1e293b 100%) !important;
  border-color: rgba(56, 189, 248, 0.4) !important;
  color: #e0f2fe !important;
}
html.dark .camp-callout-title { color: #f8fafc !important; }
html.dark .camp-callout--warn .camp-callout-title { color: #fde68a !important; }
html.dark .camp-callout--agency .camp-callout-title { color: #bae6fd !important; }
html.dark .camp-callout-body { color: #cbd5e1 !important; opacity: 1 !important; }
html.dark .camp-callout--warn .camp-callout-body { color: #fde68a !important; }
html.dark .camp-callout--agency .camp-callout-body { color: #bae6fd !important; }
html.dark .camp-callout-body strong { color: #ffffff !important; }
html.dark .camp-toggle {
  background: #0f172a !important;
  border-color: #475569 !important;
  color: #f1f5f9 !important;
  box-shadow: none;
}
html.dark .camp-tab {
  background: #1e293b !important;
  border-color: #334155 !important;
  color: #cbd5e1 !important;
}
html.dark .camp-tab.is-active {
  background: #0c4a6e !important;
  border-color: #38bdf8 !important;
  color: #e0f2fe !important;
}
html.dark .camp-card {
  background: #1e293b !important;
  border-color: #334155 !important;
}
html.dark .camp-card--trades { border-color: rgba(56, 189, 248, 0.35) !important; background: #1e293b !important; }
html.dark .camp-card--medical { border-color: rgba(45, 212, 191, 0.35) !important; background: #1e293b !important; }
html.dark .camp-card--legal { border-color: rgba(129, 140, 248, 0.35) !important; background: #1e293b !important; }
html.dark .camp-card--agency { border-color: rgba(56, 189, 248, 0.35) !important; background: #1e293b !important; }
html.dark .camp-h3,
html.dark .camp-card-title,
html.dark .camp-row-title,
html.dark .camp-stat-n { color: #f1f5f9 !important; }
html.dark .camp-input {
  background: #0f172a !important;
  border-color: #475569 !important;
  color: #f1f5f9 !important;
}

/* -- Ortally brand mark (icon + platinum?gold wordmark) -- */
.oj-ot-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  text-decoration: none !important;
  color: inherit;
  min-width: 0;
  max-width: 100%;
}
a.oj-ot-brand:hover .oj-ot-brand-logo-wrap {
  transform: translateY(-1px) scale(1.03);
  box-shadow: 0 10px 28px rgba(251, 191, 36, 0.28), 0 0 0 1px rgba(212, 175, 55, 0.45);
}
a.oj-ot-brand:hover .oj-ot-brand-word { filter: brightness(1.08); }
.oj-ot-brand-logo-wrap {
  flex-shrink: 0;
  border-radius: 0.85rem;
  overflow: hidden;
  border: 1px solid rgba(212, 175, 55, 0.4);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(251, 191, 36, 0.12);
  background: #0b1220;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
  line-height: 0;
}
.oj-ot-brand-logo {
  display: block;
  object-fit: cover;
  width: 2.75rem;
  height: 2.75rem;
}
.oj-ot-brand--sm .oj-ot-brand-logo { width: 2.15rem; height: 2.15rem; }
.oj-ot-brand--sm .oj-ot-brand-logo-wrap { border-radius: 0.65rem; }
.oj-ot-brand--lg .oj-ot-brand-logo { width: 3.35rem; height: 3.35rem; }
.oj-ot-brand--lg .oj-ot-brand-logo-wrap { border-radius: 1rem; }
.oj-ot-brand-text {
  display: flex;
  flex-direction: column;
  min-width: 0;
  line-height: 1.1;
}
.oj-ot-brand-word {
  font-weight: 800;
  font-size: 1.35rem;
  letter-spacing: -0.03em;
  line-height: 1.05;
  background: linear-gradient(90deg, #f8fafc 0%, #e8d5a3 48%, #fbbf24 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  transition: filter 0.18s ease;
}
.oj-ot-brand--sm .oj-ot-brand-word { font-size: 1.05rem; }
.oj-ot-brand--lg .oj-ot-brand-word { font-size: 1.7rem; }
.oj-ot-brand--light .oj-ot-brand-word {
  background: linear-gradient(90deg, #0a0a0a 0%, #c9a227 45%, #fbbf24 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.oj-ot-brand--light .oj-ot-brand-logo-wrap {
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.12), 0 0 0 1px rgba(212, 175, 55, 0.35);
  background: #fff;
}
.oj-ot-brand-sub {
  display: block;
  margin-top: 0.18rem;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #94a3b8;
}
.oj-ot-brand--light .oj-ot-brand-sub { color: #64748b; }
.oj-ot-brand--sm .oj-ot-brand-sub { font-size: 0.55rem; letter-spacing: 0.1em; }
.oj-ot-brand--lg .oj-ot-brand-sub { font-size: 0.68rem; }

/* ================================================================
   Colour-safe vision mode (colour-blind friendly)
   html[data-oj-vision="colorblind"]
   Blue/orange status cues, patterns, stronger edges - helps red-green vision
   ================================================================ */

html[data-oj-vision="colorblind"] {
  --oj-cb-ok: #2563eb;
  --oj-cb-ok-soft: #dbeafe;
  --oj-cb-ok-ink: #1e3a8a;
  --oj-cb-warn: #ea580c;
  --oj-cb-warn-soft: #ffedd5;
  --oj-cb-warn-ink: #9a3412;
  --oj-cb-bad: #7c2d12;
  --oj-cb-bad-soft: #fed7aa;
  --oj-cb-info: #0891b2;
  --oj-cb-info-soft: #cffafe;
  --oj-cb-neutral: #525252;
  /* Prefer blue accent if user kept red-green-ish accents - still allow custom */
}

/* Success / positive: blue (not green) */
html[data-oj-vision="colorblind"] .bg-emerald-50,
html[data-oj-vision="colorblind"] .bg-green-50,
html[data-oj-vision="colorblind"] .bg-teal-50 {
  background: var(--oj-cb-ok-soft) !important;
  border-color: var(--oj-cb-ok) !important;
}
html[data-oj-vision="colorblind"] .bg-emerald-100,
html[data-oj-vision="colorblind"] .bg-green-100,
html[data-oj-vision="colorblind"] .bg-teal-100 {
  background: var(--oj-cb-ok-soft) !important;
  color: var(--oj-cb-ok-ink) !important;
  border-color: var(--oj-cb-ok) !important;
}
html[data-oj-vision="colorblind"] .bg-emerald-500,
html[data-oj-vision="colorblind"] .bg-emerald-600,
html[data-oj-vision="colorblind"] .bg-green-500,
html[data-oj-vision="colorblind"] .bg-green-600,
html[data-oj-vision="colorblind"] .bg-teal-600 {
  background: var(--oj-cb-ok) !important;
  color: #fff !important;
  border-color: #1d4ed8 !important;
}
html[data-oj-vision="colorblind"] .text-emerald-600,
html[data-oj-vision="colorblind"] .text-emerald-700,
html[data-oj-vision="colorblind"] .text-emerald-800,
html[data-oj-vision="colorblind"] .text-emerald-900,
html[data-oj-vision="colorblind"] .text-green-600,
html[data-oj-vision="colorblind"] .text-green-700,
html[data-oj-vision="colorblind"] .text-teal-600,
html[data-oj-vision="colorblind"] .text-teal-700 {
  color: var(--oj-cb-ok-ink) !important;
}
html[data-oj-vision="colorblind"] .border-emerald-200,
html[data-oj-vision="colorblind"] .border-emerald-300,
html[data-oj-vision="colorblind"] .border-green-200,
html[data-oj-vision="colorblind"] .border-teal-200 {
  border-color: #60a5fa !important;
}

/* Danger / critical: brown-orange + hatch (not pure red-green clash) */
html[data-oj-vision="colorblind"] .bg-red-50,
html[data-oj-vision="colorblind"] .bg-rose-50 {
  background:
    repeating-linear-gradient(-45deg, var(--oj-cb-bad-soft), var(--oj-cb-bad-soft) 6px, #fff7ed 6px, #fff7ed 12px) !important;
  border-color: var(--oj-cb-warn) !important;
}
html[data-oj-vision="colorblind"] .bg-red-100,
html[data-oj-vision="colorblind"] .bg-rose-100 {
  background: var(--oj-cb-bad-soft) !important;
  color: var(--oj-cb-bad) !important;
  border: 1px dashed var(--oj-cb-warn) !important;
}
html[data-oj-vision="colorblind"] .bg-red-500,
html[data-oj-vision="colorblind"] .bg-red-600,
html[data-oj-vision="colorblind"] .bg-rose-500,
html[data-oj-vision="colorblind"] .bg-rose-600 {
  background:
    repeating-linear-gradient(-45deg, #c2410c, #c2410c 4px, #9a3412 4px, #9a3412 8px) !important;
  color: #fff !important;
  border: 2px solid #431407 !important;
}
html[data-oj-vision="colorblind"] .text-red-600,
html[data-oj-vision="colorblind"] .text-red-700,
html[data-oj-vision="colorblind"] .text-red-800,
html[data-oj-vision="colorblind"] .text-rose-600,
html[data-oj-vision="colorblind"] .text-rose-700 {
  color: var(--oj-cb-bad) !important;
  font-weight: 700 !important;
}
html[data-oj-vision="colorblind"] .border-red-200,
html[data-oj-vision="colorblind"] .border-red-300,
html[data-oj-vision="colorblind"] .border-rose-200 {
  border-color: var(--oj-cb-warn) !important;
  border-style: dashed !important;
}

/* Warning: solid orange */
html[data-oj-vision="colorblind"] .bg-amber-50,
html[data-oj-vision="colorblind"] .bg-orange-50,
html[data-oj-vision="colorblind"] .bg-yellow-50 {
  background: var(--oj-cb-warn-soft) !important;
  border-color: var(--oj-cb-warn) !important;
}
html[data-oj-vision="colorblind"] .bg-amber-100,
html[data-oj-vision="colorblind"] .bg-orange-100 {
  background: var(--oj-cb-warn-soft) !important;
  color: var(--oj-cb-warn-ink) !important;
  border: 1px solid var(--oj-cb-warn) !important;
}
html[data-oj-vision="colorblind"] .bg-amber-500,
html[data-oj-vision="colorblind"] .bg-amber-600,
html[data-oj-vision="colorblind"] .bg-orange-500,
html[data-oj-vision="colorblind"] .bg-orange-600 {
  background: var(--oj-cb-warn) !important;
  color: #fff !important;
}
html[data-oj-vision="colorblind"] .text-amber-600,
html[data-oj-vision="colorblind"] .text-amber-700,
html[data-oj-vision="colorblind"] .text-amber-800,
html[data-oj-vision="colorblind"] .text-orange-600,
html[data-oj-vision="colorblind"] .text-orange-700 {
  color: var(--oj-cb-warn-ink) !important;
  font-weight: 700 !important;
}

/* Feature status pills - shape + pattern, not colour alone */
html[data-oj-vision="colorblind"] .oj-feature-pill.is-on {
  background: var(--oj-cb-ok) !important;
  color: #fff !important;
  border: 2px solid #1e3a8a !important;
  box-shadow: none !important;
}
html[data-oj-vision="colorblind"] .oj-feature-pill.is-on .oj-feature-pill-state {
  background: #fff !important;
  color: var(--oj-cb-ok-ink) !important;
}
html[data-oj-vision="colorblind"] .oj-feature-pill.is-on::before {
  content: "?";
  font-size: 0.45rem;
  margin-right: 0.1rem;
  opacity: 0.95;
}
html[data-oj-vision="colorblind"] .oj-feature-pill.is-off {
  background: #404040 !important;
  color: #e5e5e5 !important;
  border: 2px dashed #a3a3a3 !important;
}
html[data-oj-vision="colorblind"] .oj-feature-pill.is-off .oj-feature-pill-state {
  background: #737373 !important;
  color: #fff !important;
}
html[data-oj-vision="colorblind"] .oj-feature-pill.is-warn {
  background: var(--oj-cb-warn) !important;
  color: #fff !important;
  border: 2px solid #7c2d12 !important;
}
html[data-oj-vision="colorblind"] .oj-feature-pill.is-warn::before {
  content: "!";
  font-weight: 900;
  margin-right: 0.15rem;
}
html[data-oj-vision="colorblind"] .oj-feature-pill.is-cf-atk {
  background:
    repeating-linear-gradient(-45deg, #c2410c, #c2410c 5px, #7c2d12 5px, #7c2d12 10px) !important;
  color: #fff !important;
  border: 2px solid #431407 !important;
  animation: none !important;
  box-shadow: none !important;
}
html[data-oj-vision="colorblind"] .oj-feature-pill.is-cf-high {
  background: var(--oj-cb-warn) !important;
  color: #fff !important;
  border: 2px solid #9a3412 !important;
  box-shadow: none !important;
}
html[data-oj-vision="colorblind"] .oj-feature-pill.is-cf-med,
html[data-oj-vision="colorblind"] .oj-feature-pill.is-cf-low {
  background: var(--oj-cb-ok) !important;
  color: #fff !important;
  border: 2px solid #1e3a8a !important;
  box-shadow: none !important;
}
html[data-oj-vision="colorblind"] .oj-feature-pill.is-cf-glow-escalate,
html[data-oj-vision="colorblind"] .oj-feature-pill.is-cf-glow-revert {
  animation: none !important;
  outline: 3px double #fafafa;
  outline-offset: 1px;
}

/* Active nav: thicker rail + underline so colour is not the only cue */
html[data-oj-vision="colorblind"] .sidebar .nav-link.active,
html[data-oj-vision="colorblind"] .sidebar .nav-group-btn.active,
html[data-oj-vision="colorblind"] #admin-nav .nav-link.active,
html[data-oj-vision="colorblind"] #tradie-nav .nav-link.active,
html[data-oj-vision="colorblind"] #customer-nav .nav-link.active {
  box-shadow: inset 5px 0 0 var(--oj-nav-accent) !important;
  border-bottom: 2px solid var(--oj-nav-accent) !important;
  font-weight: 800 !important;
}

/* Badges used for status across dashboards */
html[data-oj-vision="colorblind"] .bg-emerald-100.text-emerald-700,
html[data-oj-vision="colorblind"] .bg-emerald-100.text-emerald-800,
html[data-oj-vision="colorblind"] span.bg-emerald-100 {
  background: var(--oj-cb-ok-soft) !important;
  color: var(--oj-cb-ok-ink) !important;
  border: 1px solid var(--oj-cb-ok) !important;
}
html[data-oj-vision="colorblind"] .bg-red-100.text-red-700,
html[data-oj-vision="colorblind"] .bg-red-100.text-red-800,
html[data-oj-vision="colorblind"] span.bg-red-100 {
  background: var(--oj-cb-bad-soft) !important;
  color: var(--oj-cb-bad) !important;
  border: 1px dashed var(--oj-cb-warn) !important;
}

/* Prefer sky/blue accents for colour-safe when accent is emerald/rose-like */
html[data-oj-vision="colorblind"][data-oj-accent="emerald"],
html[data-oj-vision="colorblind"][data-oj-accent="rose"],
html[data-oj-vision="colorblind"][data-oj-accent="orange"] {
  --oj-nav-accent: #2563eb;
  --oj-nav-accent-vivid: #1d4ed8;
  --oj-nav-accent-soft: #1e40af;
  --oj-nav-active-fg: #dbeafe;
}

/* Charts: avoid green/red series wash on light backgrounds when possible */
html[data-oj-vision="colorblind"] .oj-health-chart-wrap {
  border-width: 2px !important;
  border-style: solid !important;
}

/* Forms focus: thicker ring */
html[data-oj-vision="colorblind"] input:focus,
html[data-oj-vision="colorblind"] select:focus,
html[data-oj-vision="colorblind"] textarea:focus,
html[data-oj-vision="colorblind"] button:focus-visible {
  outline: 3px solid var(--oj-cb-ok) !important;
  outline-offset: 2px;
}

/* Links under colour-safe: underline always */
html[data-oj-vision="colorblind"] a:not(.nav-link):not(.oj-chrome-swatch) {
  text-decoration-line: underline;
  text-underline-offset: 2px;
}

/* Colour vision controls layout */
.oj-chrome-modes--vision {
  grid-template-columns: 1fr !important;
  gap: 0.4rem !important;
}
.oj-chrome-modes--vision .oj-chrome-mode-btn {
  justify-content: flex-start;
  text-align: left;
  padding: 0.55rem 0.7rem;
  font-size: 0.72rem;
  line-height: 1.25;
  white-space: normal;
}
.oj-chrome-panel {
  max-height: min(640px, calc(100vh - 24px)) !important;
}
.oj-chrome-panel-inner {
  scrollbar-width: thin;
  scrollbar-color: rgba(148, 163, 184, 0.6) transparent;
}

/* ================================================================
   Tritanopia (blue�yellow) safe vision mode
   html[data-oj-vision="tritanopia"]
   Avoid blue/yellow pairs; use red/pink + teal, patterns, stronger edges
   ================================================================ */

html[data-oj-vision="tritanopia"] {
  --oj-cb-ok: #0f766e;
  --oj-cb-ok-soft: #ccfbf1;
  --oj-cb-ok-ink: #115e59;
  --oj-cb-warn: #be123c;
  --oj-cb-warn-soft: #ffe4e6;
  --oj-cb-warn-ink: #9f1239;
  --oj-cb-bad: #881337;
  --oj-cb-bad-soft: #fecdd3;
  --oj-cb-info: #a21caf;
  --oj-cb-info-soft: #fae8ff;
}

/* Sky/blue/cyan ? fuchsia/magenta (not blue) */
html[data-oj-vision="tritanopia"] .bg-sky-50,
html[data-oj-vision="tritanopia"] .bg-blue-50,
html[data-oj-vision="tritanopia"] .bg-cyan-50,
html[data-oj-vision="tritanopia"] .bg-indigo-50 {
  background: var(--oj-cb-info-soft) !important;
  border-color: #c026d3 !important;
}
html[data-oj-vision="tritanopia"] .bg-sky-100,
html[data-oj-vision="tritanopia"] .bg-blue-100,
html[data-oj-vision="tritanopia"] .bg-cyan-100,
html[data-oj-vision="tritanopia"] .bg-indigo-100 {
  background: var(--oj-cb-info-soft) !important;
  color: #86198f !important;
  border-color: #c026d3 !important;
}
html[data-oj-vision="tritanopia"] .bg-sky-500,
html[data-oj-vision="tritanopia"] .bg-sky-600,
html[data-oj-vision="tritanopia"] .bg-blue-500,
html[data-oj-vision="tritanopia"] .bg-blue-600,
html[data-oj-vision="tritanopia"] .bg-cyan-600,
html[data-oj-vision="tritanopia"] .bg-indigo-600 {
  background: #a21caf !important;
  color: #fff !important;
}
html[data-oj-vision="tritanopia"] .text-sky-600,
html[data-oj-vision="tritanopia"] .text-sky-700,
html[data-oj-vision="tritanopia"] .text-sky-800,
html[data-oj-vision="tritanopia"] .text-blue-600,
html[data-oj-vision="tritanopia"] .text-blue-700,
html[data-oj-vision="tritanopia"] .text-cyan-600,
html[data-oj-vision="tritanopia"] .text-indigo-600,
html[data-oj-vision="tritanopia"] .text-indigo-700 {
  color: #86198f !important;
  font-weight: 700 !important;
}
html[data-oj-vision="tritanopia"] .border-sky-200,
html[data-oj-vision="tritanopia"] .border-blue-200,
html[data-oj-vision="tritanopia"] .border-cyan-200,
html[data-oj-vision="tritanopia"] .border-indigo-200 {
  border-color: #e879f9 !important;
}

/* Amber/yellow ? rose/pink (not yellow) */
html[data-oj-vision="tritanopia"] .bg-amber-50,
html[data-oj-vision="tritanopia"] .bg-yellow-50,
html[data-oj-vision="tritanopia"] .bg-orange-50 {
  background: var(--oj-cb-warn-soft) !important;
  border-color: var(--oj-cb-warn) !important;
}
html[data-oj-vision="tritanopia"] .bg-amber-100,
html[data-oj-vision="tritanopia"] .bg-yellow-100,
html[data-oj-vision="tritanopia"] .bg-orange-100 {
  background: var(--oj-cb-warn-soft) !important;
  color: var(--oj-cb-warn-ink) !important;
  border: 1px solid var(--oj-cb-warn) !important;
}
html[data-oj-vision="tritanopia"] .bg-amber-500,
html[data-oj-vision="tritanopia"] .bg-amber-600,
html[data-oj-vision="tritanopia"] .bg-yellow-500,
html[data-oj-vision="tritanopia"] .bg-orange-500,
html[data-oj-vision="tritanopia"] .bg-orange-600 {
  background: var(--oj-cb-warn) !important;
  color: #fff !important;
}
html[data-oj-vision="tritanopia"] .text-amber-600,
html[data-oj-vision="tritanopia"] .text-amber-700,
html[data-oj-vision="tritanopia"] .text-amber-800,
html[data-oj-vision="tritanopia"] .text-yellow-600,
html[data-oj-vision="tritanopia"] .text-orange-600,
html[data-oj-vision="tritanopia"] .text-orange-700 {
  color: var(--oj-cb-warn-ink) !important;
  font-weight: 700 !important;
}

/* Green stays green (works for tritanopia); keep strong edge */
html[data-oj-vision="tritanopia"] .bg-emerald-500,
html[data-oj-vision="tritanopia"] .bg-emerald-600,
html[data-oj-vision="tritanopia"] .bg-green-600 {
  background: var(--oj-cb-ok) !important;
  color: #fff !important;
  border: 2px solid #134e4a !important;
}
html[data-oj-vision="tritanopia"] .text-emerald-600,
html[data-oj-vision="tritanopia"] .text-emerald-700,
html[data-oj-vision="tritanopia"] .text-green-700 {
  color: var(--oj-cb-ok-ink) !important;
  font-weight: 700 !important;
}

/* Red danger stays red with hatch */
html[data-oj-vision="tritanopia"] .bg-red-500,
html[data-oj-vision="tritanopia"] .bg-red-600,
html[data-oj-vision="tritanopia"] .bg-rose-600 {
  background:
    repeating-linear-gradient(-45deg, #be123c, #be123c 4px, #9f1239 4px, #9f1239 8px) !important;
  color: #fff !important;
  border: 2px solid #4c0519 !important;
}
html[data-oj-vision="tritanopia"] .text-red-600,
html[data-oj-vision="tritanopia"] .text-red-700,
html[data-oj-vision="tritanopia"] .text-rose-700 {
  color: var(--oj-cb-bad) !important;
  font-weight: 700 !important;
}

/* Feature pills */
html[data-oj-vision="tritanopia"] .oj-feature-pill.is-on {
  background: var(--oj-cb-ok) !important;
  color: #fff !important;
  border: 2px solid #134e4a !important;
  box-shadow: none !important;
}
html[data-oj-vision="tritanopia"] .oj-feature-pill.is-on::before {
  content: "?";
  font-size: 0.45rem;
  margin-right: 0.1rem;
}
html[data-oj-vision="tritanopia"] .oj-feature-pill.is-off {
  background: #3f3f46 !important;
  color: #f4f4f5 !important;
  border: 2px dashed #a1a1aa !important;
}
html[data-oj-vision="tritanopia"] .oj-feature-pill.is-warn {
  background: var(--oj-cb-warn) !important;
  color: #fff !important;
  border: 2px solid #4c0519 !important;
}
html[data-oj-vision="tritanopia"] .oj-feature-pill.is-warn::before {
  content: "!";
  font-weight: 900;
  margin-right: 0.15rem;
}
html[data-oj-vision="tritanopia"] .oj-feature-pill.is-cf-atk {
  background:
    repeating-linear-gradient(-45deg, #be123c, #be123c 5px, #9f1239 5px, #9f1239 10px) !important;
  color: #fff !important;
  border: 2px solid #4c0519 !important;
  animation: none !important;
  box-shadow: none !important;
}
html[data-oj-vision="tritanopia"] .oj-feature-pill.is-cf-high {
  background: var(--oj-cb-warn) !important;
  color: #fff !important;
  border: 2px solid #9f1239 !important;
  box-shadow: none !important;
}
html[data-oj-vision="tritanopia"] .oj-feature-pill.is-cf-med,
html[data-oj-vision="tritanopia"] .oj-feature-pill.is-cf-low {
  background: var(--oj-cb-ok) !important;
  color: #fff !important;
  border: 2px solid #134e4a !important;
  box-shadow: none !important;
}
html[data-oj-vision="tritanopia"] .oj-feature-pill.is-cf-glow-escalate,
html[data-oj-vision="tritanopia"] .oj-feature-pill.is-cf-glow-revert {
  animation: none !important;
  outline: 3px double #fafafa;
  outline-offset: 1px;
}

/* Sky/cyan accents ? fuchsia for tritanopia */
html[data-oj-vision="tritanopia"][data-oj-accent="sky"],
html[data-oj-vision="tritanopia"][data-oj-accent="cyan"],
html[data-oj-vision="tritanopia"][data-oj-accent="blue"] {
  --oj-nav-accent: #c026d3;
  --oj-nav-accent-vivid: #a21caf;
  --oj-nav-accent-soft: #86198f;
  --oj-nav-active-fg: #fae8ff;
}
html[data-oj-vision="tritanopia"][data-oj-accent="amber"],
html[data-oj-vision="tritanopia"][data-oj-accent="orange"] {
  --oj-nav-accent: #e11d48;
  --oj-nav-accent-vivid: #be123c;
  --oj-nav-accent-soft: #9f1239;
  --oj-nav-active-fg: #ffe4e6;
}

html[data-oj-vision="tritanopia"] .sidebar .nav-link.active,
html[data-oj-vision="tritanopia"] .sidebar .nav-group-btn.active,
html[data-oj-vision="tritanopia"] #admin-nav .nav-link.active,
html[data-oj-vision="tritanopia"] #tradie-nav .nav-link.active,
html[data-oj-vision="tritanopia"] #customer-nav .nav-link.active {
  box-shadow: inset 5px 0 0 var(--oj-nav-accent) !important;
  border-bottom: 2px solid var(--oj-nav-accent) !important;
  font-weight: 800 !important;
}

html[data-oj-vision="tritanopia"] a:not(.nav-link):not(.oj-chrome-swatch) {
  text-decoration-line: underline;
  text-underline-offset: 2px;
}
html[data-oj-vision="tritanopia"] input:focus,
html[data-oj-vision="tritanopia"] select:focus,
html[data-oj-vision="tritanopia"] textarea:focus,
html[data-oj-vision="tritanopia"] button:focus-visible {
  outline: 3px solid var(--oj-cb-ok) !important;
  outline-offset: 2px;
}

/* ---------- Sexy rounded selects (all dashboard surfaces) ---------- */
/* Soft pill field + hidden native chevron; custom caret via background SVG when needed */
#main-content select,
#customer-main-shell select,
#tradie-main-shell select,
#business-main-shell select,
#accept-modal select,
#edit-job-modal select,
#rating-modal select,
.section select,
#post-job-form select,
#job-settings-form select,
#customer-profile-form select,
#post-job-section select,
.oj-messages-modal select {
  border-radius: 1rem !important; /* rounded-2xl */
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
  appearance: none !important;
  background-clip: padding-box !important;
  overflow: hidden !important;
  cursor: pointer;
  /* Soft default caret for selects without a custom chevron icon in markup */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1.5 1.75L6 6.25L10.5 1.75' stroke='%2394a3b8' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important;
  background-position: right 0.85rem center !important;
  background-size: 0.75rem 0.5rem !important;
  padding-right: 2.25rem !important;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
}
#main-content select:focus,
#customer-main-shell select:focus,
#tradie-main-shell select:focus,
#accept-modal select:focus,
#edit-job-modal select:focus,
.section select:focus,
#post-job-form select:focus,
#job-settings-form select:focus,
#customer-profile-form select:focus {
  outline: none;
}
/* Tight icon+select wraps on post-job (location/trade have their own chevron) */
#post-job-section .oj-select-tight-wrap,
#edit-job-modal .oj-select-tight-wrap {
  max-width: 100%;
  border-radius: 1rem;
  overflow: visible; /* allow focus ring */
}
#post-job-section select.oj-select-tight,
#edit-job-modal select.oj-select-tight,
#post-job-section select,
#edit-job-modal select {
  padding-left: 2rem !important;
  padding-right: 1.65rem !important;
  height: 2.75rem !important;
  border-radius: 1rem !important;
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
  appearance: none !important;
  font-size: 0.875rem !important;
  line-height: 1.25 !important;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden !important;
  background-image: none !important; /* custom chevron in markup */
  background-clip: padding-box !important;
}
#post-job-section select:not(.oj-select-tight),
#edit-job-modal select:not(.oj-select-tight) {
  padding-left: 0.85rem !important;
  padding-right: 1.65rem !important;
}
#post-job-section select.oj-select-tight option,
#edit-job-modal select.oj-select-tight option,
#post-job-section select option,
#edit-job-modal select option,
#main-content select option,
.section select option {
  padding: 0.4rem 0.6rem;
  font-size: 0.875rem;
  border-radius: 0.5rem;
}
/* Soft pulse when OJ hands form back for review */
#post-job-form.oj-form-review-pulse {
  animation: oj-form-review-pulse 1.4s ease-out 1;
}
@keyframes oj-form-review-pulse {
  0% { box-shadow: 0 0 0 0 rgba(14, 165, 233, 0.35); }
  40% { box-shadow: 0 0 0 6px rgba(14, 165, 233, 0.18); }
  100% { box-shadow: 0 0 0 0 rgba(14, 165, 233, 0); }
}
/* Friendly OJ face mounts on Post-a-job */
.oj-guide-face-wrap .oj-friendly-face,
.oj-friendly-face {
  display: block;
  max-width: 100%;
  height: auto;
  overflow: visible;
}
.oj-guide-face-wrap .oj-pill-bob {
  transform-origin: 48px 40px;
  animation: oj-pill-bob 2.8s ease-in-out infinite;
}
.oj-guide-face-wrap .oj-pill-lid {
  transform-box: fill-box;
  transform-origin: center bottom;
  animation: oj-pill-blink 4.2s ease-in-out infinite;
}
.oj-guide-face-wrap .oj-pill-lid--r {
  animation-delay: 0.12s;
}
.oj-guide-face-wrap .oj-pill-pupils {
  transform-origin: 48px 33.5px;
  animation: oj-pill-pupil 6s ease-in-out infinite;
}
.oj-guide-face-wrap .oj-pill-antenna-dot {
  animation: oj-pill-antenna 2.4s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce) {
  .oj-guide-face-wrap .oj-pill-bob,
  .oj-guide-face-wrap .oj-pill-lid,
  .oj-guide-face-wrap .oj-pill-pupils,
  .oj-guide-face-wrap .oj-pill-antenna-dot {
    animation: none !important;
  }
}

/* ---------- Avatar crop picker ---------- */
.oj-avatar-crop-modal {
  position: fixed;
  inset: 0;
  z-index: 11000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: rgba(2, 6, 23, 0.78);
  backdrop-filter: blur(4px);
}
.oj-avatar-crop-dialog {
  width: 100%;
  max-width: 26rem;
  background: #fff;
  border-radius: 1.25rem;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.45);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.oj-avatar-crop-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 1rem 1.15rem 0.5rem;
  background: linear-gradient(90deg, #0f172a, #4c0519 55%, #7f1d1d);
  color: #fff;
}
.oj-avatar-crop-kicker {
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(254, 205, 211, 0.9);
  margin: 0;
}
.oj-avatar-crop-head h3 {
  margin: 0.15rem 0 0;
  font-size: 1.05rem;
  font-weight: 800;
}
.oj-avatar-crop-x {
  font-size: 1.75rem;
  line-height: 1;
  color: rgba(255,255,255,0.75);
  background: transparent;
  border: 0;
  padding: 0 0.25rem;
  cursor: pointer;
}
.oj-avatar-crop-x:hover { color: #fff; }
.oj-avatar-crop-help {
  margin: 0;
  padding: 0.65rem 1.15rem 0.35rem;
  font-size: 12px;
  color: #64748b;
  line-height: 1.4;
}
.oj-avatar-crop-stage-wrap {
  padding: 0.5rem 1.15rem 0.25rem;
}
.oj-avatar-crop-stage {
  position: relative;
  width: 100%;
  max-width: 280px;
  aspect-ratio: 1;
  margin: 0 auto;
  border-radius: 1rem;
  overflow: hidden;
  background: #0f172a;
  cursor: grab;
  touch-action: none;
  user-select: none;
  box-shadow: inset 0 0 0 1px rgba(148,163,184,0.25);
}
.oj-avatar-crop-stage:active { cursor: grabbing; }
.oj-avatar-crop-stage img {
  position: absolute;
  top: 0;
  left: 0;
  max-width: none;
  will-change: transform;
  pointer-events: none;
}
.oj-avatar-crop-mask {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(circle closest-side at 50% 50%, transparent 0 62%, rgba(15,23,42,0.62) 63%);
  z-index: 2;
}
.oj-avatar-crop-ring {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 72%;
  height: 72%;
  transform: translate(-50%, -50%);
  border-radius: 9999px;
  border: 2px solid rgba(255,255,255,0.92);
  box-shadow: 0 0 0 1px rgba(15,23,42,0.35), 0 0 18px rgba(244,63,94,0.25);
  pointer-events: none;
  z-index: 3;
}
.oj-avatar-crop-controls {
  padding: 0.65rem 1.15rem 0.25rem;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}
.oj-avatar-crop-zoom-label {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: #64748b;
  font-size: 12px;
}
.oj-avatar-crop-zoom-label input[type=range] {
  flex: 1;
  accent-color: #e11d48;
}
.oj-avatar-crop-presets {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.oj-avatar-crop-preset {
  font-size: 11px;
  font-weight: 700;
  padding: 0.35rem 0.7rem;
  border-radius: 9999px;
  border: 1px solid #e2e8f0;
  background: #f8fafc;
  color: #334155;
  cursor: pointer;
}
.oj-avatar-crop-preset:hover {
  border-color: #fda4af;
  background: #fff1f2;
  color: #9f1239;
}
.oj-avatar-crop-foot {
  display: flex;
  justify-content: flex-end;
  gap: 0.5rem;
  padding: 0.85rem 1.15rem 1.05rem;
  border-top: 1px solid #f1f5f9;
  background: #f8fafc;
  margin-top: 0.5rem;
}
.oj-avatar-crop-btn {
  font-size: 13px;
  font-weight: 700;
  padding: 0.55rem 0.95rem;
  border-radius: 0.85rem;
  border: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}
.oj-avatar-crop-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.oj-avatar-crop-btn--ghost {
  background: #fff;
  border: 2px solid #e2e8f0;
  color: #334155;
}
.oj-avatar-crop-btn--primary {
  background: #e11d48;
  color: #fff;
  box-shadow: 0 4px 14px rgba(225, 29, 72, 0.28);
}
.oj-avatar-crop-btn--primary:hover:not(:disabled) {
  background: #be123c;
}
