Files
Newbie_CRM/Web_Backgrounds/bw-theme.css
T
JCBSComputer 4c732c850f
Build & Auto-Repair / build (push) Has been cancelled
Fix: missing DB columns (ml_score, capacity_hours) + CSS escape fix + SQL error logging
2026-07-02 15:58:40 +02:00

722 lines
32 KiB
CSS

.dark.theme-bw {
--background: 0 0% 5%;
--foreground: 0 0% 95%;
--card: 0 0% 10%;
--card-foreground: 0 0% 95%;
--popover: 0 0% 10%;
--popover-foreground: 0 0% 95%;
--primary: 0 0% 95%;
--primary-foreground: 0 0% 0%;
--secondary: 0 0% 55%;
--secondary-foreground: 0 0% 0%;
--muted: 0 0% 15%;
--muted-foreground: 0 0% 60%;
--accent: 0 0% 25%;
--accent-foreground: 0 0% 95%;
--destructive: 0 0% 40%;
--destructive-foreground: 0 0% 95%;
--border: 0 0% 25%;
--input: 0 0% 25%;
--ring: 0 0% 70%;
--radius: 0.5rem;
--sidebar: 0 0% 4%;
--sidebar-foreground: 0 0% 95%;
--sidebar-primary: 0 0% 95%;
--sidebar-primary-foreground: 0 0% 0%;
--sidebar-accent: 0 0% 15%;
--sidebar-accent-foreground: 0 0% 95%;
--sidebar-border: 0 0% 18%;
--sidebar-ring: 0 0% 70%;
}
.light.theme-bw {
--background: 0 0% 97%;
--foreground: 0 0% 10%;
--card: 0 0% 100%;
--card-foreground: 0 0% 10%;
--popover: 0 0% 100%;
--popover-foreground: 0 0% 10%;
--primary: 0 0% 10%;
--primary-foreground: 0 0% 100%;
--secondary: 0 0% 45%;
--secondary-foreground: 0 0% 100%;
--muted: 0 0% 93%;
--muted-foreground: 0 0% 50%;
--accent: 0 0% 20%;
--accent-foreground: 0 0% 100%;
--destructive: 0 0% 60%;
--destructive-foreground: 0 0% 10%;
--border: 0 0% 78%;
--input: 0 0% 78%;
--ring: 0 0% 45%;
--radius: 0.5rem;
--sidebar: 0 0% 100%;
--sidebar-foreground: 0 0% 10%;
--sidebar-primary: 0 0% 10%;
--sidebar-primary-foreground: 0 0% 100%;
--sidebar-accent: 0 0% 90%;
--sidebar-accent-foreground: 0 0% 10%;
--sidebar-border: 0 0% 80%;
--sidebar-ring: 0 0% 45%;
}
.dark.theme-bw body {
background: transparent
radial-gradient(ellipse 100% 60% at 30% 20%, hsla(0,0%,100%,0.03) 0%, transparent 60%),
radial-gradient(ellipse 60% 50% at 70% 80%, hsla(0,0%,50%,0.02) 0%, transparent 50%);
position: relative;
}
.dark.theme-bw body > div {
background: transparent !important;
}
.dark.theme-bw body::before {
content: "";
position: fixed;
inset: 0;
z-index: -2;
pointer-events: none;
background-image:
radial-gradient(1px 1px at 10% 20%, hsla(0,0%,100%,0.12) 0%, transparent 100%),
radial-gradient(1px 1px at 30% 70%, hsla(0,0%,100%,0.08) 0%, transparent 100%),
radial-gradient(1px 1px at 50% 10%, hsla(0,0%,100%,0.1) 0%, transparent 100%),
radial-gradient(1px 1px at 70% 50%, hsla(0,0%,100%,0.06) 0%, transparent 100%),
radial-gradient(1px 1px at 90% 30%, hsla(0,0%,100%,0.1) 0%, transparent 100%),
radial-gradient(1px 1px at 15% 85%, hsla(0,0%,100%,0.08) 0%, transparent 100%),
radial-gradient(1px 1px at 65% 90%, hsla(0,0%,100%,0.06) 0%, transparent 100%),
radial-gradient(1px 1px at 85% 15%, hsla(0,0%,100%,0.1) 0%, transparent 100%),
radial-gradient(1px 1px at 40% 40%, hsla(0,0%,100%,0.07) 0%, transparent 100%),
radial-gradient(1px 1px at 55% 60%, hsla(0,0%,100%,0.05) 0%, transparent 100%);
background-size: 200% 200%;
animation: bw-drift 40s ease-in-out infinite alternate;
}
.dark.theme-bw body::after {
content: "";
position: fixed;
inset: 0;
z-index: -1;
pointer-events: none;
background:
radial-gradient(ellipse 80% 40% at 20% 30%, hsla(0,0%,100%,0.04) 0%, transparent 60%),
radial-gradient(ellipse 60% 40% at 80% 70%, hsla(0,0%,50%,0.02) 0%, transparent 50%),
radial-gradient(ellipse 50% 30% at 50% 50%, hsla(0,0%,100%,0.02) 0%, transparent 50%);
}
.light.theme-bw body::before {
content: "";
position: fixed;
inset: 0;
z-index: -1;
pointer-events: none;
background:
radial-gradient(ellipse 80% 50% at 20% 30%, hsla(0,0%,0%,0.02) 0%, transparent 60%),
radial-gradient(ellipse 60% 40% at 80% 70%, hsla(0,0%,0%,0.01) 0%, transparent 50%),
repeating-linear-gradient(0deg, transparent, transparent 60px, hsla(0,0%,0%,0.015) 60px, hsla(0,0%,0%,0.015) 61px),
repeating-linear-gradient(90deg, transparent, transparent 60px, hsla(0,0%,0%,0.015) 60px, hsla(0,0%,0%,0.015) 61px);
}
@keyframes bw-drift {
0% { background-position: 0% 0%; opacity: 0.5; }
50% { background-position: 100% 100%; opacity: 1; }
100% { background-position: 0% 100%; opacity: 0.5; }
}
.dark.theme-bw .text-glow {
text-shadow: 0 0 10px hsla(0,0%,100%,0.15), 0 0 30px hsla(0,0%,100%,0.05);
}
.light.theme-bw .text-glow {
text-shadow: 0 0 8px hsla(0,0%,0%,0.08), 0 0 20px hsla(0,0%,0%,0.04);
}
.dark.theme-bw h1, .dark.theme-bw h2, .dark.theme-bw h3 {
background: linear-gradient(135deg, hsl(0, 0%, 90%), hsl(0, 0%, 60%));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.light.theme-bw h1, .light.theme-bw h2, .light.theme-bw h3 {
background: linear-gradient(135deg, hsl(0, 0%, 20%), hsl(0, 0%, 50%));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.dark.theme-bw a {
color: hsl(0, 0%, 80%);
text-decoration: none;
transition: color 0.2s;
}
.light.theme-bw a {
color: hsl(0, 0%, 30%);
text-decoration: none;
transition: color 0.2s;
}
.dark.theme-bw a:hover {
color: hsl(0, 0%, 100%);
text-shadow: 0 0 8px hsla(0,0%,100%,0.3);
}
.light.theme-bw a:hover {
color: hsl(0, 0%, 0%);
}
.dark.theme-bw blockquote {
border-left: 3px solid hsl(0, 0%, 50%);
color: hsl(0, 0%, 60%);
font-style: italic;
}
.light.theme-bw blockquote {
border-left: 3px solid hsl(0, 0%, 60%);
color: hsl(0, 0%, 50%);
font-style: italic;
}
.dark.theme-bw code {
color: hsl(0, 0%, 80%);
background: hsla(0, 0%, 100%, 0.08);
border: 1px solid hsla(0, 0%, 100%, 0.12);
}
.light.theme-bw code {
color: hsl(0, 0%, 30%);
background: hsla(0, 0%, 0%, 0.04);
border: 1px solid hsla(0, 0%, 0%, 0.1);
}
.dark.theme-bw pre {
background: rgba(0, 0, 0, 0.9);
border: 1px solid hsla(0, 0%, 100%, 0.1);
}
.light.theme-bw pre {
background: hsla(0, 0%, 0%, 0.02);
border: 1px solid hsla(0, 0%, 0%, 0.08);
}
.dark.theme-bw hr {
border-color: hsla(0, 0%, 100%, 0.12);
}
.light.theme-bw hr {
border-color: hsla(0, 0%, 0%, 0.08);
}
.dark.theme-bw table th {
color: hsl(0, 0%, 80%);
}
.light.theme-bw table th {
color: hsl(0, 0%, 30%);
}
.dark.theme-bw table td {
border-color: hsla(0, 0%, 100%, 0.1);
}
.light.theme-bw table td {
border-color: hsla(0, 0%, 0%, 0.08);
}
.dark.theme-bw ::selection {
background: hsla(0, 0%, 100%, 0.15);
color: hsl(0, 0%, 100%);
}
.light.theme-bw ::selection {
background: hsla(0, 0%, 0%, 0.1);
color: hsl(0, 0%, 0%);
}
.dark.theme-bw input::placeholder,
.dark.theme-bw textarea::placeholder {
color: hsl(0, 0%, 40%);
}
.light.theme-bw input::placeholder,
.light.theme-bw textarea::placeholder {
color: hsl(0, 0%, 65%);
}
.dark.theme-bw .page-header-title {
color: hsl(0, 0%, 95%);
}
.light.theme-bw .page-header-title {
color: hsl(0, 0%, 10%);
}
.dark.theme-bw .stat-card-value {
color: hsl(0, 0%, 95%);
}
.light.theme-bw .stat-card-value {
color: hsl(0, 0%, 10%);
}
.dark.theme-bw .badge {
color: hsl(0, 0%, 80%);
}
.light.theme-bw .badge {
color: hsl(0, 0%, 30%);
}
.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .h-1.w-full {
background: linear-gradient(to right, hsl(0, 0%, 80%), hsl(0, 0%, 95%), hsl(0, 0%, 80%)) !important;
}
.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .h-1.w-full {
background: linear-gradient(to right, hsl(0, 0%, 50%), hsl(0, 0%, 70%), hsl(0, 0%, 50%)) !important;
}
.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .rounded-xl.shrink-0 {
background: hsla(0, 0%, 100%, 0.08) !important;
}
.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .rounded-xl.shrink-0 {
background: hsla(0, 0%, 50%, 0.08) !important;
}
.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .rounded-xl.shrink-0 svg {
color: hsl(0, 0%, 95%) !important;
}
.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .rounded-xl.shrink-0 svg {
color: hsl(0, 0%, 70%) !important;
}
.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .absolute.bottom-0.h-1 {
background: linear-gradient(to right, transparent, hsla(0, 0%, 100%, 0.2), transparent) !important;
}
.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .absolute.bottom-0.h-1 {
background: linear-gradient(to right, transparent, hsla(0, 0%, 50%, 0.15), transparent) !important;
}
.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 .rounded-full.bg-gradient-to-r {
background: linear-gradient(to right, hsl(0, 0%, 80%), hsl(0, 0%, 50%)) !important;
}
.light.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .h-1.w-full {
background: linear-gradient(to right, hsl(0, 0%, 30%), hsl(0, 0%, 50%), hsl(0, 0%, 30%)) !important;
}
.light.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .h-1.w-full {
background: linear-gradient(to right, hsl(0, 0%, 50%), hsl(0, 0%, 65%), hsl(0, 0%, 50%)) !important;
}
.dark.theme-bw .growth-word {
-webkit-text-fill-color: hsl(0, 0%, 70%) !important;
color: hsl(0, 0%, 70%) !important;
background: none !important;
}
.light.theme-bw .growth-word {
-webkit-text-fill-color: hsl(0, 0%, 40%) !important;
color: hsl(0, 0%, 40%) !important;
background: none !important;
}
/* ============================================================================
Client Portal Overrides — Background for portal pages
============================================================================ */
.dark.theme-bw .min-h-screen.bg-background {
background: transparent !important;
}
.dark.theme-bw aside.bg-card.border-r.border-border {
background: hsl(0, 0%, 6%) !important;
border-right-color: hsl(0, 0%, 18%) !important;
}
.dark.theme-bw aside .text-muted-foreground {
color: hsl(0, 0%, 50%) !important;
}
.dark.theme-bw aside button:hover {
background: hsla(0, 0%, 100%, 0.08) !important;
color: hsl(0, 0%, 90%) !important;
}
.dark.theme-bw aside .bg-primary\/10.text-primary {
background: hsl(0, 0%, 50%) !important;
color: hsl(0, 0%, 100%) !important;
box-shadow: 0 0 10px hsla(0, 0%, 50%, 0.3), 0 0 20px hsla(0, 0%, 50%, 0.1);
border-color: hsl(0, 0%, 50%) !important;
}
.dark.theme-bw aside .bg-primary\/10.text-primary svg {
color: hsl(0, 0%, 100%) !important;
}
.dark.theme-bw header.bg-card\/80 {
background: hsl(0, 0%, 6%) !important;
border-bottom-color: hsl(0, 0%, 18%) !important;
}
.dark.theme-bw .bg-card {
background: hsla(0, 0%, 7%, 0.65) !important;
backdrop-filter: blur(10px) !important;
border-color: hsla(0, 0%, 20%, 0.35) !important;
}
.dark.theme-bw .border-border {
border-color: hsl(0, 0%, 15%) !important;
}
.dark.theme-bw .bg-muted {
background: hsl(0, 0%, 9%) !important;
}
.dark.theme-bw .bg-primary {
background: hsl(0, 0%, 50%) !important;
box-shadow: 0 0 10px hsla(0, 0%, 50%, 0.2);
}
.dark.theme-bw .bg-primary:hover {
background: hsl(0, 0%, 60%) !important;
box-shadow: 0 0 15px hsla(0, 0%, 60%, 0.4);
}
/* ============================================================================
Dashboard Chart Overrides — donut chart & leads-per-month bar chart
Overrides SVG presentation attributes (fill, stop-color, flood-color)
Distinguishable greys per segment + glow on hover
============================================================================ */
/* ---- Donut chart: individual segment fills with varied greys ---- */
.dark.theme-bw [fill="url(#chart-grad-0)"] { fill: hsl(0,0%,55%) !important; }
.dark.theme-bw [fill="url(#chart-grad-1)"] { fill: hsl(0,0%,35%) !important; }
.dark.theme-bw [fill="url(#chart-grad-2)"] { fill: hsl(0,0%,65%) !important; }
.dark.theme-bw [fill="url(#chart-grad-3)"] { fill: hsl(0,0%,30%) !important; }
.dark.theme-bw [fill="url(#chart-grad-4)"] { fill: hsl(0,0%,70%) !important; }
.dark.theme-bw [fill="url(#chart-grad-5)"] { fill: hsl(0,0%,40%) !important; }
.light.theme-bw [fill="url(#chart-grad-0)"] { fill: hsl(0,0%,40%) !important; }
.light.theme-bw [fill="url(#chart-grad-1)"] { fill: hsl(0,0%,55%) !important; }
.light.theme-bw [fill="url(#chart-grad-2)"] { fill: hsl(0,0%,30%) !important; }
.light.theme-bw [fill="url(#chart-grad-3)"] { fill: hsl(0,0%,60%) !important; }
.light.theme-bw [fill="url(#chart-grad-4)"] { fill: hsl(0,0%,45%) !important; }
.light.theme-bw [fill="url(#chart-grad-5)"] { fill: hsl(0,0%,50%) !important; }
/* ---- Donut chart: gradient defs stops (match the fills above) ---- */
.dark.theme-bw #chart-grad-0 stop { stop-color: hsl(0,0%,55%) !important; }
.dark.theme-bw #chart-grad-1 stop { stop-color: hsl(0,0%,35%) !important; }
.dark.theme-bw #chart-grad-2 stop { stop-color: hsl(0,0%,65%) !important; }
.dark.theme-bw #chart-grad-3 stop { stop-color: hsl(0,0%,30%) !important; }
.dark.theme-bw #chart-grad-4 stop { stop-color: hsl(0,0%,70%) !important; }
.dark.theme-bw #chart-grad-5 stop { stop-color: hsl(0,0%,40%) !important; }
.light.theme-bw #chart-grad-0 stop { stop-color: hsl(0,0%,40%) !important; }
.light.theme-bw #chart-grad-1 stop { stop-color: hsl(0,0%,55%) !important; }
.light.theme-bw #chart-grad-2 stop { stop-color: hsl(0,0%,30%) !important; }
.light.theme-bw #chart-grad-3 stop { stop-color: hsl(0,0%,60%) !important; }
.light.theme-bw #chart-grad-4 stop { stop-color: hsl(0,0%,45%) !important; }
.light.theme-bw #chart-grad-5 stop { stop-color: hsl(0,0%,50%) !important; }
/* ---- Bar chart: distinguishable fills for two series ---- */
.dark.theme-bw [fill="url(#newLeadsGrad)"] { fill: hsl(0,0%,55%) !important; }
.dark.theme-bw [fill="url(#closedGrad)"] { fill: hsl(0,0%,30%) !important; }
.light.theme-bw [fill="url(#newLeadsGrad)"] { fill: hsl(0,0%,40%) !important; }
.light.theme-bw [fill="url(#closedGrad)"] { fill: hsl(0,0%,55%) !important; }
/* Bar chart: gradient defs stops */
.dark.theme-bw #newLeadsGrad stop { stop-color: hsl(0,0%,55%) !important; }
.dark.theme-bw #closedGrad stop { stop-color: hsl(0,0%,30%) !important; }
.light.theme-bw #newLeadsGrad stop { stop-color: hsl(0,0%,40%) !important; }
.light.theme-bw #closedGrad stop { stop-color: hsl(0,0%,55%) !important; }
/* ---- feDropShadow flood-color override ---- */
.dark.theme-bw feDropShadow { flood-color: hsl(0,0%,50%) !important; flood-opacity: 0.25 !important; }
.light.theme-bw feDropShadow { flood-color: hsl(0,0%,45%) !important; flood-opacity: 0.15 !important; }
/* ---- Hover glow: donut segments + bar rects ---- */
.dark.theme-bw [fill*="chart-grad"]:hover,
.dark.theme-bw [fill="url(#newLeadsGrad)"]:hover,
.dark.theme-bw [fill="url(#closedGrad)"]:hover {
filter: drop-shadow(0 0 14px hsla(0,0%,80%,0.45)) brightness(1.25) !important;
}
.light.theme-bw [fill*="chart-grad"]:hover,
.light.theme-bw [fill="url(#newLeadsGrad)"]:hover,
.light.theme-bw [fill="url(#closedGrad)"]:hover {
filter: drop-shadow(0 0 12px hsla(0,0%,10%,0.25)) brightness(1.15) !important;
}
/* ============================================================================
Avatar PFP Overrides — target SVG data URLs with hardcoded blue (#1d4ed8)
Desaturate + brighten the blue fill to light grey
============================================================================ */
.dark.theme-bw img[src*="1d4ed8"],
.dark.theme-bw img[src*="fill=%231d4ed8"] {
filter: saturate(0%) brightness(1.7) !important;
}
.light.theme-bw img[src*="1d4ed8"],
.light.theme-bw img[src*="fill=%231d4ed8"] {
filter: saturate(0%) brightness(0.6) !important;
}
/* ============================================================================
BW THEME: Force all colored Tailwind utilities to greyscale
Targets both regular classes AND dark: variant classes
Only applies when .theme-bw is active — no source files touched
============================================================================ */
/* ----- Dark mode: bg-{color}-{shade} ----- */
.dark.theme-bw .bg-blue-500, .dark.theme-bw .dark\:bg-blue-500,
.dark.theme-bw .bg-amber-500, .dark.theme-bw .dark\:bg-amber-500,
.dark.theme-bw .bg-purple-500, .dark.theme-bw .dark\:bg-purple-500,
.dark.theme-bw .bg-emerald-500, .dark.theme-bw .dark\:bg-emerald-500,
.dark.theme-bw .bg-red-500, .dark.theme-bw .dark\:bg-red-500,
.dark.theme-bw .bg-orange-500, .dark.theme-bw .dark\:bg-orange-500,
.dark.theme-bw .bg-yellow-500, .dark.theme-bw .dark\:bg-yellow-500,
.dark.theme-bw .bg-violet-500, .dark.theme-bw .dark\:bg-violet-500,
.dark.theme-bw .bg-green-500, .dark.theme-bw .dark\:bg-green-500,
.dark.theme-bw .bg-sky-500, .dark.theme-bw .dark\:bg-sky-500,
.dark.theme-bw .bg-teal-500, .dark.theme-bw .dark\:bg-teal-500,
.dark.theme-bw .bg-indigo-500, .dark.theme-bw .dark\:bg-indigo-500,
.dark.theme-bw .bg-pink-500, .dark.theme-bw .dark\:bg-pink-500 { background-color: hsl(0,0%,50%) !important; }
.dark.theme-bw .bg-blue-600, .dark.theme-bw .dark\:bg-blue-600,
.dark.theme-bw .bg-amber-600, .dark.theme-bw .dark\:bg-amber-600,
.dark.theme-bw .bg-emerald-600, .dark.theme-bw .dark\:bg-emerald-600,
.dark.theme-bw .bg-red-600, .dark.theme-bw .dark\:bg-red-600,
.dark.theme-bw .bg-green-600, .dark.theme-bw .dark\:bg-green-600,
.dark.theme-bw .bg-orange-600, .dark.theme-bw .dark\:bg-orange-600,
.dark.theme-bw .bg-yellow-600, .dark.theme-bw .dark\:bg-yellow-600,
.dark.theme-bw .bg-violet-600, .dark.theme-bw .dark\:bg-violet-600 { background-color: hsl(0,0%,35%) !important; }
.dark.theme-bw .bg-blue-400, .dark.theme-bw .dark\:bg-blue-400,
.dark.theme-bw .bg-red-400, .dark.theme-bw .dark\:bg-red-400,
.dark.theme-bw .bg-emerald-400, .dark.theme-bw .dark\:bg-emerald-400,
.dark.theme-bw .bg-amber-400, .dark.theme-bw .dark\:bg-amber-400,
.dark.theme-bw .bg-sky-400, .dark.theme-bw .dark\:bg-sky-400,
.dark.theme-bw .bg-green-400, .dark.theme-bw .dark\:bg-green-400,
.dark.theme-bw .bg-purple-400, .dark.theme-bw .dark\:bg-purple-400,
.dark.theme-bw .bg-orange-400, .dark.theme-bw .dark\:bg-orange-400 { background-color: hsl(0,0%,60%) !important; }
.dark.theme-bw .bg-red-50, .dark.theme-bw .dark\:bg-red-50,
.dark.theme-bw .bg-orange-50, .dark.theme-bw .dark\:bg-orange-50,
.dark.theme-bw .bg-yellow-50, .dark.theme-bw .dark\:bg-yellow-50,
.dark.theme-bw .bg-emerald-50, .dark.theme-bw .dark\:bg-emerald-50,
.dark.theme-bw .bg-blue-50, .dark.theme-bw .dark\:bg-blue-50,
.dark.theme-bw .bg-amber-50, .dark.theme-bw .dark\:bg-amber-50,
.dark.theme-bw .bg-violet-50, .dark.theme-bw .dark\:bg-violet-50,
.dark.theme-bw .bg-green-50, .dark.theme-bw .dark\:bg-green-50 { background-color: hsl(0,0%,95%) !important; }
.dark.theme-bw .bg-red-100, .dark.theme-bw .dark\:bg-red-100,
.dark.theme-bw .bg-orange-100, .dark.theme-bw .dark\:bg-orange-100,
.dark.theme-bw .bg-yellow-100, .dark.theme-bw .dark\:bg-yellow-100,
.dark.theme-bw .bg-emerald-100, .dark.theme-bw .dark\:bg-emerald-100,
.dark.theme-bw .bg-blue-100, .dark.theme-bw .dark\:bg-blue-100,
.dark.theme-bw .bg-amber-100, .dark.theme-bw .dark\:bg-amber-100,
.dark.theme-bw .bg-violet-100, .dark.theme-bw .dark\:bg-violet-100,
.dark.theme-bw .bg-green-100, .dark.theme-bw .dark\:bg-green-100 { background-color: hsl(0,0%,88%) !important; }
.dark.theme-bw .bg-blue-500\/10, .dark.theme-bw .dark\:bg-blue-500\/10,
.dark.theme-bw .bg-amber-500\/10, .dark.theme-bw .dark\:bg-amber-500\/10,
.dark.theme-bw .bg-purple-500\/10, .dark.theme-bw .dark\:bg-purple-500\/10,
.dark.theme-bw .bg-emerald-500\/10, .dark.theme-bw .dark\:bg-emerald-500\/10,
.dark.theme-bw .bg-red-500\/10, .dark.theme-bw .dark\:bg-red-500\/10,
.dark.theme-bw .bg-orange-500\/10, .dark.theme-bw .dark\:bg-orange-500\/10,
.dark.theme-bw .bg-yellow-500\/10, .dark.theme-bw .dark\:bg-yellow-500\/10,
.dark.theme-bw .bg-violet-500\/10, .dark.theme-bw .dark\:bg-violet-500\/10,
.dark.theme-bw .bg-green-500\/10, .dark.theme-bw .dark\:bg-green-500\/10,
.dark.theme-bw .bg-sky-500\/10, .dark.theme-bw .dark\:bg-sky-500\/10 { background-color: hsla(0,0%,50%,0.1) !important; }
.dark.theme-bw .bg-blue-500\/20, .dark.theme-bw .dark\:bg-blue-500\/20,
.dark.theme-bw .bg-amber-500\/20, .dark.theme-bw .dark\:bg-amber-500\/20,
.dark.theme-bw .bg-purple-500\/20, .dark.theme-bw .dark\:bg-purple-500\/20,
.dark.theme-bw .bg-emerald-500\/20, .dark.theme-bw .dark\:bg-emerald-500\/20,
.dark.theme-bw .bg-red-500\/20, .dark.theme-bw .dark\:bg-red-500\/20,
.dark.theme-bw .bg-violet-500\/20, .dark.theme-bw .dark\:bg-violet-500\/20 { background-color: hsla(0,0%,50%,0.2) !important; }
.dark.theme-bw .bg-blue-500\/5, .dark.theme-bw .dark\:bg-blue-500\/5,
.dark.theme-bw .bg-amber-500\/5, .dark.theme-bw .dark\:bg-amber-500\/5,
.dark.theme-bw .bg-purple-500\/5, .dark.theme-bw .dark\:bg-purple-500\/5,
.dark.theme-bw .bg-emerald-500\/5, .dark.theme-bw .dark\:bg-emerald-500\/5,
.dark.theme-bw .bg-red-500\/5, .dark.theme-bw .dark\:bg-red-500\/5,
.dark.theme-bw .bg-violet-500\/5, .dark.theme-bw .dark\:bg-violet-500\/5 { background-color: hsla(0,0%,50%,0.05) !important; }
/* ----- Dark mode: text-{color}-{shade} (regular AND dark: variant) ----- */
.dark.theme-bw .text-blue-500, .dark.theme-bw .dark\:text-blue-500,
.dark.theme-bw .text-amber-500, .dark.theme-bw .dark\:text-amber-500,
.dark.theme-bw .text-purple-500, .dark.theme-bw .dark\:text-purple-500,
.dark.theme-bw .text-emerald-500, .dark.theme-bw .dark\:text-emerald-500,
.dark.theme-bw .text-red-500, .dark.theme-bw .dark\:text-red-500,
.dark.theme-bw .text-orange-500, .dark.theme-bw .dark\:text-orange-500,
.dark.theme-bw .text-yellow-500, .dark.theme-bw .dark\:text-yellow-500,
.dark.theme-bw .text-violet-500, .dark.theme-bw .dark\:text-violet-500,
.dark.theme-bw .text-green-500, .dark.theme-bw .dark\:text-green-500,
.dark.theme-bw .text-sky-500, .dark.theme-bw .dark\:text-sky-500,
.dark.theme-bw .text-teal-500, .dark.theme-bw .dark\:text-teal-500,
.dark.theme-bw .text-indigo-500, .dark.theme-bw .dark\:text-indigo-500,
.dark.theme-bw .text-pink-500, .dark.theme-bw .dark\:text-pink-500,
.dark.theme-bw .text-rose-500, .dark.theme-bw .dark\:text-rose-500 { color: hsl(0,0%,50%) !important; }
.dark.theme-bw .text-blue-600, .dark.theme-bw .dark\:text-blue-600,
.dark.theme-bw .text-amber-600, .dark.theme-bw .dark\:text-amber-600,
.dark.theme-bw .text-emerald-600, .dark.theme-bw .dark\:text-emerald-600,
.dark.theme-bw .text-red-600, .dark.theme-bw .dark\:text-red-600,
.dark.theme-bw .text-green-600, .dark.theme-bw .dark\:text-green-600,
.dark.theme-bw .text-orange-600, .dark.theme-bw .dark\:text-orange-600,
.dark.theme-bw .text-yellow-600, .dark.theme-bw .dark\:text-yellow-600,
.dark.theme-bw .text-violet-600, .dark.theme-bw .dark\:text-violet-600 { color: hsl(0,0%,35%) !important; }
.dark.theme-bw .text-blue-400, .dark.theme-bw .dark\:text-blue-400,
.dark.theme-bw .text-red-400, .dark.theme-bw .dark\:text-red-400,
.dark.theme-bw .text-emerald-400, .dark.theme-bw .dark\:text-emerald-400,
.dark.theme-bw .text-amber-400, .dark.theme-bw .dark\:text-amber-400,
.dark.theme-bw .text-sky-400, .dark.theme-bw .dark\:text-sky-400,
.dark.theme-bw .text-green-400, .dark.theme-bw .dark\:text-green-400,
.dark.theme-bw .text-rose-400, .dark.theme-bw .dark\:text-rose-400,
.dark.theme-bw .text-orange-400, .dark.theme-bw .dark\:text-orange-400,
.dark.theme-bw .text-purple-400, .dark.theme-bw .dark\:text-purple-400 { color: hsl(0,0%,60%) !important; }
.dark.theme-bw .text-blue-700, .dark.theme-bw .dark\:text-blue-700,
.dark.theme-bw .text-amber-700, .dark.theme-bw .dark\:text-amber-700,
.dark.theme-bw .text-emerald-700, .dark.theme-bw .dark\:text-emerald-700,
.dark.theme-bw .text-red-700, .dark.theme-bw .dark\:text-red-700,
.dark.theme-bw .text-orange-700, .dark.theme-bw .dark\:text-orange-700,
.dark.theme-bw .text-yellow-700, .dark.theme-bw .dark\:text-yellow-700,
.dark.theme-bw .text-violet-700, .dark.theme-bw .dark\:text-violet-700 { color: hsl(0,0%,25%) !important; }
.dark.theme-bw .text-emerald-600\/60, .dark.theme-bw .dark\:text-emerald-600\/60 { color: hsla(0,0%,35%,0.6) !important; }
.dark.theme-bw .text-red-500\/40, .dark.theme-bw .dark\:text-red-500\/40 { color: hsla(0,0%,50%,0.4) !important; }
/* ----- Dark mode: border-{color}-{shade} ----- */
.dark.theme-bw .border-blue-500, .dark.theme-bw .dark\:border-blue-500,
.dark.theme-bw .border-amber-500, .dark.theme-bw .dark\:border-amber-500,
.dark.theme-bw .border-purple-500, .dark.theme-bw .dark\:border-purple-500,
.dark.theme-bw .border-emerald-500, .dark.theme-bw .dark\:border-emerald-500,
.dark.theme-bw .border-red-500, .dark.theme-bw .dark\:border-red-500,
.dark.theme-bw .border-orange-500, .dark.theme-bw .dark\:border-orange-500,
.dark.theme-bw .border-yellow-500, .dark.theme-bw .dark\:border-yellow-500,
.dark.theme-bw .border-violet-500, .dark.theme-bw .dark\:border-violet-500 { border-color: hsl(0,0%,50%) !important; }
.dark.theme-bw .border-blue-500\/20, .dark.theme-bw .dark\:border-blue-500\/20,
.dark.theme-bw .border-amber-500\/20, .dark.theme-bw .dark\:border-amber-500\/20,
.dark.theme-bw .border-purple-500\/20, .dark.theme-bw .dark\:border-purple-500\/20,
.dark.theme-bw .border-emerald-500\/20, .dark.theme-bw .dark\:border-emerald-500\/20,
.dark.theme-bw .border-red-500\/20, .dark.theme-bw .dark\:border-red-500\/20 { border-color: hsla(0,0%,50%,0.2) !important; }
.dark.theme-bw .border-red-200, .dark.theme-bw .dark\:border-red-200,
.dark.theme-bw .border-orange-200, .dark.theme-bw .dark\:border-orange-200,
.dark.theme-bw .border-yellow-200, .dark.theme-bw .dark\:border-yellow-200,
.dark.theme-bw .border-emerald-200, .dark.theme-bw .dark\:border-emerald-200,
.dark.theme-bw .border-blue-200, .dark.theme-bw .dark\:border-blue-200,
.dark.theme-bw .border-violet-200, .dark.theme-bw .dark\:border-violet-200 { border-color: hsl(0,0%,80%) !important; }
.dark.theme-bw .border-red-300, .dark.theme-bw .dark\:border-red-300,
.dark.theme-bw .border-orange-300, .dark.theme-bw .dark\:border-orange-300,
.dark.theme-bw .border-yellow-300, .dark.theme-bw .dark\:border-yellow-300,
.dark.theme-bw .border-emerald-300, .dark.theme-bw .dark\:border-emerald-300,
.dark.theme-bw .border-blue-300, .dark.theme-bw .dark\:border-blue-300,
.dark.theme-bw .border-violet-300, .dark.theme-bw .dark\:border-violet-300 { border-color: hsl(0,0%,70%) !important; }
.dark.theme-bw .ring-blue-500\/20, .dark.theme-bw .dark\:ring-blue-500\/20,
.dark.theme-bw .ring-amber-500\/20, .dark.theme-bw .dark\:ring-amber-500\/20,
.dark.theme-bw .ring-emerald-500\/20, .dark.theme-bw .dark\:ring-emerald-500\/20,
.dark.theme-bw .ring-red-500\/20, .dark.theme-bw .dark\:ring-red-500\/20,
.dark.theme-bw .ring-purple-500\/20, .dark.theme-bw .dark\:ring-purple-500\/20 { --tw-ring-color: hsla(0,0%,50%,0.2) !important; }
/* ----- Dark mode: Gradient direction classes ----- */
.dark.theme-bw .from-blue-500, .dark.theme-bw .dark\:from-blue-500,
.dark.theme-bw .from-amber-500, .dark.theme-bw .dark\:from-amber-500,
.dark.theme-bw .from-purple-500, .dark.theme-bw .dark\:from-purple-500,
.dark.theme-bw .from-emerald-500, .dark.theme-bw .dark\:from-emerald-500,
.dark.theme-bw .from-red-500, .dark.theme-bw .dark\:from-red-500,
.dark.theme-bw .from-orange-500, .dark.theme-bw .dark\:from-orange-500,
.dark.theme-bw .from-violet-500, .dark.theme-bw .dark\:from-violet-500,
.dark.theme-bw .from-green-500, .dark.theme-bw .dark\:from-green-500,
.dark.theme-bw .from-pink-500, .dark.theme-bw .dark\:from-pink-500,
.dark.theme-bw .from-cyan-400, .dark.theme-bw .dark\:from-cyan-400,
.dark.theme-bw .from-fuchsia-500, .dark.theme-bw .dark\:from-fuchsia-500 { --tw-gradient-from: hsl(0,0%,50%) !important; }
.dark.theme-bw .to-blue-500, .dark.theme-bw .dark\:to-blue-500,
.dark.theme-bw .to-amber-500, .dark.theme-bw .dark\:to-amber-500,
.dark.theme-bw .to-purple-500, .dark.theme-bw .dark\:to-purple-500,
.dark.theme-bw .to-emerald-500, .dark.theme-bw .dark\:to-emerald-500,
.dark.theme-bw .to-red-500, .dark.theme-bw .dark\:to-red-500,
.dark.theme-bw .to-orange-500, .dark.theme-bw .dark\:to-orange-500,
.dark.theme-bw .to-green-500, .dark.theme-bw .dark\:to-green-500,
.dark.theme-bw .to-cyan-400, .dark.theme-bw .dark\:to-cyan-400 { --tw-gradient-to: hsl(0,0%,50%) !important; }
.dark.theme-bw .from-blue-500\/5, .dark.theme-bw .dark\:from-blue-500\/5,
.dark.theme-bw .from-amber-500\/5, .dark.theme-bw .dark\:from-amber-500\/5,
.dark.theme-bw .from-purple-500\/5, .dark.theme-bw .dark\:from-purple-500\/5,
.dark.theme-bw .from-emerald-500\/5, .dark.theme-bw .dark\:from-emerald-500\/5,
.dark.theme-bw .from-red-500\/5, .dark.theme-bw .dark\:from-red-500\/5 { --tw-gradient-from: hsla(0,0%,50%,0.05) !important; }
.dark.theme-bw .to-violet-500\/\[0\.02\], .dark.theme-bw .dark\:to-violet-500\/\[0\.02\],
.dark.theme-bw .to-amber-500\/\[0\.02\], .dark.theme-bw .dark\:to-amber-500\/\[0\.02\] { --tw-gradient-to: hsla(0,0%,50%,0.02) !important; }
.dark.theme-bw .from-violet-500\/5, .dark.theme-bw .dark\:from-violet-500\/5,
.dark.theme-bw .from-amber-500\/5, .dark.theme-bw .dark\:from-amber-500\/5 { --tw-gradient-from: hsla(0,0%,50%,0.05) !important; }
/* ----- Dark mode: Inline arbitrary hex colors (stat-card, voice-call, etc) ----- */
.dark.theme-bw .text-\[#C84B4B\], .dark.theme-bw .dark\:text-\[\#C84B4B\],
.dark.theme-bw .text-\[\#FF1111\], .dark.theme-bw .dark\:text-\[\#FF1111\] { color: hsl(0,0%,60%) !important; }
.dark.theme-bw .text-\[#5A8FC4\], .dark.theme-bw .dark\:text-\[\#5A8FC4\],
.dark.theme-bw .text-\[\#1144FF\], .dark.theme-bw .dark\:text-\[\#1144FF\] { color: hsl(0,0%,50%) !important; }
.dark.theme-bw .text-\[#2D3020\], .dark.theme-bw .dark\:text-\[\#2D3020\] { color: hsl(0,0%,20%) !important; }
.dark.theme-bw .text-\[#8A9078\], .dark.theme-bw .dark\:text-\[\#8A9078\] { color: hsl(0,0%,55%) !important; }
.dark.theme-bw .bg-\[#C84B4B\]\/10, .dark.theme-bw .dark\:bg-\[\#C84B4B\]\/10,
.dark.theme-bw .bg-\[#5A8FC4\]\/10, .dark.theme-bw .dark\:bg-\[\#5A8FC4\]\/10 { background-color: hsla(0,0%,50%,0.1) !important; }
.dark.theme-bw .from-\[#C84B4B\], .dark.theme-bw .dark\:from-\[\#C84B4B\],
.dark.theme-bw .via-\[#C84B4B\], .dark.theme-bw .dark\:via-\[\#C84B4B\],
.dark.theme-bw .to-\[#C84B4B\], .dark.theme-bw .dark\:to-\[\#C84B4B\] { --tw-gradient-from: hsl(0,0%,50%) !important; }
.dark.theme-bw .from-\[#5A8FC4\], .dark.theme-bw .dark\:from-\[\#5A8FC4\],
.dark.theme-bw .via-\[#5A8FC4\], .dark.theme-bw .dark\:via-\[\#5A8FC4\],
.dark.theme-bw .to-\[#5A8FC4\], .dark.theme-bw .dark\:to-\[\#5A8FC4\] { --tw-gradient-from: hsl(0,0%,50%) !important; }
/* ----- Dark mode: SVG stroke/fill (app-shell, etc) ----- */
.dark.theme-bw [stroke="#CC0000"] { stroke: hsl(0,0%,50%) !important; }
.dark.theme-bw [stroke="#0033CC"] { stroke: hsl(0,0%,50%) !important; }
.dark.theme-bw [fill="#2D3020"] { fill: hsl(0,0%,20%) !important; }
.dark.theme-bw [fill="#8A9078"] { fill: hsl(0,0%,55%) !important; }
/* ----- Dark mode: Hover states ----- */
.dark.theme-bw .hover\:bg-sky-400\/20:hover { background-color: hsla(0,0%,50%,0.2) !important; }
.dark.theme-bw .hover\:bg-emerald-700:hover { background-color: hsl(0,0%,30%) !important; }
/* ----- Light mode overrides ----- */
.light.theme-bw .bg-blue-500, .light.theme-bw .dark\:bg-blue-500,
.light.theme-bw .bg-amber-500, .light.theme-bw .dark\:bg-amber-500,
.light.theme-bw .bg-purple-500, .light.theme-bw .dark\:bg-purple-500,
.light.theme-bw .bg-emerald-500, .light.theme-bw .dark\:bg-emerald-500,
.light.theme-bw .bg-red-500, .light.theme-bw .dark\:bg-red-500,
.light.theme-bw .bg-orange-500, .light.theme-bw .dark\:bg-orange-500,
.light.theme-bw .bg-yellow-500, .light.theme-bw .dark\:bg-yellow-500,
.light.theme-bw .bg-violet-500, .light.theme-bw .dark\:bg-violet-500,
.light.theme-bw .bg-green-500, .light.theme-bw .dark\:bg-green-500,
.light.theme-bw .bg-sky-500, .light.theme-bw .dark\:bg-sky-500 { background-color: hsl(0,0%,50%) !important; }
.light.theme-bw .text-blue-500, .light.theme-bw .dark\:text-blue-500,
.light.theme-bw .text-amber-500, .light.theme-bw .dark\:text-amber-500,
.light.theme-bw .text-purple-500, .light.theme-bw .dark\:text-purple-500,
.light.theme-bw .text-emerald-500, .light.theme-bw .dark\:text-emerald-500,
.light.theme-bw .text-red-500, .light.theme-bw .dark\:text-red-500,
.light.theme-bw .text-orange-500, .light.theme-bw .dark\:text-orange-500,
.light.theme-bw .text-yellow-500, .light.theme-bw .dark\:text-yellow-500,
.light.theme-bw .text-violet-500, .light.theme-bw .dark\:text-violet-500,
.light.theme-bw .text-sky-400, .light.theme-bw .dark\:text-sky-400,
.light.theme-bw .text-rose-500, .light.theme-bw .dark\:text-rose-500,
.light.theme-bw .text-green-500, .light.theme-bw .dark\:text-green-500 { color: hsl(0,0%,40%) !important; }
.light.theme-bw .bg-blue-500\/10, .light.theme-bw .dark\:bg-blue-500\/10,
.light.theme-bw .bg-amber-500\/10, .light.theme-bw .dark\:bg-amber-500\/10,
.light.theme-bw .bg-purple-500\/10, .light.theme-bw .dark\:bg-purple-500\/10,
.light.theme-bw .bg-emerald-500\/10, .light.theme-bw .dark\:bg-emerald-500\/10,
.light.theme-bw .bg-red-500\/10, .light.theme-bw .dark\:bg-red-500\/10 { background-color: hsla(0,0%,50%,0.1) !important; }