.dark.theme-bw { --background: 0 0% 4%; --foreground: 0 0% 95%; --card: 0 0% 8%; --card-foreground: 0 0% 95%; --popover: 0 0% 8%; --popover-foreground: 0 0% 95%; --primary: 0 0% 95%; --primary-foreground: 0 0% 0%; --secondary: 0 0% 50%; --secondary-foreground: 0 0% 100%; --muted: 0 0% 12%; --muted-foreground: 0 0% 55%; --accent: 0 0% 95%; --accent-foreground: 0 0% 0%; --destructive: 0 70% 50%; --destructive-foreground: 210 40% 98%; --border: 0 0% 20%; --input: 0 0% 20%; --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% 95%; --sidebar-accent-foreground: 0 0% 0%; --sidebar-border: 0 0% 15%; --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% 40%; --secondary-foreground: 0 0% 100%; --muted: 0 0% 90%; --muted-foreground: 0 0% 45%; --accent: 0 0% 10%; --accent-foreground: 0 0% 100%; --destructive: 0 80% 50%; --destructive-foreground: 0 0% 100%; --border: 0 0% 82%; --input: 0 0% 82%; --ring: 0 0% 50%; --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% 10%; --sidebar-accent-foreground: 0 0% 100%; --sidebar-border: 0 0% 82%; --sidebar-ring: 0 0% 50%; } .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, .light.theme-bw .growth-word { -webkit-text-fill-color: #1BB0CE !important; color: #1BB0CE !important; background: none !important; } /* ============================================================================ Client Portal Overrides — Background for portal pages ============================================================================ */ /* Make the outer portal container transparent so body::before background shows */ .dark.theme-bw .min-h-screen.bg-background { background: transparent !important; } /* Portal sidebar — dark glass */ .dark.theme-bw aside.bg-card.border-r.border-border { background: hsl(240, 15%, 3%) !important; border-right-color: hsl(270, 25%, 10%) !important; } /* Portal sidebar nav items — muted text */ .dark.theme-bw aside .text-muted-foreground { color: hsl(240, 8%, 50%) !important; } .dark.theme-bw aside button:hover { background: hsla(330, 100%, 50%, 0.08) !important; color: hsl(0, 0%, 90%) !important; } /* Portal sidebar active nav item */ .dark.theme-bw aside .bg-primary\/10.text-primary { background: hsl(330, 100%, 50%) !important; color: hsl(0, 0%, 100%) !important; box-shadow: 0 0 10px rgba(255, 0, 127, 0.3), 0 0 20px rgba(255, 0, 127, 0.1); border-color: hsl(330, 100%, 50%) !important; } .dark.theme-bw aside .bg-primary\/10.text-primary svg { color: hsl(0, 0%, 100%) !important; } /* Portal header — dark glass */ .dark.theme-bw header.bg-card\/80 { background: hsl(240, 15%, 3%) !important; border-bottom-color: hsl(270, 25%, 10%) !important; } /* Portal card backgrounds — semi-transparent glass */ .dark.theme-bw .bg-card { background: hsla(240, 15%, 7%, 0.65) !important; backdrop-filter: blur(10px) !important; border-color: hsla(270, 30%, 20%, 0.35) !important; } /* Portal borders */ .dark.theme-bw .border-border { border-color: hsl(270, 25%, 12%) !important; } /* Portal input fields */ .dark.theme-bw .bg-muted { background: hsl(240, 12%, 9%) !important; } /* Portal primary buttons */ .dark.theme-bw .bg-primary { background: hsl(330, 100%, 50%) !important; box-shadow: 0 0 10px rgba(255, 0, 127, 0.2); } .dark.theme-bw .bg-primary:hover { background: hsl(330, 100%, 55%) !important; box-shadow: 0 0 15px rgba(255, 0, 127, 0.4); }